Making a Graph DB ep3
In my previous article about my Graph Database, I found the answers for: who uses graphs, what are they doing with them and why did they choose graphs.
In this episode, I’ll be focusing on finding a list of free & open-source libraries for Elixir, Python and Node, that will inspire me.
I’m still not writing any code yet. I need to know more.
Graph libraries for Elixir:
- Erlang Digraph (std library Erlang labeled directed graphs - can be used in Elixir)
- Github Oakfang/Thoth
- Github Mikowitz/Graphvix
- Erlang Cayley - wrapper for Cayley graph database
Graph libraries for Python:
- Github PirosB3/Hexagon - LevelGraph for Python
- Bitbucket Ronaldoussoren/Altgraph - good starting point
- Graphlite - edges only in SQLite, very interesting approach
- Bitbucket Nidusfr/Grapheekdb - lots and lots of backends
- Github Charanpald/APGL - built on NumPy, Scipy, PySparse
- NetworkX - serious stuff
- Python igraph - serious stuff
- Graph-tool - - massive Graph analysis library
- SNAP for Python - analysis and manipulation of large networks (py2 only)
- Github Ziyasal/Pyley - wrapper for Cayley graph database
Graph libraries for Node.js:
- Github Oakfang/SynoGraph - Graph DB for humans, very interesting approach
- Github Ryansmith94/Graph - jQuery-like functionality for graph structures
- Github Cpettitt/Graphlib - directed and undirected graphs + algorithms
- Github Mcollina/LevelGraph - graph following the Hexastore approach
- Github Graphology - serious stuff
- Github Tblobaum/Redis-graph - graph implementation using Redis sets
Python is the winner, with the most serious graph implementations 😀 And it’s also the language I’m the most experienced in.
Now, before I start studying what I found, I need to setup my goals. I already mentioned what I want to accomplish in the first episode, but I need to go much deeper.
In fact, it’s a delicate balance between this and learning more about other people’s libraries, because I don’t even know enough about graphs to know what I can choose from, what are my options.
So, now that I have a list of libraries for inspiration, I should forget about the implementation and setup a minimum of 3 use-cases. Based on them, I can then focus only on the libraries that I think can help me, because I don’t have time to study everything right now and I won’t even understand the code; that and I want to start building faster 😀
While I’m writing the code, I’ll understand better and I’ll resume studying the more complex libraries. This approach works for me, but as I said, it’s a delicate balance…
So, I’m going to start thinking about my use-cases now.
See you later!