概述
Apache Cassandra 是一个支持高扩展的开源NoSQL数据库。Cassandra非常适合在云、多数据中心存储结构化、非结构化的数据。Cassandra 支持高可用性,线性扩展,支持单点故障。强大的动态数据模型支持为开发提供了灵活性和快速性。
根据本人使用经验,选用Cassandra的作为大规模数据存储理由有4点:
1. 提供了水平扩展的能力,即性能提升可以通过简单的加机器来实现,天生为大规模数据存储服务
2. 自动分片,不需要进行分库分表。数据增长由小到大,无需额外操作
Cassandra 为集群内的节点提供跨节点的自动数据分布。数据在集群各个节点的分布是是透明的,不需要开发者或者DBA做任何事情。
3. 查询模式严格,单表只能应用于某一类查询,在DB这一层就做了,这样即使数据量小的时候,开发也不会写出浪查询,导致后期数据量大了以后,开发层还需要大规模更改查询语句(比如关系型的分库分表,Mongo的sharding模式)
4. 良好的写入性能
应用场景
cassandra 试用的场景主要有5个方面
1.物联网
物联网应用中有大量的传感器和设备,需要采集环境信息,然后发送给上位机。这些信息都是时间顺序排列的,cassandra非常适合用来存储这些信息。
2.个性化
用户画像,使用cassandra接收,分析。可以提供快速,低成本,可扩展的用户体验
3.message
最早facebook就是使用cassandra来存储message(不过后期好像替换掉了)
4.欺骗检测
cassandra可以是欺骗分析模式变得更快速,精确,高效
5.列表
产品目录,电影评分,cassandra可以将用户选中的诸多项目作为一个集合存储起来
目前apple拥有最大的cassandra cluster.超过75,000nodes,存储数据达到10PB.不过apple没有关于他们使用cassandra的用途的相关报告。此外netflix 也有2500 nodes的cassandra cluster,netflix 是一家流媒体公司,使用cassandra来储存用户的访问痕迹,以及log数据,能够处理10M transactions/s的并发量。netflix在cassandra的实践过程中,遇到过很多的坑,也诞生了很多优秀的解决方案,他们都通过blog,code等方式开源了一部分出来。是后续cassandra学习者不可多得的参考资料。
国内cassandra最早的实践者应该是360,用在搜索存储业务上,超过了1000Nodes.然后还有宜搜一家创业公司,做手机端的搜索,规模也有250Nodes.
学习资源
中文
Cassandra3.x 官方文档翻译:
https://www.gitbook.com/book/fs1360472174/cassandra-document/details
Cassandra 博客专栏:http://blog.csdn.net/column/details/cassandra.html
英文
下载: http://cassandra.apache.org/download/
源码: https://github.com/apache/cassandra
JIRA: https://issues.apache.org/jira/browse/CASSANDRA
分享博客: http://www.planetcassandra.org/blog/
会议: http://www.planetcassandra.org/join-your-local-meetup/
客户端Driver: https://github.com/datastax
可视化工具:Dbeaver Enterprise 4.0.5以及之前版本免费
https://dbeaver.jkiss.org/files/4.0.5/
DevCenter:https://academy.datastax.com/quick-downloads#devCenter
使用Cassandra的公司: http://www.planetcassandra.org/companies/
领取专属 10元无门槛券
私享最新 技术干货