坚信科学,分享技术

>>>尝试更加利于阅读的2014版科学院,以后都在新版上写。

riak源码阅读手记 与Cassandra相比

riak

riak源码阅读手记一 初出茅庐 项目入口

http://www.54chen.com/_linux_/riak-source.html

riak源码阅读手记二 左右开弓 启动

http://www.54chen.com/_linux_/riak-cource-code.html

riak源码阅读手记 运行安装

http://www.54chen.com/_linux_/riak-source-install-run.html

一些常用的指令:

http://wiki.basho.com/Command-Line-Tools.html#riak-admin


实现上:

1)虽然二者都是dynamo的实现,具体方法还是不一样的,riak更忠于dynamo的原文档,实现了所有文档提到的关键点。同时还增加了map reduce和links等功能。
2)Cassandra略去了一些文档里的关键点:向量时钟、按照key范围的大分区等。增加了一些方法如:范围查询、固定分区。

扩展:
1) riak提供了bin/riak join这样的命令来加入新的节点,基本完全按照dynamo文档所说的一样来实现了,从多个节点去获取原来的负载和数据回来,每个节点的压力都可以得到平衡。
2)相比之下,Cassandra集群的节点需要计算数据的一个范围。当加入节点时,Cassandra的策略是分出来相应分区上一半的范围去新节点。这点在一个Cassandra集群需要加节点时会很痛苦,可能会存在两个节点之间大规模的数据转移。

查询和分布:
1)riak有map reduce。
2)Cassandra可以接hadoop达到M/R的效果。

写冲突检查:
1)riak使用了向量时钟。
2)Cassandra使用了timestamp。如果时间有问题,可能会丢。

数据模型:
1)riak有bucket的概念,每个buckect可动态建立,每个buckect的数据模型都不一样。
2)Cassandra的keyspace与列簇都是依赖xml定义的,如果要修改,需要重启。

API:
1)riak提供了http与protocol buffers两种
2)Cassandra使用thrift

可配置的存储:
1)riak默认是bitcast存储,还有innodb,开发者很勤快,甚至还有leveldb。
2)Cassandra一直就是SSTable。


原创文章如转载,请注明:转载自五四陈科学院[http://www.54chen.com]
本文链接: http://www.54chen.com/architecture/riak-vs-cassandra.html

This entry was posted in 架构研究 and tagged , . Bookmark the permalink.

2 Responses to “riak源码阅读手记 与Cassandra相比”

  1. jetty 说:

    “Cassandra集群需要加节点时会很痛苦”为什么痛苦,难道riak不数据迁移。。。?

Leave a Reply