An embedded persistent key-value store optimized for blockchain applications, designed for efficient Patricia-Merkle trie storage.
ParityDb is an embedded persistent key-value database optimized for blockchain applications. It efficiently stores blockchain state encoded into Patricia-Merkle tries, with a design that prioritizes read performance and handles large batch writes during block imports. The database supports atomic transactions, multiple concurrent readers, and ensures data consistency even after IO interruptions.
Blockchain developers and engineers building blockchain clients or nodes who need a specialized embedded database for storing and querying blockchain state, particularly those working with Patricia-Merkle trie structures.
Developers choose ParityDb for its blockchain-specific optimizations, such as read performance prioritization, reference counting for shared trie nodes, and reliable crash recovery, offering a tailored alternative to generic key-value stores for demanding blockchain workloads.
Experimental blockchain database
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Prioritizes read performance over write, aligning with blockchain transaction patterns where writes occur in large batches during block imports, as stated in the design considerations.
Supports atomic batch writes with all-or-nothing commitment, ensuring no partial reads and serialized writes for consistency.
Restores to a consistent state after IO interruptions by validating and enacting log files on startup, though recent unflushed writes may be lost.
Relies on OS page cache instead of custom caching, simplifying design and allowing performance to scale with available system memory.
Write performance is secondary and serialized in batches, making it unsuitable for applications requiring high write throughput or real-time individual writes.
BTree index operations are marked as TODO in the implementation details, indicating missing functionality for data organization beyond hash indexes.
Writes committed but not yet saved to disk by background threads can be lost in a crash, as noted in the durability section, posing a risk for critical data.