The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning. Learn more →
Top 23 Key-Value Open-Source Projects
-
Redis
Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes, Streams, HyperLogLogs, Bitmaps.
Cache: a Redis cache
-
Project mention: Oracle Linux 8.8'de PostgreSQL 13 Yedekli Yapı Nasıl Kurulur? - Patroni, ETCD, HAProxy | dev.to | 2023-12-07
sudo dnf -y install curl wget vim ETCD_RELEASE=$(curl -s https://api.github.com/repos/etcd-io/etcd/releases/latest|grep tag_name | cut -d '"' -f 4) echo $ETCD_RELEASE wget https://github.com/etcd-io/etcd/releases/download/${ETCD_RELEASE}/etcd-${ETCD_RELEASE}-linux-amd64.tar.gz tar xvf etcd-${ETCD_RELEASE}-linux-amd64.tar.gz cd etcd-${ETCD_RELEASE}-linux-amd64 sudo mv etcd* /usr/local/bin ls /usr/local/bin /usr/local/bin/etcd --version
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
MMKV
An efficient, small mobile key-value storage framework developed by WeChat. Works on Android, iOS, macOS, Windows, and POSIX.
-
Project mention: just wanted to ask is there an in memory database that uses s3 or gcp cloud storage as permanent storage | /r/Database | 2023-07-04
I know that very similar functionality to this is in TiDB Serverless ( https://tidbcloud.com ). TiDB is a distributed relational database. It uses TiKV ( which is a key/value engine ) as the storage engine. You could use SQL to access your K/V records. There is ongoing work in TiKV to support S3 directly as the storage backend ( https://github.com/tikv/tikv/issues/6506 ) .
-
ArangoDB
🥑 ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.
Project mention: Ask HN: When is pure functional programming beneficial? | news.ycombinator.com | 2023-07-11... or working in an environment or on a problem for which functional patterns apply.
Suppose you are writing a "CRUD" app that writes to a relational database, how do you apply functional programming to that? The whole point of an application like that is that it makes side effects.
In some cases you can break those problems down into functional pieces. Consider Python drivers for a product like
One major problem is that you want drivers that work synchronously and asynchronously, the structure of the average api call is something like
def query(parameters):
-
github.com/dgraph-io/badger/v3/table.OpenTable(0xc000bb4000, {0x0, 0x1, 0x200000, 0x0, 0x0, 0x3f847ae147ae147b, 0x1000, 0x0, 0x0, ...})
-
Project mention: Easy Guide to Integrating Kafka: Practical Solutions for Managing Blob Data | dev.to | 2024-01-22
To use Kafka, we also need to deploy a service that keeps configuration informations such as Zookeeper.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
immudb
immudb - immutable database based on zero trust, SQL/Key-Value/Document model, tamperproof, data change history
Project mention: Ask HN: What is your experience of tamper proof systems? | news.ycombinator.com | 2024-01-05 -
garnet
Garnet is a remote cache-store from Microsoft Research that offers strong performance (throughput and latency), scalability, storage, recovery, cluster sharding, key migration, and replication features. Garnet can work with existing Redis clients. (by microsoft)
-
buntdb
BuntDB is an embeddable, in-memory key/value database for Go with custom indexing and geospatial support
Experimental format to help readability of a long rant:
1.
According to the OP, there's a "terrifying tale of VACUUM in PostgreSQL," dating back to "a historical artifact that traces its roots back to the Berkeley Postgres project." (1986?)
2.
Maybe the whole idea of "use X, it has been battle-tested for [TIME], is robust, all the bugs have been and keep being fixed," etc., should not really be that attractive or realistic for at least a large subset of projects.
3.
In the case of Postgres, on top of piles of "historic code" and cruft, there's the fact that each user of Postgres installs and runs a huge software artifact with hundreds or even thousands of features and dependencies, of which every particular user may only use a tiny subset.
4.
In Kleppmann's DDOA [1], after explaining why the declarative SQL language is "better," he writes: "in databases, declarative query languages like SQL turned out to be much better than imperative query APIs." I find this footnote to the paragraph a bit ironic: "IMS and CODASYL both used imperative query APIs. Applications typically used COBOL code to iterate over records in the database, one record at a time." So, SQL was better than CODASYL and COBOL in a number of ways... big surprise?
Postgres' own PL/pgSQL [2] is a language that (I imagine) most people would rather NOT use: hence a bunch of alternatives, including PL/v8, on its own a huge mass of additional complexity. SQL is definitely "COBOLESQUE" itself.
5.
Could we come up with something more minimal than SQL and looking less like COBOL? (Hopefully also getting rid of ORMs in the process). Also, I have found inspiring to see some people creating databases for themselves. Perhaps not a bad idea for small applications? For instance, I found BuntDB [3], which the developer seems to be using to run his own business [4]. Also, HYTRADBOI? :-) [5].
6.
A usual objection to use anything other than a stablished relational DB is "creating a database is too difficult for the average programmer." How about debugging PostgreSQL issues, developing new storage engines for it, or even building expertise on how to set up the instances properly and keep it alive and performant? Is that easier?
I personally feel more capable of implementing a small, well-tested, problem-specific, small implementation of a B-Tree than learning how to develop Postgres extensions, become an expert in its configuration and internals, or debug its many issues.
Another common opinion is "SQL is easy to use for non-programmers." But every person that knows SQL had to learn it somehow. I'm 100% confident that anyone able to learn SQL should be able to learn a simple, domain-specific, programming language designed for querying DBs. And how many of these people that are not able to program imperatively would be able to read a SQL EXPLAIN output and fix deficient queries? If they can, that supports even more the idea that they should be able to learn something different than SQL.
----
2: https://www.postgresql.org/docs/7.3/plpgsql-examples.html
-
-
-
Project mention: Ask HN: Good examples of fault-tolerant Erlang code? | news.ycombinator.com | 2023-12-28
Step zero is definitely the OTP Design Principles doc (part of the OTP distribution):
https://www.erlang.org/doc/design_principles/users_guide
There are some good texts that have more examples:
Erlang & OTP in Action - https://www.manning.com/books/erlang-and-otp-in-action
Designing for Scalability with Erlang/OTP - https://www.oreilly.com/library/view/designing-for-scalabili...
One big example of distributed Erlang is Riak:
-
-
nutsdb
A simple, fast, embeddable, persistent key/value store written in pure Go. It supports fully serializable transactions and many data structures such as list, set, sorted set.
if you're looking for something simpler/embedded, NutsDB is pretty good.
-
Project mention: ImmortalDB: A resilient key-value store for the browser | news.ycombinator.com | 2023-03-31
-
Olric
Distributed in-memory object store. It can be used as an embedded Go library and a language-independent service.
Project mention: Olric: Distributed, embeddable in-memory data structures in Go | news.ycombinator.com | 2024-02-05 -
-
FlashDB
An ultra-lightweight database that supports key-value and time series data | 一款支持 KV 数据和时序数据的超轻量级数据库
-
ejdb
:snowboarder: EJDB2 — Embeddable JSON Database engine C library. Simple XPath like query language (JQL).
-
-
Project mention: Sparkey is a simple constant key/value storage library | news.ycombinator.com | 2024-01-04
-
redix
a very simple pure key => value storage system that speaks Redis protocol with Postgres as storage engine and more
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Key-Value related posts
- Valkey – a new project to resume development on the formerly open-source Redis
- Fix Redis Drama
- Redis Renamed to Redict
- Redis changes license from BSD-3 to dual RSALv2+SSPLv1
- Redis License Changed
- Change license from BSD-3 to dual RSALv2+SSPLv1
- Redis is no longer BSD-3 licensed
-
A note from our sponsor - WorkOS
workos.com | 28 Mar 2024
Index
What are some of the best open-source Key-Value projects? This list will help you:
Project | Stars | |
---|---|---|
1 | Redis | 64,235 |
2 | etcd | 46,086 |
3 | MMKV | 16,725 |
4 | tikv | 14,385 |
5 | ArangoDB | 13,312 |
6 | badger | 13,270 |
7 | Apache ZooKeeper | 11,884 |
8 | immudb | 8,456 |
9 | garnet | 6,831 |
10 | buntdb | 4,357 |
11 | rosedb | 4,291 |
12 | dynomite | 4,157 |
13 | Riak | 3,893 |
14 | Hive | 3,854 |
15 | nutsdb | 3,274 |
16 | ImmortalDB | 3,039 |
17 | Olric | 2,992 |
18 | Keyv | 2,458 |
19 | FlashDB | 1,586 |
20 | ejdb | 1,422 |
21 | PumpkinDB | 1,365 |
22 | pogreb | 1,214 |
23 | redix | 1,196 |