
RedisGraph: A High Performance In-Memory Graph Database as a Redis Module - wll
http://redisgraph.io/design/
======
antirez
A week ago while in Tel Aviv I talked with my colleague which is the lead
developer of RedisGraph. He will be in San Francisco at Redis Conf with us and
will release exiting news about RedisGraph, currently the development is very
active.

------
shaolincoder
Graph on Redis is cool and I get that hexastore is the way to go. Its very
different from the Neo4J like graphs where the nodes and edges have
properties. Hexastore is more based on the W3C RDF model. What confuses me is
then why not have SPARQL as the query language?

~~~
swilly2
Although RedisGraph current version uses the concept of a Hexastore to
represent the Graph I'm not sure this is the best way to go both memory (X6)
and CPUwise (when traversing the graph).

That said RedisGraph does supports both nodes and edges properties as these
are not stored within the Hexastore but on the actual entity object.

The new version of RedisGraph which will be presented at RedisConf2018 will
completely replace the Hexastore with a new data structure which is better
suitable in terms of both memory and cpu.

~~~
wll
That’s great to hear! I see RedisConf is at April’s end. Would it be possible
to get early access? RedisGraph is a crucial component of a system I am
designing.

~~~
swilly2
Well, RedisGraph is an open source project, you can browse its repository at
[https://github.com/RedisLabsModules/redis-
graph](https://github.com/RedisLabsModules/redis-graph)

Although the work which will be presented at Redis Conf has yet to be
published.

~~~
wll
I was indeed wondering about the upcoming release.

------
Belphemur
This is great !

I'm curious how does it perform in comparison of neo4j. Especially in memory
usage.

~~~
namibj
Regarding graph databases: does anyone have specific recommendations regarding
something suitable to hold 2-digit TB of graph data, and allow many queries
regarding how datapoints that come up are connected to some areas of interest,
through the big knowledge graph[0]? I'm looking into doing some prediction
work based on it, and have not found any suitable data store so far, which
would work well with it, due to the size and budged restraints limiting
storage to NVMe modules, instead of DRAM. Any help finding a suitable
datastore would be greatly appreciated.

[0]: [http://data.gdeltproject.org/documentation/GDELT-
Global_Know...](http://data.gdeltproject.org/documentation/GDELT-
Global_Knowledge_Graph_Codebook-V2.1.pdf)
[https://blog.gdeltproject.org/gdelt-2-0-our-global-world-
in-...](https://blog.gdeltproject.org/gdelt-2-0-our-global-world-in-realtime/)

~~~
kawera
Have you checked [https://github.com/dgraph-
io/dgraph](https://github.com/dgraph-io/dgraph) ?

~~~
namibj
Thank you for the suggestion, this seems to be exactly what I needed. It seems
that the new-ness of it prevented me from finding it earlier.

Edit: I just read some more, and it seem like this is a graph-native "brother"
of cockroachdb. Which was the one I previously cosndidered, until learning of
the inadequate down-pushing ability of graph queries, which would increase
network needs a lot. Let me know if you want me to try and notify you once
there are benchmarks or production tests successfully completed.

~~~
porker
Dgraph is very, very immature. I'd monitor their forum for a bit before
deciding whether to use - you quickly get a good feel for the issues and raw
edges: [https://discuss.dgraph.io/](https://discuss.dgraph.io/)

------
deadwisdom
Oh man. This is my idea of nirvana. Basically done with any other data-store
except maybe for full-text search.

~~~
ahtu123
Memory storage is fun but there's a very hard max limit on how much data you
can have. For many use cases with constant storage it's awesome though.

~~~
ricardobeat
How much data do you have? You can get 24TB RAM on a server these days.

~~~
jazoom
That sounds extremely expensive

~~~
eat_veggies
They're also really high latency, unless ridiculous-amounts-of-ram server
technology has gotten better in the past few years.

Here's one I found that supports up to 48 TB:

[https://www.hpe.com/us/en/product-
catalog/servers/integrity-...](https://www.hpe.com/us/en/product-
catalog/servers/integrity-servers/pip.hpe-integrity-
mc990-x-server.1008798952.html)

They don't include a price, so I'd assume it's in the low millions or high six
figures.

~~~
alexforster
The latency doesn't sound that bad. It's 200ns to access memory on another
local NUMA node, and 500ns to access memory on another machine using NUMAlink.

Fascinating tech. I had no idea this could be done with Xeons.

------
kuwze
I believe SAP has had this for a while[0] (but they are columnar while Redis
is key-value).

[0]: [http://www.ziti.uni-
heidelberg.de/ziti/uploads/ce_group/2015...](http://www.ziti.uni-
heidelberg.de/ziti/uploads/ce_group/2015-PELGA.pdf)

~~~
godelmachine
SAP HANA is a full fledged in memory computing DB.

------
antpls
Looks good! Two questions come to my mind :

\- Is it possible to embed RedisGraph inside an Android application ?

\- Given it is memory only, is it possible to "dump" the graph to local
storage then restore it to memory later ?

Another question, more general : Given an X-only application (X being memory
or disk), it is possible to emulate the API on top on the other, for example
filesystem-in-memory and memory-on-disk (basically, swap I guess). Would you
rather build an application using exclusively a Filesystem API, or exclusively
a Memory-oriented API ?

Best Regards

~~~
swilly2
Can RedisGraph be embedded inside an Android application? I don't have much
experience developing applications for Android but it mostly comes down to the
underline architecture you're aiming for, although Redis 4.0 can run on ARM,
RedisGraph currently can't as it access unaligned memory.

But incase that's resolved or in the case of Intel CPU you'll have to embed a
binary executable within your Android application, i'm pretty sure that's
possible.

With regard to your second question, I think this a personal preference
question, as I've been dealing mostly with in-memory applications for the past
couple of years I'll prefer a memory oriented API.

------
jazoom
>RediSearch has a distributed cluster version that can scale to billions of
documents and hundreds of servers. However, it is only available as part of
Redis Labs Enterprise.

------
emehrkay
This is really cool. I wrote something similar with Python (it was slow ha) as
an exercise to learn Redis a few years back. I used Gremlin/Groovy as an
inspiration for the query lang, not Cypher as this project does.
[https://github.com/emehrkay/rgp](https://github.com/emehrkay/rgp)

------
weyland108
Would this work if I wanted to store the graph forever we generally use redis
as memcache to store data with expectation that it will gone at any point in
time.

~~~
swilly2
This is a wrong misconception as Redis data can be persistent
[https://redis.io/topics/persistence](https://redis.io/topics/persistence)

Modules extending Redis with new capabilities and data types can and probably
should use Redis persistency.

