Domino is an Extended Relational Database Engine based on E. F. Codd’s RM/T (Relational Model/Tasmania, 1979). It implements relational algebra in its strict, theoretical form while extending it to capture more of the meaning of data through semantic modeling concepts.
The engine builds upon two seminal works by E. F. Codd:
- “A Relational Model of Data for Large Shared Data Banks” (1970) — The foundation of relational theory
- “Extending the Database Relational Model to Capture More Meaning” (1979) — RM/T extensions for semantic modeling
A relation is modeled as a set of tuples, each tuple being a set of attributes. Each attribute is a pairing of a name with a value drawn from a domain. All operations are defined on entire relations as sets, with no recourse to the compromises typical of SQL or other practical implementations.
Entities are identified by system-controlled surrogates — cryptographic hashes (SHA-256) that provide permanent, unique identification. This enables:
- Automatic deduplication
- Immutable versioning
- Merkle tree-based diffing
- Distributed synchronization
Three fundamental entity classifications:
- Kernel Entities — Independent entities (e.g., Employee, Supplier)
- Characteristic Entities — Multi-valued properties (e.g., Job History)
- Associative Entities — Relationships as first-class entities
- Cartesian Aggregation — Properties, characteristics, and associations
- Generalization — Subtyping and inheritance hierarchies
- Cover Aggregation — Collections and groupings (e.g., teams, convoys)
- Event Precedence — Temporal ordering of events
All data structures are immutable. Every modification creates a new version with a new hash, enabling:
- Temporal queries
- Audit trails
- Safe concurrent access
- Version control for data
- Content-addressed storage with SHA-256 surrogates
- E-relations for entity type management
- P-relations for immediate properties
- Merkle tree integration for efficient versioning
- Volcano iterator model for lazy evaluation
- Transactional ACID operations via Mnesia
- Comprehensive EUnit test suite
- Full relational algebra operators (σ, π, ⋈, ∪, ∩, −)
- Characteristic entities and CG-relation
- Associative entities and AG-relation
- Generalization hierarchies (UGI/AGI)
- Cover aggregation (KG-relation)
- Event precedence (US/AS/UP/AP)
- Extended operators (OUTER JOIN, MAYBE operators)
- RM/T catalog relations
- Null value handling (three-valued logic)
- Infinite relations (aleph₀)
- High-level query language
The engine is intended as a study in correctness and semantic richness: each operation is executed in a manner consistent with the classical definition of relational algebra, while the RM/T extensions provide a framework for capturing more meaning about entities, their properties, and their relationships.
It is a platform for exploring the consequences of relational theory in a low-level programming context, providing both a tool for experimentation and a concrete realization of Codd’s vision for semantic data modeling.
Most database systems today are compromises — they sacrifice theoretical purity for practical performance. Domino takes a different approach: implement the theory correctly first, then optimize. RM/T provides:
- Atomic Semantics — What constitutes a minimal meaningful unit?
- Molecular Semantics — What larger clusters constitute meaningful units?
- Systematic Design — Principled approach to database schema design
- Intelligent Behavior — System understands more about data meaning
See docs/ directory:
code.org— Comprehensive code documentationfeatures.org— Feature roadmap and RM/T extensionsci.org— Continuous integration setup
- Codd, E. F. (1970). “A Relational Model of Data for Large Shared Data Banks.” Communications of the ACM 13(6): 377-387.
- Codd, E. F. (1979). “Extending the Database Relational Model to Capture More Meaning.” ACM Transactions on Database Systems 4(4): 397-434.
- Date, C. J. & Darwen, H. “Foundation for Future Database Systems: The Third Manifesto.”
See LICENSE file.