Apache Cassandra是极高性能、可扩展、分布式NoSQL数据库,使用灵活,简单分区行存储数据模型,可以对商业服务器和跨数据中心进行无单点故障的海量数据存储处理。它最初由Avinash Lakshman(Amazon Dynamo的开发者)和Prashant Malik在Facebook开发的,旨在解决他们的Inbox-search问题,然后在2008年7月正式开源,并自那时以来,由于IBM、Twitter和Rackspace的大力支持,Cassandra一直以惊人的速度发展,2010年2月以来,Cassandra成为Apache顶级项目。
Cassandra放弃广泛应用的Master-Slave设置转而支持点对点集群,这使Cassandra没有单点故障,由于没有master服务器,当面对大量的请求时,会使所有的Slave服务器毫无用处。任何数量的商业服务器集群可以集成到Cassandra集群,虽然这个架构在后台部署更复杂,但是我们用户操作起来很方便。由于不需要区分Master和Slave节点,这将允许你在任何数据中心里可以给任意集群添加任意数量的机器,每个服务器接受来自任何客户机的请求,服务器之间都是平等的。
Cassandra擅长什么快速读写性能允许添加更多的机器可靠的跨数据中心复制
……不需要在数据库层进行ACID事务处理(原子性、一致性、隔离性和持久性)。
Cassandra擅长在线事务:请求需要在短时间内完全执行,否则,用户会感觉到延迟,这种查询需要在毫秒级内执行,而不是数百或数千毫秒。由于Cassandra的多个缓存级别,你的数据可以以令人难以置信的速度处理。由于Cassandra的日志结构存储设计,每次写操作都是快速的,并且每次写操作都提交日志,当停机时间或数据丢失难以接受时,Cassandra是一个极好的选择。
Cassandra在数据管理方面(分析)也非常优秀,当前的版本,MapReduce支持存储数据。MapReduce是谷歌推广的一种算法,它允许跨服务器在大数据集上并行分析查询,这不是实时进行,但它能够处理庞大的数据集搜寻你所需要的信息。因为Cassandra同时提供在线和分析解决方案,你可以使用单一的技术来完成大部分的数据需求,这将有助于开发、QA和运营效率。
Cassandra和OpenStack
现在应该清楚了,随着OpenStack抽象服务器基础设施,以及定义了Cassandra需要的数据中心,简化所有阶段的开发、部署和操作,Cassandra和OpenStack至少在概念上能很好的匹配了。
然而,直到最近,管理OpenStack Cassandra仍是困难的。使用Orchestrator模板可以提供数据库实例,但由最终用户管理正常的安全策略(例如不能从广域网访问数据库),在很大程度上是不切实际的。但是,Trove OpenStack DBaaS解决方案已经出来了,它提供一个API让用户通过in-VM代理进行互动,以及通过定义的管理接口可以进行交互操作。
Cassandra和OpenStack DBaaS
OpenStack DBaaS现在支持Apache Cassandra NoSQL数据库,它的第一版本将包含:
提供CassandraDB作为一个单独的实例支持维护(启动、停止、重启,配置)调整事件
改进后的OpenStack Juno版本将包含:
配置管理备份(nodetool快照+自定义脚本)恢复(自定义脚本)增量备份(Cassandrax2.x.x或以上版本)
结论
Cassandra是高可用性,互联网型的NoSQL数据库,它与那些传统的关系型数据库区别很大。Cassandra和关系数据库之间的差异可以认为是正是它们的优点和缺点,同时,使用NoSQL不排除使用RDBMS——当然使用混合结构也是很常见的事,要根据情况在不同的解决方案中使用相应的数据库。
当初次使用NoSQL,开发人员可能遇到很多新的概念,比如大数据和最终一致性。当从关系和健壮的一致性迁移到NoSQL,最大的转变可能就是为最终一致性构建应用程序。数据建模可能是开发人员需要理解的另一个领域。
Cassandra使用范围广泛,特别适合使用在:
非常大的数据量用户交易量非常大要求数据存储高可靠性一个动态数据模型,数据可能会相对非结构化,或其结构可能随时间改变跨数据中心分布
现在,Apache Cassandra NoSQL数据库服务是OpenStack数据库云服务的一部分。