RayDB
RayDB is a high-performance embedded graph database with built-in vector search. This crate provides the Rust core and the high-level Ray API.
Features
- ACID transactions with WAL-based durability
- Node and edge CRUD with properties
- Labels, edge types, and schema helpers
- Fluent traversal and pathfinding (BFS, Dijkstra, Yen)
- Vector embeddings with IVF and IVF-PQ indexes
- Single-file and multi-file storage formats
Install
[]
= "0.1"
Quick start (Ray API)
use ;
use PropValue;
use HashMap;
Lower-level API
If you want direct access to graph primitives, use raydb::graph::db::open_graph_db
and the modules under raydb::graph, raydb::vector, and raydb::core.
Concurrent Access
RayDB supports concurrent reads when wrapped in a RwLock. Multiple threads can read simultaneously:
use Arc;
use RwLock;
use ;
// Wrap Ray in RwLock for concurrent access
let ray = open?;
let db = new;
// Multiple threads can read concurrently
let db_clone = clone;
spawn;
// Writes require exclusive access
Concurrency model:
- Reads (
&self):get(),exists(),neighbors_out(),from(), traversals - concurrent viaRwLock::read() - Writes (
&mut self):create_node(),link(),set_prop()- exclusive viaRwLock::write() - The internal data structures use
RwLockfor thread-safe access to delta state and schema mappings
Documentation
https://ray-kwaf.vercel.app/docs
License
MIT License - see the main project LICENSE file for details.