dragonfly
Aerospike
Our great sponsors
dragonfly | Aerospike | |
---|---|---|
49 | 15 | |
23,037 | 954 | |
3.7% | 2.6% | |
9.9 | 8.8 | |
3 days ago | 9 days ago | |
C++ | C | |
BSL 1.1 | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
dragonfly
-
Redict is an independent, copyleft fork of Redis
https://github.com/dragonflydb/dragonfly is another option. Not a fork but API-compatible reimplementation.
-
Redis License Changed
Check out DragonflyDB (BSL): https://www.dragonflydb.io/
BSL is not OSI-approved, but it’s a much more reasonable AWS-resistant license. It’s the same license CockroachDB uses, for example.
KeyDB (BSL, acquired by Snapchat) is also an option: https://keydb.dev/
BSL is a much better license, but it’s a gamble on how long KeyDB will be supported. I don’t want to mess around with such a core part of my architecture.
-
Dragonfly Cache Design
If you have not heard about Dragonfly - please check it out. It uses - what I hope - novel and interesting ideas backed up by the research from recent years [1] and [2]. It's meant to fix many problems that exist with Redis today. I have been working on Dragonfly for the last 7 months and it has been one of the more interesting and challenging projects I've ever done!
-
Generating Income from Open Source
I recently ran across the the license for Dragonfly [1] which has some restrictions (rights reserved), but 5 years after the license date the license switches to Apache 2.0. Basically a timed-limited rights reservation. I don't hate it. I might even contribute to such a project for free.
I would consider something like this: When I release code, it's rights reserved for 5 years, then open-source (and this baked into an irrevocable license). Anyone may use the software for non-commercial purposes. Anyone may contribute, those who contribute will be granted permission for commercial use if I deem their contributions significant enough. Anyone may distribute the software under these terms.
If such a model became popular, I have a hard time imagining it could make things any worse. It might even accelerate open-source development. You might say, "but it's not open-source", fair enough, but we can view it as open-source contribution with a delay. For example, if this model became wildely popular this year, and we saw great progress with this model, then come 2028 we would be flooded with new open-source software and ultimately might be better off than it would have been without this model.
(And this whole thing makes me rethink copyright and patents and how much they really contribute to society. Perhaps they should be shortened?)
[1]: https://github.com/dragonflydb/dragonfly/blob/main/LICENSE.m...
-
Dragonfly – The most performant in-memory data store on Earth
2. You are right, I need to shut the fuck up and let self-righteous hn crowd with torches do what they do best - find a weakness, and push it until they get bored and switch to beat another builder. You asked me about my perspectives and priorities? These are my priorities: https://github.com/dragonflydb/dragonfly/graphs/contributors
> Developers do not want to manage a cluster of single cpu processes. Not on their laptops and not in the production. And it's not just about management complexity. See this https://github.com/dragonflydb/dragonfly/issues/1229 and it's just one example. Single cpu - is just not enough for today use-cases.
That may all very well be the case – let us assume it is for the sake of the argument although I have some comments about that as well – but that still means the argument is "Redis is too complex to run on multiple CPUs" and/or "Redis is poor for these workloads" (I didn't investigate that issue in-depth), and not "Redis is unable to do much work with this very powerful AWS instance". There two are very different things. There is no nuance anywhere in the benchmark. A reader might very well believe that this is all the performance they're going to get out of Redis on that machine, which that's clearly not the case.
License is important: https://github.com/dragonflydb/dragonfly/blob/main/LICENSE.m...
Dragonfly Business Source License 1.1
License: BSL 1.1
Licensor: DragonflyDB, Ltd.
Licensed Work: Dragonfly including the software components, or any portion of them, and any modification.
Change Date: March 15, 2028
Change License: Apache License, Version 2.0, as published by the Apache Foundation.
Additional Use Grant: You may make use of the Licensed Work (i) only as part of your own product or service, provided it is not an in-memory data store product or service; and (ii) provided that you do not use, provide, distribute, or make available the Licensed Work as a Service. A “Service” is a commercial offering, product, hosted, or managed service, that allows third parties (other than your own employees and contractors acting on your behalf) to access and/or use the Licensed Work or a substantial set of the features or functionality of the Licensed Work to third parties as a software-as-a-service, platform-as-a-service, infrastructure-as-a-service or other similar services that compete with Licensor products or services.
Nokia was designed as strongest and most affordable phone, yet you use Iphone that costs 1000$. it's not about how it was designed but whether it addresses your current needs. Developers do not want to manage a cluster of single cpu processes. Not on their laptops and not in the production. And it's not just about management complexity. See this https://github.com/dragonflydb/dragonfly/issues/1229 and it's just one example. Single cpu - is just not enough for today use-cases.
-
The first version of Redis, written in Tcl
I think this is relevant... These are 3 OSS databases that can be an alternative to Redis:
- KeyDB: https://github.com/snapchat/keydb
- Dragonfly: https://github.com/dragonflydb/dragonfly
- Skytable: https://github.com/skytable/skytable
I have used keyDB before. The raft consensus makes building an HA Redis easy.
Aerospike
- Ask HN: Why are there no open source NVMe-native key value stores in 2023?
-
Using In-Memory Databases in Data Science
Aerospike is a real-time cloud structured platform with good performance capabilities. This IMDB platform allows enterprises to perform their operations in real time through the hybrid memory and parallelism model.
- System Design: Caching, Content Delivery Networks (CDN) & Proxies.
-
Block and Filesystem side-by-side with K8s and Aerospike
Block storage stores a sequence of bytes in a fixed size block (page) on a storage device. Each block has a unique hash that references the address location of the specified block. Unlike a filesystem, block storage doesn't have the associated metadata such as format-type, owner, date, etc. Also, block storage doesn’t use the conventional storage paths to access data like a filesystem file. This reduction in overhead contributes to improved overall access speeds when using raw block devices. The ability to store bytes in blocks allows applications the flexibility to decide how these blocks are accessed and managed, making block storage an ideal choice for low latency databases such as Aerospike. From a developer's perspective, a block device is simply a large array of bytes, usually with some minimum granularity for reads and writes. In Aerospike this granularity is configured and referred to as the write-block-size. The Aerospike Kubernetes Operator uses the storage infrastructure software inside of Kubernetes and the need for data platforms to use raw block storage becomes ever more important.
-
Aerospike & IoT using MQTT
This example shows how the Aerospike database can be easily and scalably used to store industrial time series data made available by the MQTT ecosystem. Aerospike plus its Community Time Series Client streamlines the storage and retrieval of the data, supporting the ability to both write and read millions of data points per second if required.
-
Building Large-Scale Real-Time JSON Applications
Real-time large-scale JSON applications need reliably fast access to data, high ingest rates, powerful queries, rich document functionality, scalability with no practical limit, always-on operation, and integration with streaming and analytical platforms. They need all this at low cost. The Aerospike Real-time Data Platform provides all this functionality, making it a good choice for building such applications. The Collection Data Types (CDTs) in Aerospike provide powerful support for modeling, organizing, and querying a large JSON document store. Visit the tutorials and code sandbox on the Developer Hub to explore the capabilities of the platform, and play with the Document API and query capabilities for JSON.
- System Design: NoSQL databases
- System Design: Caching
- System Design: The complete course
-
Dragonflydb – A modern replacement for Redis and Memcached
Interesting project. Very similar to KeyDB [1] which also developed a multi-threaded scale-up approach to Redis. It's since been acquired by Snapchat. There's also Aerospike [2] which has developed a lot around low-latency performance.
What are some alternatives?
KeyDB - A Multithreaded Fork of Redis
skytable - Skytable is a modern scalable NoSQL database with BlueQL, designed for performance, scalability and flexibility. Skytable gives you spaces, models, data types, complex collections and more to build powerful experiences
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.
Memcached - memcached development tree
glommio - Glommio is a thread-per-core crate that makes writing highly parallel asynchronous applications in a thread-per-core architecture easier for rustaceans.
webdis - A Redis HTTP interface with JSON output
midi-redis - A toy memory store with great performance
cachegrand - cachegrand - a modern data ingestion, processing and serving platform built for today's hardware
tarantool - Get your data in RAM. Get compute close to data. Enjoy the performance.
neon - Neon: Serverless Postgres. We separated storage and compute to offer autoscaling, branching, and bottomless storage.
yugabyte-db - YugabyteDB - the cloud native distributed SQL database for mission-critical applications.