mysql集群赶上cassandra?

Gar*_*hl 6 mysql cluster-computing cassandra

我最近一直在为我们即将推出的相当大的数据库寻找nosql解决方案,并发现cassandra很好,但网上有关cassandra新版本的资源非常少,而且大多数博客和文章与0.6版本有关,而现在它也有实施了对hadoop和hive的支持.另一方面,mysql集群版本也专门用于使用商用服务器在水平扩展设置上运行.

由于我们已经习惯了关系模型多年并且转向cassandra需要反编译大脑,而产品仍然不是很成熟,社区也不是那么大,以便快速响应我检查过的任何特定问题datastax(在专业支持上)提供者)网站及其论坛已经死了.

那么,如何比较mysql cluster vs cassandra,同时将关系和非关系比较放在一边?

尽管cassandra的架构较少,但它仍然提供了很多表格特征,如超级列和子列,因此可以从多个列值中搜索记录.

我也尽力了解cassandra如何实际存储更新的查询,例如在编辑子列时添加一行,然后添加相当大的数据块,然后如何实际存储该记录以及如何快速访问该记录?因为在mysql列中分配了固定长度所以它不是一个大问题.

The*_*ong 7

为了回答你的物理存储问题,使Cassandra快速写入的关键特性是它们只是追加.也就是说,Cassandra只将顺序块写入磁盘; 在写入期间,它不需要对随机磁盘位置进行任何慢速搜索.

更新列时,会发生两件事:将写入附加到提交日志(用于故障恢复),并更新内存中的Memtable.一旦Memtable已满,它将作为新的SSTable刷新到磁盘.因此,数据的长度无关紧要,因为您并没有尝试将其装入固定长度的磁盘结构中.

SSTables是只读的 - 您永远不会返回并覆盖更新中的旧值,您只需编写新值.在阅读中,Cassandra首先在Memtable中查找密钥.如果找不到它,Cassandra会按照从最新到最旧的顺序扫描SSTable,并在找到密钥时停止.这为您提供了最新的价值.

还有一些优化.每个SSTable都有一个关联的Bloom过滤器用于其密钥,这是一个紧凑的概率索引,可以产生误报,但绝不会出现假阴性.如果密钥不在Bloom过滤器中,您可以安全地跳过该SSTable,因为它保证不包含密钥,尽管您可能偶尔会读取您不需要的SSTable.

当您获得太多SSTable时,它们会在称为压缩的过程中合并为一个更大的SSTable .从本质上讲,这对SSTables进行了大规模的合并排序.这使得Cassandra可以回收已覆盖或删除的值的空间,并对遍布多个SSTable的行进行碎片整理.

有关详细信息,请参阅http://www.mikeperham.com/2010/03/13/cassandra-internals-writing/http://wiki.apache.org/cassandra/MemtableSSTable.


jbe*_*lis 6

以下是我怀疑Cassandra有优势的一些方面:

  • 对大于内存的数据集的出色支持
  • 复制:Cassandra支持任意数量的完全分布式副本,而不仅仅是分区复制副本(因此,您不必在Cassandra中将您的副本计数整除的许多节点,并且在主要故障转移周围没有任何角落情况需要处理),为多个数据中心提供一流的支持,支持同步复制以及异步(如果您关注完全持久性,则非常重要),以及强大的自我修复(提示切换,读取修复,反熵)确保你永远不必吹掉备份副本并从头开始重建它
  • 在ALTER TABLE,索引创建等过程中没有锁定
  • 基本上更简单且不易出错的管理(比较http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-online-add-node.htmlhttp://wiki.apache.org/ cassandra/Operations#Bootstrap).特别是,我会提醒您注意在Cassandra场景中需要重新启动多少客户端或其他节点:无.

为了详细说明最后一点,大多数实际上没有在多节点集群上运行Cassandra的人,并没有意识到Cassandra是如何为此设计的.有两分钟的味道,请参阅Jake Luciani的演示.


小智 3

免责声明;我是 MySQL Cluster 产品团队的一员

如果您正在寻找 Cluster,那么值得从最新的 7.2 开发版本开始,其中包括显着增强JOIN性能的新功能,以及绕过 SQL 层的新 memcached 接口; http://dev.mysql.com/tech-resources/articles/mysql-cluster-labs-dev-milestone-release.html

如果您已经熟悉 MySQL,那么以下文档重点介绍了 InnoDB 和当前 GA 7.1 版本之间的差异: http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-ndb-innodb-workloads .html

虽然这些不提供与 Cassandra 的直接比较,但它们至少提供了有关 Cluster 的最新信息,您可以从中进行任何比较。