關于Apache Cassandra
Apache Cassandra?是一個大規模的可伸縮的開源NoSQL數據庫。Cassandra在管理海量結構化、半結構化和非結構化的在數據中心或者云端中的數據時表現非常優秀。Cassandra在不同的服務器之中提供持續有效,線性擴展和操作簡單的服務,沒有單點故障,并且提供一個強大的動態數據模型和最大程度的靈活性以及最快的響應時間。
Cassandra是如何工作的?
Cassandra的自動擴展架構意味著它可以處理PB級的信息和上千的用戶或者操作并發。
- Cassandra是一個相互分離的行存儲數據庫
Cassandra的架構允許任何授權用戶去連接任何一個節點在不同的數據中心中,并且使用CQL語言進行訪問。為了方便使用,CQL使用和SQL相同的語法。通常最基本的和Cassandra進行交互的方式是使用CQL shell,
cqlsh
。通過使cqlsh,你可以創建keyspaces
和tables
,插入一個表或者是查詢一個表等等操作。如果你更傾向于使用圖形化的工具,你可以使用DataStax DevCenter。對于在生產中使用Cassandra,DataStax提供了一些驅動來支持CQL語句從客戶端到集群和后端。
- 自動數據分發
Cassandra提供自動的數據分發在所有加入一個環或者數據庫集群的節點。沒有任何需要管理員或者程序員需要配置或者編碼的地方,因為數據在節點中的分發是透明的對于用戶來說。
- 自帶和定制的復制
Cassandra也提供自帶的或者是定制的復制機制,通過存儲冗余的數據副本在所有加入Cassadra環的節點中。這就意味著如何集群中任何一個節點出現宕機,一個或者多個數據的副本將依然有效的存在于其他機器上。復制可以配置成從一個數據中心到多個數據中心或者是多個不同的云端中。
- 線性擴展
Cassandra提供線性擴展,因此用戶可以很方便的在線添加新的節點。例如,如果兩個節點能夠處理每秒10萬個事務,那么4個節點將能夠支持每秒20萬個事務而8個節點將能夠處理每秒40萬個事務。
QQ截圖20160418153629.png
Cassandra和關系型數據庫有什么不同?
通過端到端的通信,Cassadra被設計成分布式數據庫的一部分。作為最佳實踐,一條查詢最好僅限一個表。數據被反向格式化來完成查詢。由于這個原因,Cassandra中并不存在多個表中的JOINS
查詢這個概念,盡管客戶端的連接查詢可以使用在應用中。
什么是NoSQL
通常的解釋是不僅僅是SQL
,這就意味著數據庫使用了一個和關系型數據庫不同的存儲方式。NoSQL有很多不同的類型,因此一個直觀的比較使用人數最多的類型的數據庫并沒有太大意義。當今數據庫管理員需要熟悉多種不同的數據庫,并且能夠了解如何使用不同的關系型和非關系型數據庫。
什么是CQL
Cassandra Query Language
是Cassandra數據庫管理系統的主要接口。使用CQL和使用SQL語句一樣的簡單。CQL和SQL使用了一些想聽的抽象想法在設計表機構的列和行的時候。兩者的主要區別是Cassandra不支持連接查詢和子查詢。但是,Cassandra強調不規則數據結構通過使用CQL的特性像集合和指定在集群中的模式級別。
CQL是最推薦使用的和Cassandra交互的方式。CQL新版在性能和可讀性方面都優于老版。
CQL文檔包括數據模型會話,例子和命令參考。
我如何和Cassandra進行交互?
使用CQL shell是最基本的訪問方式。通過使用cqlsh,你可以創建keyspace和tables
,插入和查詢表格等等。如果你更傾向于使用圖形化的工具,你可以使用DataStax Dev Center。對于在生產中使用Cassandra,DataStax提供了一些驅動來支持CQL語句從客戶端到集群和后端。
我該怎樣將數據從Cassandra遷入或者遷出
Cassandra自動安裝了nodetool,這是一個很有用的命令行管理工具。這個工具可以進行壓力和性能測試,cassandra-stress也是默認被安裝的工具之一。
我需要怎樣的硬件或者云服務環境來運行Cassandra?
Cassandra被設計成可以運行在任何商業服務器上,通過普通的規范。在云上,Cassandra可以適配大部分云服務提供商。