Expand description
AletheiaDB - A high-performance bi-temporal graph database.
AletheiaDB tracks both valid time (when facts were true in reality) and transaction time (when facts were recorded in the database). This enables powerful time-traveling queries and historical analysis.
§Architecture
- Hybrid Storage: Separate current state (fast path) from historical data (temporal path)
- Anchor+Delta Compression: Reduces storage overhead by 5-6X
- Copy-on-Write Properties: Efficient property sharing across versions
- String Interning: Memory-efficient label and property key storage
§Primary Use Case
Designed for LLM integration, enabling reasoning systems to:
- Query historical knowledge states
- Track how facts evolved over time
- Detect contradictions through provenance
- Reason about temporal causality
§Example
use aletheiadb::{AletheiaDB, properties, WriteOps};
use aletheiadb::core::temporal::time;
let db = AletheiaDB::new()?;
// Create a node
let alice = db.create_node("Person", properties! {
"name" => "Alice",
"age" => 30,
})?;
// Later, update a property
db.write(|tx| tx.update_node(alice, properties! {
"age" => 31,
}))?;
// Query current state
let current = db.get_node(alice)?;
// Time-travel to see historical state
// Use current time as a placeholder for the point in time we want to query
let now = time::now();
let historical = db.get_node_at_time(alice, now, now)?;Re-exports§
pub use config::AletheiaDBConfig;pub use config::AletheiaDBConfigBuilder;pub use config::ConfigError;pub use config::HistoricalConfig;pub use config::HistoricalConfigBuilder;pub use config::VectorIndexConfig;pub use config::VectorIndexConfigBuilder;pub use config::WalConfig;pub use config::WalConfigBuilder;pub use core::temporal::time;pub use core::BiTemporalInterval;pub use core::Edge;pub use core::EdgeId;pub use core::EntityId;pub use core::GLOBAL_INTERNER;pub use core::InternedString;pub use core::Node;pub use core::NodeHeader;pub use core::NodeId;pub use core::PropertyKey;pub use core::PropertyMap;pub use core::PropertyMapBuilder;pub use core::PropertyValue;pub use core::StringInterner;pub use core::TimeRange;pub use core::Timestamp;pub use core::VersionId;pub use api::ReadOps;pub use api::ReadTransaction;pub use api::TxId;pub use api::TxState;pub use api::WriteOps;pub use api::WriteTransaction;pub use core::error::Error;pub use core::error::QueryError;pub use core::error::Result;pub use core::error::StorageError;pub use core::error::TemporalError;pub use core::error::TransactionError;pub use db::AletheiaDB;pub use db::VectorIndexBuilder;pub use index::AdjacencyIndex;pub use index::CurrentIndexes;pub use index::TemporalIndexes;pub use index::vector::DistanceMetric;pub use index::vector::HnswConfig;pub use index::vector::TemporalVectorConfig;pub use storage::CurrentStorage;pub use storage::index_persistence::PersistenceConfig;pub use storage::wal::DurabilityMode;pub use storage::wal::WriteOptions;pub use query::Query;pub use query::QueryBuilder;pub use query::QueryExecutor;pub use query::QueryPlanner;pub use query::QueryResults;pub use query::QueryRow;pub use query::ir::Direction;pub use query::ir::Predicate;pub use query::ir::QueryOp;pub use query::ir::TraversalDepth;pub use query::plan::LogicalOp;pub use query::plan::LogicalPlan;pub use query::planner::Cost;pub use query::planner::CostModel;pub use query::planner::PhysicalOp;pub use query::planner::PhysicalPlan;pub use query::planner::Statistics;
Modules§
- api
- Public API for AletheiaDB.
- config
- Unified configuration for AletheiaDB.
- core
- Core primitives for AletheiaDB.
- db
- Main AletheiaDB database API.
- encryption
- Encryption at rest (ADR-0028). Encryption at rest for AletheiaDB.
- experimental
- Experimental features (“Nova” playground).
- index
- Indexing subsystem for fast queries.
- prelude
- Prelude for convenient imports of common types and traits. AletheiaDB Prelude
- query
- Hybrid Query Engine for AletheiaDB
- storage
- Storage subsystem for graph data.
Macros§
- properties
- Macro for creating property maps with a convenient syntax.