Kronotop
lastmod 2025-02-02created 2025-02-021 edits
Redis-compatible distributed document store, based on FoundationDB
About
- A distributed, transactional document database that works in a Redis-compatible way, using FoundationDB for metadata and storage management
- Aims to be a disk-based storage engine with an MQL-like query language, ACID transactions, and a Primary-Standby replication model
At a glance
- Architecture that supports horizontal scaling (Sharding) by default
- Supports various deployment strategies by forming single- or multi-master clusters
- Uses the Redis Serialization Protocol (RESP), so any Redis client can connect
- Supports part of the Redis cluster specification
- Uses FoundationDB as a metastore for cluster management and data structure definitions
- Implemented in Java and requires JDK 21 or later
Current status
- Only initial features are implemented, but it has a stable foundation
- ZMap : an ordered key-value store that provides a Redis protocol proxy on top of the FoundationDB API
- Namespaces : a concept that isolates ZMap and Buckets, implemented as a thin wrapper around FoundationDB's directory layer
- Volume : the storage engine implementation, adopting a Primary-Standby replication model
- Clustering : clusters can be configured as single-master or multi-master
- Redis Data Structures (partial support) : supports part of the String and Hash data structures
Future plans
- Plans to design a data structure called Bucket to support storing JSON-like documents
- Plans to provide FoundationDB-based transactions and an MQL-like query language in Bucket
- Plans to gradually support common Redis data structures (String, Hash, Sorted Sets, etc.)