OrientDB is a multi-model NoSQL database management system supporting document, graph, object, and relational data models within a single engine. It provides ACID transactions, a SQL-like query language, distributed clustering with automatic sharding and replication, full-text and spatial indexing via Lucene, and a Gremlin graph traversal API. The system is implemented in Java and organized into modular components: a core storage engine with pluggable index structures (SB-Tree, hash, Lucene), a binary client-server protocol, an HTTP REST API, and a web-based administration studio (AngularJS). It includes enterprise features such as backup/restore, metrics monitoring, and security auditing. The architecture follows a plugin-based server model, allowing extensions for authentication, indexing, and custom commands. External dependencies include Dropwizard Metrics, Lucene, Gremlin/TinkerPop, and various compression libraries.
BadWolf is a Go-based temporal graph store library and CLI tool designed for managing RDF-like triples with time-anchored predicates. It implements a custom query language (BQL) modeled after SPARQL, featuring a compiler pipeline architecture that includes lexical analysis, parsing, semantic analysis, and execution planning. The system supports immutable and temporal predicates, allowing queries to filter by time validity and perform temporal reasoning over graph data. It provides a pluggable storage abstraction layer, with a default in-memory implementation, and exposes functionality via a CLI tool (`bw`) and a simple HTTP server. The codebase demonstrates high craftsmanship in its query engine, utilizing a recursive descent parser with hook injection for semantic validation and a specificity-based planner for query optimization. The storage layer is decoupled via interfaces, enabling driver implementations to be swapped without modifying query logic. Extensive compliance testing ensures driver consistency across different backends. However, the project is explicitly pre-1.0, indicating API instability, and relies on a future Go version (1.24) in its module definition, suggesting experimental or forward-looking development practices. While primarily an application framework, it contains significant data engineering components, particularly in its temporal data modeling and query planning logic. The repository is suitable for engineers needing a temporal graph store or those looking to study compiler patterns applied to graph data. The CLI and server components provide immediate utility for testing and integration, while the library core offers reusable patterns for storage abstraction and query execution.