作为最近一段时间对分布式数据存储数据库cassandra的学习总结,本着共享的意愿发布在这里,和大家共同学习,不对的地方希望大家积极指正。
本次学习针对的cassandra版本是2.0,主要的学习资源来自
- Amazon发表的关于数据库Dynamo的论文:Dynamo: amazon's highly available keyvalue store, 2007
- Google的bigtable:Bigtable: A distributed storage system for structured data, 2006(cassandra主要是借鉴bigtable的数据存储和Dynamo的架构)
- facebook发表的关于cassandra的论文:Cassandra - A Decentralized Structured Storage System
- Cassandra - The Definitive Guide
- dataStax在线文档,是我目前了解的对cassandra介绍最丰富的在线文档,非常感谢dataStax公司的共享精神。
学习一门新技术或者技术框架,我觉得并不容易,有几个原因:
- 条理:每个技术点之间的因果关系需要很清楚,便于记忆,也便于查找
- 完整:是否涵盖了关于这门技术的所有核心技术点
- 深度:达到怎样一个深度?其实这跟你的原始诉求有关系,你希望如何使用它?
- 关联:现代的技术之间的关联性太大了,看看上面列出的论文就知道了
基于以上,我决定尝试用【问题引导】的方式去组织自己的这个系列的学习总结,而不是顺着资料的大纲生硬的翻译和记述。
通过下面的问答引导出后面一篇学习总结:
Q:为什么我们需要分布式存储,原来的单机服务器加备份策略怎么不行了呢?
A:这个问题大家都懂的。。。
Q:好吧,我们需要分担负载,一个super hero的时代过去了。那多服务器集群怎样颠覆了传统数据库ACID的三观呢?
A:不知道啥是ACID,翻出你的大学教材复习一下,再去网上看看CAP理论。
Q:面对CAP,cassandra是如何选择的,又是如何做到的?
A:他选择了AP,但也没有撇下C,好男人。。。如何做到的,看下一篇《cassandra的架构——Data distribution and replication(分布式存储和复制)》