Cassandra vs ScyllaDB

Cassandra

Cassandra 项目诞生于 Facebook,后来团队有人跳到 Amazon 做了另外一个 NoSQL 数据库 DynamoDB。
最开始由两个facebook的员工最开始开发出来的,其中一个还直接参与了Amazon的Dynamo的开发。

Dynamo论文发表于2007年,用于shopping cart
Cassandra在2008年被facebook开源,用于inbox search
Uber现在有全球最大的Cassandra data center

Features

  • CQL(Cassandra Query Language)
  • 1,000 node clusters
  • multi-data center
  • out-of-the-box replication
  • ecosystem with Spark

Internals

  • LSM Tree
  • Gossip P2P
  • DHT
  • consistency same as DynamoDB
    • ONE
    • QUORUM
    • ALL
    • read repair
  • Thrift

ScyllaDB

KVM核心人员用C++写的Cassandra(Java) clone,单机性能提高了10倍,主要原因是:

  • DPDK, bypass kernel
  • O_DIRECT IO, bypass pagecache, cache由scylla自己管理
    • pagecahce的格式必须是文件的格式(sstable),而app level cache更有效,更terse
    • compaction的时候,pagecache讲是个累赘,它可能造成很多热点数据的淘汰
  • 把一个node看做是多个cpu core组成的cluster, share nothing
  • sharding at the cpu core instead of node
    更充分利用多核,减少contention,充分利用cpu cache, NUMA friendly
  • 在需要core间交换数据时,使用explicit message passing
  • avoid JVM GC

References

https://db-engines.com/en/ranking
https://github.com/scylladb/scylla
http://www.scylladb.com/
http://www.seastar-project.org/
https://www.reddit.com/r/programming/comments/3lzz56/scylladb_cassandra_rewritten_in_c_claims_to_be_up/
https://news.ycombinator.com/item?id=10262719

Share Comments