[DeepDive] Graph Databases
Neo4j
Neo4j is a highly scalable native graph database, purpose-built to leverage not only data but also data relationships.
- https://github.com/neo4j
- https://github.com/neo4j/neo4j
- https://github.com/neo4j/docker-neo4j
- https://github.com/neo4j/docker-neo4j-publish
- https://hub.docker.com/_/neo4j/
- https://neo4j.com/docs/operations-manual/current/docker/introduction/
- https://github.com/neo4j/neo4j-go-driver
- https://github.com/neo4j/cypher-shell
- https://github.com/neo4j-graphql
- https://github.com/neo4j-graphql/neo4j-graphql
- https://github.com/neo4j-graphql/neo4j-graphql-js
- https://github.com/neo4j-graphql/neo4j-graphql-cli
- deprecated, see: https://grandstack.io/docs/neo4j-graphql-js.html
- https://neo4j.com/
- https://neo4j.com/product/
- https://neo4j.com/neo4j-graph-database/
- https://neo4j.com/neo4j-in-the-cloud/
- https://neo4j.com/aura/
- https://neo4j.com/emil/neo4j-aura-graph-database-as-a-service/
- https://neo4j.com/bloom/
- https://neo4j.com/graph-machine-learning-algorithms/
- https://neo4j.com/download/
- https://neo4j.com/product/#desktop
- https://neo4j.com/product/#neo4j-desktop
- https://neo4j.com/startup-program/
- https://neo4j.com/docs/
- https://neo4j.com/docs/operations-manual/3.5/
- https://neo4j.com/docs/driver-manual/current/
- https://godoc.org/github.com/neo4j/neo4j-go-driver/neo4j
- https://neo4j.com/docs/api/javascript-driver/current/
- https://neo4j.com/docs/cypher-manual/3.5/
- https://neo4j.com/docs/graph-algorithms/current/
- https://neo4j.com/graph-algorithms-book/
- https://neo4j.com/graphacademy/
- https://neo4j.com/graphacademy/online-training/introduction-to-neo4j/
- https://neo4j.com/graphacademy/online-training/applied-graph-algorithms/
- https://neo4j.com/developer/
- https://neo4j.com/sandbox-v2/
- https://neo4j.com/whitepapers/graph-databases-beginners-ebook/
- https://neo4j.com/open-source-project/
- https://neo4j.com/licensing/
-
Neo4j is committed to open source. Neo4j Community Edition is fully open source, licensed and distributed under GPL v3.
-
Neo4j offers a number of commercial licensing options, outlined above: both paid and free, including free licenses for development, startup, and academic-educational uses and of course evaluation.
-
- https://neo4j.com/licensing/
Cypher / GQL
- http://www.opencypher.org/
-> openCypher is the most widely adopted, fully-specified, and open query language for property graph databases.
- https://www.opencypher.org/articles/2019/09/12/SQL-and-now-GQL/
- https://neo4j.com/cypher-graph-query-language/
-
Cypher is a vendor-neutral open graph query language employed across the graph ecosystem.
-
- https://www.gqlstandards.org/
- https://neo4j.com/press-releases/query-language-graph-databases-international-standard/
- https://gql.today/
- https://gql.today/comparing-cypher-pgql-and-g-core/
- https://github.com/szarnyasg/awesome-cypher
- http://graphgen.graphaware.com/#/
- https://github.com/opencypher/openCypher
- https://github.com/opencypher/cypher-for-gremlin
- https://github.com/topics/cypher-query-language
- https://github.com/microsoft/openCypherTranspiler
Dgraph
- https://dgraph.io/
- https://dgraph.io/graph-db
-
Dgraph, the native GraphQL database with a graph backend.
- https://github.com/dgraph-io/dgraph
-
Dgraph is a horizontally scalable and distributed GraphQL database with a graph backend. It provides ACID transactions, consistent replication and linearizable reads. It's built from ground up to perform for a rich set of queries. Being a native GraphQL database, it tightly controls how the data is arranged on disk to optimize for query performance and throughput, reducing disk seeks and network calls in a cluster.
-
Dgraph's goal is to provide Google production level scale and throughput, with low enough latency to be serving real time user queries, over terabytes of structured data. Dgraph supports GraphQL query syntax, and responds in JSON and Protocol Buffers over GRPC and HTTP.
- https://github.com/dgraph-io/dgo
-
Official Dgraph Go client which communicates with the server using gRPC.
-
- https://github.com/dgraph-io/dgraph-js
-
Official Dgraph client implementation for JavaScript (Node.js v6 and above), using gRPC.
-
- https://github.com/dgraph-io/dgraph-js-http
-
A Dgraph client implementation for javascript using HTTP. It supports both browser and Node.js environments.
-
-
-
- https://dgraph.io/open-source
- https://github.com/dgraph-io/badger
-
BadgerDB is an embeddable, persistent and fast key-value (KV) database written in pure Go. It is the underlying database for Dgraph, a fast, distributed graph database. It's meant to be a performant alternative to non-Go-based key-value stores like RocksDB.
-
- https://github.com/dgraph-io/ristretto
-
Ristretto is a fast, concurrent cache library built with a focus on performance and correctness.
-
The motivation to build Ristretto comes from the need for a contention-free cache in Dgraph.
-
- https://github.com/dgraph-io/badger
LevelGraph, LevelDB, Level/LevelJS, etc
LevelGraph
- https://github.com/levelgraph/levelgraph
-
LevelGraph is a Graph Database. Unlike many other graph database, LevelGraph is built on the uber-fast key-value store LevelDB through the powerful LevelUp library. You can use it inside your node.js application or in any IndexedDB-powered Browser.
-
- https://wileylabs.github.io/levelgraph-playground/
- https://github.com/WileyLabs/levelgraph-playground
- http://nodejsconfit.levelgraph.io/
-
How to Cook a Graph Database in a Night
-
Hexastore: the fastest data structure for a Graph
-
How to use LevelUp to build a Graph Database
-
LevelGraph is an Hexastore built on LevelDB and LevelUp
-
LevelGraph-JSONLD: an Object Document Mapper for LevelGraph
-
Linked Open Data Cloud
- https://lod-cloud.net/
-
This web page is the home of the LOD cloud diagram. This image shows datasets that have been published in the Linked Data format.
- https://www.w3.org/standards/semanticweb/data
-
- https://lod-cloud.net/
-
- https://github.com/mcollina/levelgraph-talk-nodejsconfit
-
My Talk at nodejsconf.it 2014! "How to Cook a Graph Database in a Night"
-
LevelDB
- https://github.com/google/leveldb
-
LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.
-
Level / LevelJS
- https://leveljs.org/
-
Level is a community and a collection of Node.js modules for creating transparent databases. A solid set of primitives enable powerful databases to be built in userland. They can be embedded or networked, persistent or transient - in short, tailored to your needs.
- https://github.com/Level/community
-
General discussion, cross-repo efforts and common information for projects in the community.
-
- https://github.com/Level/levelup
-
Fast and simple storage. A Node.js wrapper for abstract-leveldown compliant stores, which follow the characteristics of LevelDB.
-
The most common store is leveldown which provides a pure C++ binding to LevelDB. Many alternative stores are available such as level.js in the browser or memdown for an in-memory store. They typically support strings and Buffers for both keys and values.
-
The level package is the recommended way to get started. It conveniently bundles levelup, leveldown and encoding-down
-
- https://github.com/Level/level
-
Fast & simple storage. A Node.js-style LevelDB wrapper for Node.js, Electron and browsers.
-
- https://github.com/Level/level-js
-
An abstract-leveldown compliant store on top of IndexedDB.
-
- https://github.com/Level/leveldown/
-
Pure C++ Node.js LevelDB binding. An abstract-leveldown compliant store.
-
It is strongly recommended that you use levelup in preference to leveldown unless you have measurable performance reasons to do so. levelup is optimised for usability and safety. Although we are working to improve the safety of the leveldown interface it is still easy to crash your Node process if you don't do things in just the right way.
-
- https://github.com/Level/memdown
-
In-memory abstract-leveldown store for Node.js and browsers.
-
- https://github.com/Level/awesome
-
An open list of awesome Level modules and resources.
- https://github.com/Level/awesome#stores
-
Modules that implement abstract-leveldown as storage for levelup
-
- https://github.com/Level/awesome#databases
-
Complete Node.js databases built with Level.
-
- https://github.com/Level/awesome#data-structures
-
Modules that utilize a specific key/value scheme to provide a higher-level data structure.
-
-
-
GunDB
- https://gun.eco/
-
The database for freedom fighters
- https://gun.eco/docs/Introduction
-
GUN is a small, easy, and fast data sync and storage system that runs everywhere JavaScript does. The aim of GUN is to let you focus on the data that needs to be stored, loaded, and shared in your app without worrying about servers, network calls, databases, or tracking offline changes or concurrency conflicts.
-
GUN is fully decentralized (peer-to-peer or multi-master), meaning that changes are not controlled by a centralized server. A server can be just another peer in the network, one that may have more reliable resources than a browser. You save data on one machine, and it will sync it to other peers without needing a complex consensus protocol. It just works.
-
-
The gun graph database is stored across all peers participating in the network. Most data distribution scenarios that one could think of are possible to occur: Every peer might possess the complete graph, or only a subset of the complete graph and may possess data that does not exist on any other node (yet). The whole database is considered to be the union of all peers' graphs.
-
- https://github.com/amark/gun
-
GUN is an ecosystem of tools that let you build community run and encrypted applications.
-
Currently, Internet Archive and HackerNoon run GUN in production.
-
- https://github.com/gundb
- https://github.com/gundb/gun
-
GUN is a realtime, distributed, offline-first, graph database engine. Lightweight and powerful, at just ~9KB gzipped.
-
Please use https://github.com/amark/gun for now.
-
- https://github.com/gundb/gun-starter-app
-
Framework agnostic starter code for gun apps
-
- https://github.com/gundb/todo-react
-
A react todo app using gunDB's real-time sync
-
- https://github.com/gundb/gun-rtc
- https://github.com/gundb/sqlite
-
SQLite3 persistence layer for gun! GUN is an Open Source Firebase with swappable storage engines (level, SQLite, etc.) that handles data synchronization across machines / devices.
-
Or in other words: If you use gun as your API to SQLite3, you'll get multi-machine SQLite3 clusters for free!
-
- https://github.com/gundb/gun-rtc
-
WebRTC transport layer for gun
-
- https://github.com/gundb/gun
- articles:
- https://medium.com/@ajmeyghani/gundb-a-graph-database-in-javascript-3860a08d873c
- related
- https://github.com/dtube/dtube
-
d.tube app. A full-featured video sharing website, decentralized.
- https://d.tube/
-
- https://github.com/meething/meething
-
Meething : dWebRTC
-
Meething is a semi-decentralized conference bridge using modern WebRTC, GunDB and MediaSoup to produce a hybrid MESH-SFU with strong privacy, zero user data retention and powerful off-grid capabilities.
-
- https://github.com/gundb/identifi-lib
-
Library for reading & writing identifi messages and searching & displaying identities
- https://github.com/irislib/iris-lib
-
Library for encrypted GUN channels and contact list management
-
Iris-lib allows you to integrate decentralized social networking features into your application.
-
-
- https://github.com/dtube/dtube
HeliosJS
- http://zuudo.github.io/helios.js/
- https://github.com/zuudo/helios.js
-
HeliosJS is an in-memory graph database for modern browsers. It employs a non-blocking asynchronous architecture through the use of Promises and Web Workers. This enables HeliosJS to download and process large data sets without blocking the UI.
-
In order to traverse the graph, HeliosJS uses a Gremlin inspired graph traversal language to query, analyze and manipulate the graph. Gremlin is an open source project maintained by TinkerPop.
-
Apache Tinkerpop
Apache TinkerPop™ is a graph computing framework for both graph databases (OLTP) and graph analytic systems (OLAP).
- https://github.com/apache/tinkerpop/
- https://tinkerpop.apache.org/
- https://tinkerpop.apache.org/#graph-systems
- https://tinkerpop.apache.org/#language-drivers
- https://tinkerpop.apache.org/gremlin.html -> Gremlin is a functional, data-flow language that enables users to succinctly express complex traversals on (or queries of) their application's property graph.
- https://tinkerpop.apache.org/downloads.html
- http://tinkerpop.apache.org/docs/current/
- http://tinkerpop.apache.org/docs/3.4.4/tutorials/getting-started/
- http://tinkerpop.apache.org/docs/3.4.4/reference/#gremlin-console
- http://tinkerpop.apache.org/docs/3.4.4/reference/#graphml
-> The GraphML file format is a common XML-based representation of a graph. It is widely supported by graph-related tools and libraries making it a solid interchange format for TinkerPop.
-> http://tinkerpop.apache.org/docs/3.4.4/reference/#graphson
-
GraphSON is a JSON-based format -> http://tinkerpop.apache.org/docs/3.4.4/reference/#gryo -> Kryo is a popular serialization package for the JVM. Gremlin-Kryo is a binary Graph serialization format for use on the JVM by JVM languages. It is designed to be space efficient, non-lossy and is promoted as the standard format to use when working with graph data inside of the TinkerPop stack.
- https://github.com/EsotericSoftware/kryo
-
- https://academy.datastax.com/resources/getting-started-graph-databases
Graph databases in the browser
- https://www.vldb.org/pvldb/vol9/p1469-maccioni.pdf
- See LevelGraph
Unsorted
- https://grandstack.io/
-
GraphQL, React, Apollo, Neo4j
- https://graphql.org/
- https://reactjs.org/
- https://www.apollographql.com/
- https://neo4j.com/developer/
- https://grandstack.io/docs/getting-started-neo4j-graphql.html
- https://grandstack.io/docs/neo4j-graphql-js-quickstart.html
- https://grandstack.io/docs/neo4j-graphql-database-plugin.html
-
- https://blog.grandstack.io/
- https://github.com/grand-stack
- https://github.com/grand-stack/grand-stack-starter
- https://www.g2.com/categories/graph-databases
-
Best Graph Databases
-
Top 9 Graph Databases (As determined by G2 Scores of products within this category.)
-
Neo4j, ArangoDB, OrientDB, Amazon Neptune, FlockDB, DataStax, Cassandra, Titan, Cayley
-
- https://www.orientdb.org/
- https://github.com/orientechnologies/orientdb
-
OrientDB is the most versatile DBMS supporting Graph, Document, Reactive, Full-Text, Geospatial and Key-Value models in one Multi-Model product. OrientDB can run distributed (Multi-Master), supports SQL, ACID Transactions, Full-Text indexing and Reactive Queries. OrientDB Community Edition is Open Source using a liberal Apache 2 license.
-
- https://github.com/orientechnologies/orientdb
- https://fauna.com/
-
FaunaDB is a global serverless database that rethinks the client-server relationship. With a web-native GraphQL interface that supports custom business logic, a consistent data and compute fabric with modern security, and total freedom from database operations, FaunaDB enables you to simplify code, reduce costs and ship faster.
-
- https://aws.amazon.com/neptune/
-
Amazon Neptune is a fast, reliable, fully managed graph database service that makes it easy to build and run applications that work with highly connected datasets. The core of Amazon Neptune is a purpose-built, high-performance graph database engine optimized for storing billions of relationships and querying the graph with milliseconds latency. Amazon Neptune supports popular graph models Property Graph and W3C's RDF, and their respective query languages Apache TinkerPop Gremlin and SPARQL, allowing you to easily build queries that efficiently navigate highly connected datasets. Neptune powers graph use cases such as recommendation engines, fraud detection, knowledge graphs, drug discovery, and network security.
-
- https://azure.microsoft.com/en-gb/services/cosmos-db/
-
Azure Cosmos DB is a fully managed NoSQL database service for modern app development.
- https://azure.microsoft.com/en-au/resources/videos/create-a-graph-with-the-azure-cosmos-db-graph-api/
- https://docs.microsoft.com/en-us/azure/cosmos-db/graph-modeling
- https://towardsdatascience.com/getting-started-with-graph-databases-in-azure-cosmos-db-cbfbf708cda5
-
- https://en.wikipedia.org/wiki/FlockDB
- https://github.com/twitter-archive/flockdb
-
A distributed, fault-tolerant graph database
- unmaintained
-
- https://github.com/twitter-archive/flockdb
- https://titan.thinkaurelius.com/
-
Titan is a scalable graph database optimized for storing and querying graphs containing hundreds of billions of vertices and edges distributed across a multi-machine cluster. Titan is a transactional database that can support thousands of concurrent users executing complex graph traversals in real time.
- http://espeed.github.io/titandb/
-
Titan is one piece of the Aurelius Graph Cluster, which also includes Faunus and Fulgora.
-
- https://github.com/thinkaurelius/titan/
-
- https://cayley.io/
-
Cayley works on top of your existing database regardless of data model: SQL, NoSQL or even KV.
- https://github.com/cayleygraph/cayley
-
Cayley is an open-source database for Linked Data. It is inspired by the graph database behind Google's Knowledge Graph (formerly Freebase).
-
-
- https://giraph.apache.org/
-
Apache Giraph is an iterative graph processing system built for high scalability. For example, it is currently used at Facebook to analyze the social graph formed by users and their connections.
- https://github.com/apache/giraph
-
- http://www.hypergraphdb.org/
-
HyperGraphDB is a general purpose, open-source data storage mechanism based on a powerful knowledge management formalism known as directed hypergraphs. While a persistent memory model designed mostly for knowledge management, AI and semantic web projects, it can also be used as an embedded object-oriented database for Java projects of all sizes. Or a graph database. Or a (non-SQL) relational database.
- https://github.com/hypergraphdb/hypergraphdb
-
- https://github.com/lambdazen/bitsy
-
Bitsy is a small, fast, embeddable, durable in-memory graph database that is compatible with Tinkerpop3.
-
- https://blazegraph.com/
-
Blazegraph™ DB is a ultra high-performance graph database supporting Blueprints and RDF/SPARQL APIs. It supports up to 50 Billion edges on a single machine. It is in production use for Fortune 500 customers such as EMC, Autodesk, and many others.
- https://github.com/blazegraph/database
-
- https://flur.ee/
-
Open source semantic graph database that guarantees data integrity, facilitates secure data sharing, and powers connected data insights — all in one pluggable stack.
- https://github.com/fluree/db
-
Fluree is an immutable, temporal, ledger-backed semantic graph database that has a cloud-native architecture.
-
This repository is a stateless database as a library and designed to be utilized in conjunction with the Fluree Ledger which maintains all state.
-
-
- https://grakn.ai/
-
Grakn is an intelligent database - a knowledge graph
- https://github.com/graknlabs/grakn
-
Grakn is an intelligent database: a knowledge graph engine to organise complex networks of data and make it queryable.
-
-
- https://www.graphengine.io/
-
Graph Engine (GE) is a distributed in-memory data processing engine, underpinned by a strongly-typed RAM store and a general distributed computation engine.
- https://github.com/Microsoft/GraphEngine
-
- https://github.com/rayokota/hgraphdb
-
HGraphDB is a client layer for using HBase as a graph database. It is an implementation of the Apache TinkerPop 3 interfaces.
-
- https://hugegraph.github.io/hugegraph-doc/
- https://github.com/hugegraph/hugegraph
-
HugeGraph is a fast-speed and highly-scalable graph database. Billions of vertices and edges can be easily stored into and queried from HugeGraph due to its excellent OLTP ability. As compliance to Apache TinkerPop 3 framework, various complicated graph queries can be accomplished through Gremlin(a powerful graph traversal language).
-
- https://github.com/hugegraph/hugegraph
- https://nebula-graph.io/
-
A Powerfully Distributed, Scalable, Lightning-Fast Graph Database
-
Nebula Graph is an open-source graph database unmatched in its ability to host super large-scale graphs using billions of vertices (nodes) and trillions of edges with milliseconds of latency. This empowers businesses to reveal untapped value buried in complex data.
- https://github.com/vesoft-inc/nebula
-
- https://recallgraph.tech/
-
RecallGraph is a versioned-graph data store - it retains all changes that its data (vertices and edges) have gone through to reach their current state.
-
It supports point-in-time graph traversals, letting the user query any past state of the graph just as easily as the present.
- https://github.com/RecallGraph/RecallGraph
-
It is a Foxx Microservice for ArangoDB that features VCS-like semantics in many parts of its interface, and is backed by a transactional event tracker.
-
-
- https://www.arangodb.com/
- https://www.arangodb.com/why-arangodb/foxx/
-
Foxx is a JavaScript framework for writing data-centric HTTP microservices that run directly inside of ArangoDB.
-
- https://github.com/arangodb/arangodb
-
ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.
-
- https://www.arangodb.com/why-arangodb/foxx/
- https://terminusdb.com/
-
TerminusDB is an open source, model driven, revision controlled RDF graph database for distributed collaboration designed for the web-age.
-
-
- https://github.com/jbmusso/awesome-graph
-
A curated list of resources for graph databases and graph computing tools
-
See Also
- [Blog] Serverless Web App + Chat Bot + Mobile App (iOS) + Desktop App (Catalyst, Electron): https://github.com/0xdevalias/devalias.net/issues/10
- [Blog] 'Note-taking graph' : https://github.com/0xdevalias/devalias.net/issues/17
- [DeepDive] GraphQL, Apollo, AWS AppSync, Fauna, etc: https://github.com/0xdevalias/devalias.net/issues/66