7 ms·
Benchmark results: Cassandra 4.0, 3.11, Scylla 4.4 [video]
- saberience 5y agoCan someone summarise these in a more digestible format than a Youtube video?
- spullara 5y agoScyllaDB is faster than Cassandra by a lot.
- willvarfar 5y agoHaven’t watched the video either, so asking perhaps a naive question: Why is it faster? Is it algorithmic, or some neat trick, or just a much more efficient implementation? And are they closely equivalent? Would you use one or the other for the same thing, or do they make different CAP promises?
- kreetx 5y agoIt appears to be a C++ rewrite of Cassandra (written in Java).
- hiyer 5y ago> Why is it faster? Is it algorithmic, or some neat trick, or just a much more efficient implementation? Scylla is written in C++ (versus Java for Cassandra) and uses the high-performance Seastar[0] framework. > And are they closely equivalent? Would you use one or the other for the same thing, or do they make different CAP promises? Scylla claims to be a drop-in replacement for Cassandra. 0. http://seastar.io/ http://seastar.io/
- nivertech 5y agoBTW, there is a word play here: seastar -> sea star -> C* -> Cassandra ;)
- jandrewrogers 5y agoThe use of C++ enables a couple architectural optimizations that would be difficult or impractical in Java, aside from C++ generally producing significantly faster runtimes. The important difference is that C++ is a systems language -- you could replace C++ with Rust, Zig, etc -- whereas Java is not. Scylla has a highly optimized low-level I/O path that largely bypasses high-level OS APIs and kernel services that Cassandra and other open source databases tend to use. This will typically generate an integer factor improvement in I/O performance if implemented well and makes a big difference for the kinds of write-heavy workloads Cassandra was built for. It requires taking strict control of low-level memory access and behavior, which (for better and worse) is the default case in C++. This code is intrinsically non-portable. Additionally, there are some important classes of throughput optimization that are incompatible with garbage collection. In principle you can abuse Java to effect these optimizations but it is much easier to implement these optimizations in languages that don't have a garbage collector. If absolute performance is the objective, like Scylla, it is easier to do the implementation in a language that won't fight your intent every step of the way. tl;dr: The performance isn't so much that it is written in C++ but that C++ makes critical optimizations relatively straightforward and economic to implement.
- gunnarmorling 5y ago> there are some important classes of throughput optimization that are incompatible with garbage collection Can you share some more details about these optimizations? I.e. what they are and why GC tends to go against them?
- _benedict 5y agoIn part it's also simply a demonstration of different priorities. Scylla's USP is performance, so a lot of elbow grease is spent there. The Apache Cassandra community is focused primarily on operating at scale, as that's its USP. Performance is adequate for Cassandra, so the community has (for several years) primarily focused elsewhere. It will be a priority again in future, but in the meantime with many huge scale users out there the community has focused on guaranteeing correctness and stability at scale. For example, the Harry[1] toolkit for validating huge databases, and an adversarial cluster simulator[2] for exposing distributed and other complex bugs. Also a huge amount of behind-the-scenes work that isn't so easy to call out. The community is now focusing on expanding the utility of the database for these use cases. For example the recently proposed enhancement to bring state-of-the-art general purpose transactions[3] to Apache Cassandra. [1] https://github.com/apache/cassandra-harry https://github.com/apache/cassandra-harry [2] https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-10%3A+Cluster+and+Code+Simulations https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-10... [3] https://cwiki.apache.org/confluence/download/attachments/188744725/Accord.pdf https://cwiki.apache.org/confluence/download/attachments/188... [edit] disclaimer: I’m an Apache Cassandra contributor involved with some of the above work.
- wolf550e 5y agoThis is the summary: https://youtu.be/hrA-Exd_qI4?t=3221 https://youtu.be/hrA-Exd_qI4?t=3221
- staticassertion 5y agohttps://www.scylladb.com/2021/08/24/apache-cassandra-4-0-vs-scylla-4-4-comparing-performance/ https://www.scylladb.com/2021/08/24/apache-cassandra-4-0-vs-... I suspect this talk is based on this post.
- kreetx 5y agoTo a someone not versed in NoSQL: what are Cassandra and Scylla like to use? Would you use it instead of say, Mongo, when you have much more data?
- dreyfan 5y agoThey’re for teams that still refuse a proper RDBMS but desire an Apache-level of infrastructure complexity.
- zinclozenge 5y agoI love this comment, but presumably there's a need for databases that are well suited for write heavy workloads. Also there's no great story for starting out with an RDBMS and then scaling out. Right now if you're with MySQL you have some options to scale out with read replicas, and then eventually replicate to a TiDB cluster. PostgreSQL I guess there's cockroachdb, but it's kind of meh.
- skyde 5y agoI believe Cloudflare usage of PostgreSQL is "write heavy" and is a RDBMS that scaled out very well for them. They are using CitusDB but it's still RDBMS and support most PostgreSQL SQL query without the need to rewrite your query or change your schema.
- zinclozenge 5y agoThat's true, I forgot about Citus.
- skyde 5y agoIn fact Youtube for a long time was running on MySQL with a tiny service called "vitess" on top of it to handle (Sharding/partitioning) automatically. I dont know if they are still using Vitess or migrated to Google other relational Database "Spanner"
- staticassertion 5y agohttps://www.scylladb.com/2021/08/24/apache-cassandra-4-0-vs-scylla-4-4-comparing-performance/ https://www.scylladb.com/2021/08/24/apache-cassandra-4-0-vs-... I suspect this talk is a follow up to this blog post, which may be preferable for many.
- jakearmitage 5y agoSeastar Framework seems to be the star behind all this. Anyone using that for other purposes?
- jjirsa 5y agoVectorized/RedPanda for Kafka compatible service, at least. RedPanda seems to be a better starting point to be honest - a lot of the market share for Cassandra doesn't actually need the extra tps of Scylla. Some customers do, but many many many do not.
- enedil 5y agoScylla is not only about throughput. One of the values of Scylla is its reduced latencies or ease of maintenance. Overview of reasons: https://www.scylladb.com/scylla-vs-cassandra https://www.scylladb.com/scylla-vs-cassandra Disclosure: I'm an engineer at ScyllaDB.
- jjirsa 5y agoThe "reduced latencies" really reduces down to performance, where tps was a first order proxy for performance. The ease of maintenance, similarly, is sold as easier due to reduced node count, which is perhaps an extension of performance but probably misunderstands (or ignores) that most people running large cassandra clusters have tooling that parallelizes most maintenance anyway, so the reduction in effort is sorta not that important in real life (if anything, having more machines gives you better blast radius behavior, consolidation onto fewer exposes you to larger percentages of loss/failure when there's inevitably a problem with the fewer, larger machines). The real comparison, though, is missing in that link, because the real comparison is not performance. It's license. Nobody is running AGPL in prod unless they have zero IP worth protecting, so it's ultimately comparing OSS to proprietary. (And similar disclosure: cassandra committer)
- thekozmo 5y agoHmm, AGPL is proprietary? This isn't aligned with the OSI.
- mixedCase 5y agoThreadly reminder that Scylla is licensed under the Affero GPL and depending on your needs may not qualify as a competitor to Apache Cassandra.