Building a Graph Centric Platform on Ignite
Graphs are everywhere but they're notoriously tricky to work with and scale in intuitive ways. Facebook's GraphQL has gained momentum as a means of exploring Graph like data.
In this talk, we'll explore how Hypi's trivialised graphs using GraphQL for simple API definitions, exploiting object relationships to implicitly define edges/relations.
GraphQL is simple to start with but unfortunately isn't able to fully take advantage of Hypi's underlying graph store (ported from C++ to Java). So this talk will introduce how Hypi combines GraphQL's directives to go beyond simple queries and define fully fledged graph computations with JavaScript or Java "serverless" workloads enabling computation of any traditional graph algorithms as well as new or custom ones.
The talk will touch on some of the underlying category theory that forms the basis of the underlying graph work and bring it all together by demonstrating how Hypi enables the acceleration of development lifecycles turning 6 month projects into 6 week ones!
Some notable things that will be covered include:
1. Hypi's query language for fulltext search support and how this is achieved with lucene as enabled by Ignite
2. Custom Ignite CacheStore to provide pluggable backends with defaults for RocksDB and Lucene
3. Custom Ignite affinity function to perform dynamic routing with rendezvous hashing including support for attribute based routes. This allows keys to be dynamically mapped based on node attributes e.g. region, memory, gpu availability etc
The talk will end with a brief discussion on the remaining work that is still to be ported from C++ which includes Gremlin support, a Haskell DSL, use of FMIndex for compact and fast edge traversals and more.