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數據庫云服務的一部分。