All Projects → indradb → Indradb

indradb / Indradb

Licence: mpl-2.0
A graph database written in rust

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Indradb

Grakn
TypeDB: a strongly-typed database
Stars: ✭ 2,947 (+184.73%)
Mutual labels:  graph, database, graph-database
Bio4j
Bio4j abstract model and general entry point to the project
Stars: ✭ 113 (-89.08%)
Mutual labels:  graph, database, graph-database
Neo4j
Graphs for Everyone
Stars: ✭ 9,582 (+825.8%)
Mutual labels:  graph, database, graph-database
Reddit Detective
Play detective on Reddit: Discover political disinformation campaigns, secret influencers and more
Stars: ✭ 129 (-87.54%)
Mutual labels:  graph, database, graph-database
Cog
A Persistent Embedded Graph Database for Python
Stars: ✭ 90 (-91.3%)
Mutual labels:  graph, database, graph-database
Eliasdb
EliasDB a graph-based database.
Stars: ✭ 611 (-40.97%)
Mutual labels:  graph, database, graph-database
Cayley
An open-source graph database
Stars: ✭ 14,020 (+1254.59%)
Mutual labels:  graph, graph-database
Opennars
OpenNARS for Research 3.0+
Stars: ✭ 264 (-74.49%)
Mutual labels:  graph, database
Dgraph
Native GraphQL Database with graph backend
Stars: ✭ 17,127 (+1554.78%)
Mutual labels:  database, graph-database
Janusgraph
JanusGraph: an open-source, distributed graph database
Stars: ✭ 4,277 (+313.24%)
Mutual labels:  graph, graph-database
Geneweb
GeneWeb is an open source genealogy software with a web interface created by Daniel de Rauglaudre.
Stars: ✭ 171 (-83.48%)
Mutual labels:  graph, database
Awesome Knowledge Graph
A curated list of Knowledge Graph related learning materials, databases, tools and other resources
Stars: ✭ 382 (-63.09%)
Mutual labels:  graph, graph-database
Orientdb
OrientDB is the most versatile DBMS supporting Graph, Document, Reactive, Full-Text and Geospatial 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.
Stars: ✭ 4,394 (+324.54%)
Mutual labels:  database, graph-database
Movies Python Bolt
Neo4j Movies Example application with Flask backend using the neo4j-python-driver
Stars: ✭ 197 (-80.97%)
Mutual labels:  graph, graph-database
Graphik
Graphik is a Backend as a Service implemented as an identity-aware document & graph database with support for gRPC and graphQL
Stars: ✭ 277 (-73.24%)
Mutual labels:  database, graph-database
Gun
An open source cybersecurity protocol for syncing decentralized graph data.
Stars: ✭ 15,172 (+1365.89%)
Mutual labels:  graph, database
Samples
Sample projects using Material, Graph, and Algorithm.
Stars: ✭ 386 (-62.71%)
Mutual labels:  graph, database
Chat
基于自然语言理解与机器学习的聊天机器人,支持多用户并发及自定义多轮对话
Stars: ✭ 516 (-50.14%)
Mutual labels:  graph, database
Things.sh
Simple read-only comand-line interface to your Things 3 database
Stars: ✭ 492 (-52.46%)
Mutual labels:  graph, database
Opencypher
Specification of the Cypher property graph query language
Stars: ✭ 534 (-48.41%)
Mutual labels:  graph, database

IndraDB CI

A graph database written in rust.

IndraDB consists of a server and an underlying library. Most users would use the server, which is available via releases as pre-compiled binaries. But if you're a rust developer that wants to embed a graph database directly in your application, you can use the library.

IndraDB's original design is heavily inspired by TAO, facebook's graph datastore. In particular, IndraDB emphasizes simplicity of implementation and query semantics, and is similarly designed with the assumption that it may be representing a graph large enough that full graph processing is not possible. IndraDB departs from TAO (and most graph databases) in its support for properties.

For more details, see the homepage.

Features

  • Support for directed and typed graphs.
  • Support for queries with multiple hops.
  • Cross-language support via gRPC, or direct embedding as a library.
  • Support for JSON-based properties tied to vertices and edges.
  • Pluggable underlying datastores, with several built-in datastores. Postgresql is available separately.
  • Written in rust! High performance, no GC pauses, and a higher degree of safety.

Getting started

This should start the default datastore.

Memory

By default, IndraDB starts a datastore that stores all values in-memory. This is the fastest implementation, but there's no support for graphs larger than what can fit in-memory, and data is only persisted to disk when explicitly requested.

If you want to use the standard datastore without support for persistence, don't pass a subcommand; e.g.:

indradb-server [options]

If you want to use the standard datastore but persist to disk:

indradb-server memory --persist-path=[/path/to/memory/image.bincode]

You'll need to explicitly call Sync() when you want to save the graph.

RocksDB

If you want to use the rocksdb-backed datastore, use the rocksdb subcommand; e.g.:

indradb-server rocksdb [/path/to/rocksdb.rdb] [options]

Sled

If you want to a datastore based on sled, use the sled subcommand; e.g.:

indradb-server sled [path/to/sled] [options]

If the sled directory does not exist, it will be created.

NOTE: The sled datastore is not production-ready yet. sled itself is pre-1.0, and makes no guarantees about on-disk format stability. Upgrading IndraDB may require you to manually migrate the sled datastore. Additionally, there is a standing issue that prevents the sled datastore from having the same level of safety as the RocksDB datastore.

Install from source

If you don't want to use the pre-built releases, you can build/install from source:

  • Install rust. IndraDB should work with any of the rust variants (stable, nightly, beta.)
  • Make sure you have gcc 5+ installed.
  • Clone the repo: git clone [email protected]:indradb/indradb.git.
  • Build/install it: cargo install.

Running tests

Use make test to run the test suite. Note that this will run the full test suite across the entire workspace, including tests for all datastore implementations. Similarly, you can run make bench to run the full benchmarking suite.

You can filter which tests run via the TEST_NAME environment variable. e.g. TEST_NAME=create_vertex make test will run tests with create_vertex in the name across all datastore implementations.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].