Memgraph
TL;DR
Performant, excellent documentation, easy to deploy, Neo4j compatible (both queries & client drivers) & even supports custom functions with Python, along with C/C++ & Rust!
Getting Started
Fire up console: curl -sSf "https://install.memgraph.com" | sh
Things can screw up...
- in my case port 3000 was in use, web UI frontend won't start
- Bring it down with
docker-compose down
within the~/memgraph-platform
- Edit
docker-compose.yml
, change3000:3000
to3030:3000
or whatever not used - Run
docker-compose up -d
, everything should work
Well Designed Onboarding Experience
I have tinkered with Neo4J, OrientDB, FalkorDB, DGraph... but I like this the most so far because...
Conforms to good UX principles from Prof Shneiderman's Visual Information Seeking Mantra:
Overview (first) > Zoom & Filter > Details on demand
In this case, it didn't just load some arbitrary data & leave the user clueless. You can see basic schema of this data-set (top) & overview of the data-set:
Providing a set of queries for exploration (Details on Demand):
UI actually warns about the large returned data-set & asked if we want to proceed! Nice!
For those into more advanced stuff: https://memgraph.com/docs/advanced-algorithms/available-algorithms/node2vec
Improving Deployment Experience
- Avoid hard-coding port values within
docker-compose.yml
. - Deployment scripting should check for port availability especially for frontend since every other frontend love
3000
! - Script will then pick available port, write into a
.env
&docker-compose.yml
reference environment variable. - Of course once container started, SHOW the frontend URL & further instructions clearly!