dragonfly VS vitess

Compare dragonfly vs vitess and see what are their differences.

dragonfly

A modern replacement for Redis and Memcached (by dragonflydb)

vitess

Vitess is a database clustering system for horizontal scaling of MySQL. (by vitessio)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
dragonfly vitess
49 59
23,037 17,715
3.7% 1.7%
9.9 9.9
3 days ago about 17 hours ago
C++ Go
BSL 1.1 Apache License 2.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
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

Posts with mentions or reviews of dragonfly. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-22.
  • Redict is an independent, copyleft fork of Redis
    3 projects | news.ycombinator.com | 22 Mar 2024
    https://github.com/dragonflydb/dragonfly is another option. Not a fork but API-compatible reimplementation.
  • Redis License Changed
    11 projects | news.ycombinator.com | 20 Mar 2024
    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.

    11 projects | news.ycombinator.com | 20 Mar 2024
  • Dragonfly Cache Design
    2 projects | dev.to | 18 Jul 2023
    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
    5 projects | news.ycombinator.com | 15 Jun 2023
    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
    4 projects | news.ycombinator.com | 21 May 2023
    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
    4 projects | news.ycombinator.com | 21 May 2023
    > 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.

    4 projects | news.ycombinator.com | 21 May 2023
    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.

    4 projects | news.ycombinator.com | 21 May 2023
    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
    6 projects | news.ycombinator.com | 18 May 2023
    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.

vitess

Posts with mentions or reviews of vitess. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-11-07.
  • Vitess 18
    2 projects | news.ycombinator.com | 7 Nov 2023
    Why would it be a Google project? https://github.com/vitessio/vitess
  • PlanetScale Scaler Pro
    3 projects | news.ycombinator.com | 6 Jul 2023
    This is great news. I strolled around https://github.com/vitessio/vitess/issues/12967.

    Are there any public discussions of more trade-offs vitess has to make to enable fks?

  • Scaling Databases at Activision [pdf]
    3 projects | news.ycombinator.com | 21 Apr 2023
    3 projects | news.ycombinator.com | 21 Apr 2023
  • Want to avoid MySQL but find PlanetScale really appealing
    4 projects | /r/PostgreSQL | 25 Mar 2023
    A lot of this is possible thanks to the magic of Vitess.
  • YouTube System Design
    2 projects | /r/softwarearchitecture | 5 Feb 2023
    ### YouTube The popular implementations of an on-demand video streaming service are the following: - YouTube - Netflix - Vimeo - TikTok --- #### Requirements - The user (**client**) can upload video files - The user can stream video content - The user can search for videos based on the video title --- #### Data storage ##### Database schema - The primary entities are the videos, the users, and the comments tables - The relationship between the users and the videos is 1-to-many - The relationship between the users and the comments table is 1-to-many - The relationship between the videos and the comments table is 1-to-many --- ##### Type of data store - The wide-column data store ([LSM](https://en.wikipedia.org/wiki/Log-structured\_merge-tree) tree-based) such as [Apache HBase](https://hbase.apache.org/) is used to persist thumbnail images for clumping the files together, fault-tolerance, and replication - A cache server such as Redis is used to store the metadata of popular video content - Message queue such as Apache Kafka is used for the asynchronous processing (encoding) of videos - A relational database such as MySQL stores the metadata of the users and the videos - The video files are stored in a managed object storage such as AWS S3 - Lucene-based inverted-index data store such as Apache Solr is used to persist the video index data to provide search functionality --- #### High-level design - Popular video content is streamed from CDN - Video encoding (**transcoding**) is the process of converting a video format to other formats (MPEG, HLS) to provide the best stream possible on multiple devices and bandwidth - A message queue can be configured between services for parallelism and improved fault tolerance Codecs (H.264, VP9, HEVC) are compression and decompression algorithms used to reduce video file size while preserving video quality - The popular video streaming protocols (data transfer standard) are **MPEG-DASH** (Moving Pictures Experts Group - Dynamic Adaptive Streaming over HTTP), **Apple HLS** (HTTP Live Streaming), **Microsoft Smooth Streaming**, and **Adobe HDS** (HTTP Dynamic Streaming) --- #### Video upload workflow 1. The user (**client**) executes a DNS query to identify the server 2. The client makes an HTTP connection to the load balancer 3. The video upload requests are rate limited to prevent malicious clients 4. The load balancer delegates the client's request to an API server (**web server**) with free capacity 5. The web server delegates the client's request to an app server that handles the API endpoint 6. The ID of the uploaded video is stored on the message queue for asynchronous processing of the video file 7. The title and description (**metadata**) of the video are stored in the metadata database 8. The app server queries the object store service to generate a pre-signed URL for storing the raw video file 9. The client uploads the raw video file directly to the object store using the pre-signed URL to save the system network bandwidth 10. The transcoding servers query the message queue using the publish-subscribe pattern to get notified on uploaded videos 11. The transcoding server fetches the raw video file by querying the raw object store 12. The transcoding server transcodes the raw video file into multiple codecs and stores the transcoded content on the transcoded object store 13. The thumbnail server generates on average five thumbnail images for each video file and stores the generated images on the thumbnail store 14. The transcoding server persists the ID of the transcoded video on the message queue for further processing 15. The upload handler service queries the message queue through the publish-subscribe pattern to get notified on transcoded video files 16. The upload handler service updates the metadata database with metadata of transcoded video files 17. The upload handler service queries the notification service to notify the client of the video processing status 18. The database can be partitioned through [consistent hashing](https://systemdesign.one/consistent-hashing-explained/) (key = user ID or video ID) 19. [Block matching](https://en.wikipedia.org/wiki/Block-matching\_algorithm) or [Phase correlation](https://en.wikipedia.org/wiki/Phase\_correlation) algorithms can be used to detect the duplicate video content 20. The web server (API server) must be kept stateless for scaling out through replication 21. The video file is stored in multiple resolutions and formats in order to support multiple devices and bandwidth 22. The video can be split into smaller chunks by the client before upload to support the resume of broken uploads 23. Watermarking and encryption can be used to protect video content 24. The data centers are added to improve latency and data recovery at the expense of increased maintenance workflows 25. Dead letter queue can be used to improve fault tolerance and error handling 26. Chaos engineering is used to identify the failures on networks, servers, and applications 27. Load testing and chaos engineering are used to improve fault tolerance 28. [RAID](https://en.wikipedia.org/wiki/RAID) configuration improves the hardware throughput 29. The data store is partitioned to spread the writes and reads at the expense of difficult joins, transactions, and fat client 30. Federation and sharding are used to scale out the database 31. The write requests are redirected to the leader and the read requests are redirected to the followers of the database 32. [Vitess](https://vitess.io/) is a storage middleware for scaling out MySQL 33. Vitess redirects the read requests that require fresh data to the leader (For example, update user profile operation) 34. Vitess uses a lock server (Apache Zookeeper) for automatic sharding and leader election on the database layer 35. Vitess supports RPC-based joins, indexing, and transactions on SQL database 36. Vitess allows to offload of partitioning logic from the application and improves database queries by caching
  • Typesafe Database Queries on the Edge
    9 projects | dev.to | 12 Nov 2022
    PlanetScale is a serverless MySQL database provider which is based on Vitess. You get the scaling benefits of Vitess without the need to manage it yourself.
  • YouTube confirms that it has removed the “sort by oldest/newest” option
    10 projects | news.ycombinator.com | 11 Nov 2022
  • Ask HN: Real-world anecdotes of MySQL at scale?
    2 projects | news.ycombinator.com | 27 Sep 2022
    Are you referring to distributed MySQL such as Vitess? It is the backend for Slack and GitHub; also was the backend for YouTube in the past.

    https://vitess.io/

    2 projects | news.ycombinator.com | 27 Sep 2022
    There’s Vitess that’s been mentioned on HN a lot recently. https://vitess.io/

What are some alternatives?

When comparing dragonfly and vitess you can also consider the following projects:

tidb - TiDB is an open-source, cloud-native, distributed, MySQL-Compatible database for elastic scale and real-time analytics. Try AI-powered Chat2Query free at : https://tidbcloud.com/free-trial

supabase - The open source Firebase alternative.

cockroach - CockroachDB - the open source, cloud-native distributed SQL database.

KeyDB - A Multithreaded Fork of Redis

citus - Distributed PostgreSQL as an extension

go-mysql-elasticsearch - Sync MySQL data into elasticsearch

kingshard - A high-performance MySQL proxy

Tile38 - Real-time Geospatial and Geofencing

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

migrate - Database migrations. CLI and Golang library.

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