A Go-native distributed key-value storage system with LSM tree, MVCC, and Redis compatibility, supporting seamless migration from embedded to multi-Raft cluster.
NoKV is a Go-native distributed key-value storage system built on an LSM tree with a ValueLog for large values. It solves the problem of scalable, durable storage by providing a single substrate that can be embedded locally or expanded into a multi-Raft cluster without changing the data plane. It includes features like MVCC, Redis compatibility, and explicit migration protocols.
Developers and engineers building scalable backend services, distributed systems, or data-intensive applications that require a reliable, high-performance key-value store with flexible deployment options.
Developers choose NoKV for its coherent architecture that unifies embedded and distributed modes, its focus on correctness and testability, and its built-in observability tools. It offers a clear migration path from standalone to clustered deployment without the complexity of separate engines.
AI native distributed file system
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows starting with an embedded engine and migrating the same workdir to a distributed cluster without data movement, as emphasized in the standalone to cluster feature.
Implements mode gates, logical region snapshots, and local recovery metadata to ensure data integrity, especially in distributed transactions via Percolator-style 2PC.
Provides CLI tools and expvar metrics for stats, hot key tracking, and recovery forensics, making system monitoring and debugging straightforward.
Exposes a RESP-compatible gateway, enabling standard Redis clients to interact with the cluster, simplifying integration for existing applications.
Requires detailed JSON configuration files and script management (e.g., raft_config.example.json and cluster.sh), which can be error-prone and daunting for newcomers.
The README notes careful handling of entry references (e.g., Get vs GetInternalEntry with DecrRef calls), adding cognitive load and potential for bugs in application code.
As a newer project, it lacks the extensive tooling, community support, and production hardening of established systems like etcd or Redis, posing risks for critical deployments.