3 ms·
I started using Neo4j 8 years ago after a long time as a relational database developer. I needed it for a project building a LinkedIn clone with skills (at the
by maxdemarzi 9y ago
I started using Neo4j 8 years ago after a long time as a relational database developer. I needed it for a project building a LinkedIn clone with skills (at the time LinkedIn didn't have skills). I was going to need a massive join table of user-skill-user and decided it was best in a graph. I built a ruby gem "neography" as a Neo4j driver and became an open source contributor. Later Neo4j contracted me to build a rules engine in a week for one of their clients. That got me a job as a Sales Engineer at Neo4j. 100+ blog posts, 200+ github repos later, lots of travel, and many wins, I still love the job, and still love the database.
- mburst 9y agoI have been looking at learning graph database architecture recently and your blog posts keep coming. Great stuff! Keep it coming
- somehnreader 9y agoHow is a graph database built under the hood? I know that a decent RDBMS (simplified) will consist of the following: - data in blocks organised with a block-size that the underlying filesystem likes - a cache for the most frequently used blocks - every index is a B-Tree with pointers to the blocks containing the tuples Then there are column stores as well as row stores, and for compression you might have some dictionary encoding going on. Now, how does the Graph Database look under the hood and what are the complexities involved? How is the Graph persisted?
- jexp 9y agoA graph database is similar, only it uses direct-record-ids for linking connected entities and not indexes. So instead of doing joins on indexes it follows record-pointers during graph traversals. In the graph databases book (graphdatabases.com) there is a chapter on the internal architecture of Neo4j.
- moxious 9y agoGraph databases are built a lot of different ways; for example Neo4j's architecture is very, very different than something like an RDF triple store, or datastax on top of cassandra. [Neo4j internals can be seen here](https://www.slideshare.net/thobe/an-overview-of-neo4j-internals https://www.slideshare.net/thobe/an-overview-of-neo4j-intern...)...it's a bit old but I think mostly still accurate. In graphs you have to persist nodes and edges, though you may partition nodes by label/category. In the case of neo4j there is a property store rather than a set of columns.
- somehnreader 9y agoThanks, very helpful. I am just looking at it and will have a bit of a think about this later :)