CQLite
An embedded graph database implemented in Rust. This is currently a pre-release. It has not been extensively tested with 'real-world work-loads', and the file-format and API are not yet stabilized.
The longer term goal is to create an in-process graph database with a stable on-disk format and support for a wide range of programming languages, providing a native Rust API, as well as a C FFI interface.
use Graph;
let graph = open_anon?;
let mut txn = graph.mut_txn?;
let edge: u64 = graph.prepare?
.query_map?
.next
.unwrap?;
txn.commit?;
let name: String = graph.prepare?
.query_map?
.next
.unwrap?;
assert_eq!;
Architecture Overview
Parser :: src/parser
PEG grammar and parser for a subset of the CYPHER graph query language
Query Planner :: src/planner
Transforms a parsed query ast into a logical query plan. Performs some optimizations on the query plan.
Byte-Code Interpreter :: src/runtime
Defines a simple 'byte' code (Instructions) and can execute those against a given
database, as well as generate instructions for a given query plan.
Storage Backend :: src/store
Uses a disc-backed btree to provide basic storage, iteration and lockup for nodes and
edges.