Apache Cassandra是極高性能、可擴(kuò)展、分布式NoSQL數(shù)據(jù)庫,使用靈活,簡(jiǎn)單分區(qū)行存儲(chǔ)數(shù)據(jù)模型,可以對(duì)商業(yè)服務(wù)器和跨數(shù)據(jù)中心進(jìn)行無單點(diǎn)故障的海量數(shù)據(jù)存儲(chǔ)處理。它最初由Avinash Lakshman(Amazon Dynamo的開發(fā)者)和Prashant Malik在Facebook開發(fā)的,旨在解決他們的Inbox-search問題,然后在2008年7月正式開源,并自那時(shí)以來,由于IBM、Twitter和Rackspace的大力支持,Cassandra一直以驚人的速度發(fā)展,2010年2月以來,Cassandra成為Apache頂級(jí)項(xiàng)目。
Cassandra放棄廣泛應(yīng)用的Master-Slave設(shè)置轉(zhuǎn)而支持點(diǎn)對(duì)點(diǎn)集群,這使Cassandra沒有單點(diǎn)故障,由于沒有master服務(wù)器,當(dāng)面對(duì)大量的請(qǐng)求時(shí),會(huì)使所有的Slave服務(wù)器毫無用處。任何數(shù)量的商業(yè)服務(wù)器集群可以集成到Cassandra集群,雖然這個(gè)架構(gòu)在后臺(tái)部署更復(fù)雜,但是我們用戶操作起來很方便。由于不需要區(qū)分Master和Slave節(jié)點(diǎn),這將允許你在任何數(shù)據(jù)中心里可以給任意集群添加任意數(shù)量的機(jī)器,每個(gè)服務(wù)器接受來自任何客戶機(jī)的請(qǐng)求,服務(wù)器之間都是平等的。
Cassandra擅長(zhǎng)什么快速讀寫性能允許添加更多的機(jī)器可靠的跨數(shù)據(jù)中心復(fù)制
……不需要在數(shù)據(jù)庫層進(jìn)行ACID事務(wù)處理(原子性、一致性、隔離性和持久性)。
Cassandra擅長(zhǎng)在線事務(wù):請(qǐng)求需要在短時(shí)間內(nèi)完全執(zhí)行,否則,用戶會(huì)感覺到延遲,這種查詢需要在毫秒級(jí)內(nèi)執(zhí)行,而不是數(shù)百或數(shù)千毫秒。由于Cassandra的多個(gè)緩存級(jí)別,你的數(shù)據(jù)可以以令人難以置信的速度處理。由于Cassandra的日志結(jié)構(gòu)存儲(chǔ)設(shè)計(jì),每次寫操作都是快速的,并且每次寫操作都提交日志,當(dāng)停機(jī)時(shí)間或數(shù)據(jù)丟失難以接受時(shí),Cassandra是一個(gè)極好的選擇。
Cassandra在數(shù)據(jù)管理方面(分析)也非常優(yōu)秀,當(dāng)前的版本,MapReduce支持存儲(chǔ)數(shù)據(jù)。MapReduce是谷歌推廣的一種算法,它允許跨服務(wù)器在大數(shù)據(jù)集上并行分析查詢,這不是實(shí)時(shí)進(jìn)行,但它能夠處理龐大的數(shù)據(jù)集搜尋你所需要的信息。因?yàn)镃assandra同時(shí)提供在線和分析解決方案,你可以使用單一的技術(shù)來完成大部分的數(shù)據(jù)需求,這將有助于開發(fā)、QA和運(yùn)營(yíng)效率。
Cassandra和OpenStack
現(xiàn)在應(yīng)該清楚了,隨著OpenStack抽象服務(wù)器基礎(chǔ)設(shè)施,以及定義了Cassandra需要的數(shù)據(jù)中心,簡(jiǎn)化所有階段的開發(fā)、部署和操作,Cassandra和OpenStack至少在概念上能很好的匹配了。
然而,直到最近,管理OpenStack Cassandra仍是困難的。使用Orchestrator模板可以提供數(shù)據(jù)庫實(shí)例,但由最終用戶管理正常的安全策略(例如不能從廣域網(wǎng)訪問數(shù)據(jù)庫),在很大程度上是不切實(shí)際的。但是,Trove OpenStack DBaaS解決方案已經(jīng)出來了,它提供一個(gè)API讓用戶通過in-VM代理進(jìn)行互動(dòng),以及通過定義的管理接口可以進(jìn)行交互操作。
Cassandra和OpenStack DBaaS
OpenStack DBaaS現(xiàn)在支持Apache Cassandra NoSQL數(shù)據(jù)庫,它的第一版本將包含:
提供CassandraDB作為一個(gè)單獨(dú)的實(shí)例支持維護(hù)(啟動(dòng)、停止、重啟,配置)調(diào)整事件
改進(jìn)后的OpenStack Juno版本將包含:
配置管理備份(nodetool快照+自定義腳本)恢復(fù)(自定義腳本)增量備份(Cassandrax2.x.x或以上版本)
結(jié)論
Cassandra是高可用性,互聯(lián)網(wǎng)型的NoSQL數(shù)據(jù)庫,它與那些傳統(tǒng)的關(guān)系型數(shù)據(jù)庫區(qū)別很大。Cassandra和關(guān)系數(shù)據(jù)庫之間的差異可以認(rèn)為是正是它們的優(yōu)點(diǎn)和缺點(diǎn),同時(shí),使用NoSQL不排除使用RDBMS——當(dāng)然使用混合結(jié)構(gòu)也是很常見的事,要根據(jù)情況在不同的解決方案中使用相應(yīng)的數(shù)據(jù)庫。
當(dāng)初次使用NoSQL,開發(fā)人員可能遇到很多新的概念,比如大數(shù)據(jù)和最終一致性。當(dāng)從關(guān)系和健壯的一致性遷移到NoSQL,最大的轉(zhuǎn)變可能就是為最終一致性構(gòu)建應(yīng)用程序。數(shù)據(jù)建模可能是開發(fā)人員需要理解的另一個(gè)領(lǐng)域。
Cassandra使用范圍廣泛,特別適合使用在:
非常大的數(shù)據(jù)量用戶交易量非常大要求數(shù)據(jù)存儲(chǔ)高可靠性一個(gè)動(dòng)態(tài)數(shù)據(jù)模型,數(shù)據(jù)可能會(huì)相對(duì)非結(jié)構(gòu)化,或其結(jié)構(gòu)可能隨時(shí)間改變跨數(shù)據(jù)中心分布
現(xiàn)在,Apache Cassandra NoSQL數(shù)據(jù)庫服務(wù)是OpenStack數(shù)據(jù)庫云服務(wù)的一部分。