背景
cassandras是由facebook的兩位工程開發出來的一款nosql資料庫。它兼有dynamo和bigtable的優點。主要有下面一些特點:
安裝與配置
cassandra的安裝和配置都比較簡單。如果不做集群,直接把下下來的壓縮包解壓後,就可以使用。如果要做集群,那就需要配置conf目錄下的storage-conf.xml檔案。storage-conf.xml檔案中的主要配置引數解釋如下:
配置完storage-conf.xml檔案後,執行bin目錄下的cassandra檔案就可以啟動cassandra.要監視集群的執行狀態可以使用nodeprobe命令.
客戶端api
連線cassandra可以使用兩種api,一種是thrift api,另一種是高階api.下面是一段用thrift api連線cassandra的**
ttransport tr = new tsocket(「192.168.0.1」, 9160);
tprotocol proto = tbinaryprotocol(tr);
tr.open();
cassandra.client client = new cassandra.client(proto);
columnpath cp = new columnpath(「super1」,
「supercolumn_1」.getbytes(「utf-8」), null);
columnorsupercolumn cosc = client.get(「keyspace1」, key, cp,
consistencylevel.one);
supercolumn sc = cosc.super_column;
for (column col : sc.columns)
tr.close();
假設集群有三個結點組成: 192.168.0.1, 192.168.0.2, 192.168.0.3,那麼上面這段連線cassandra的**就有乙個問題: **中只連線192.168.0.1這乙個結點,一旦這個結點宕機就與整個集群失去了聯絡.但其實cassandra是沒有中心結點的,乙個結點宕機不會影響整個集群(假設複製因子大於1),所以在連線cassandra時不能只嘗試連線乙個結點,而應當嘗試連線多個結點.
資料的讀取和寫入
寫入過程如下:
1) 寫入提交日誌
2) 傳送資料到合適的結點
3) 寫入本地日誌並且更新memtables
4) 把memtable中的資料重新整理到磁碟上
5) 刪除提交日誌
6) 如果需要,則對儲存的資料進行compact
讀取過程如下:
1) 通過api訪問任乙個結點
2) 如果該結點存在這個key指定的資料,則返回,否則根據partioner計算該key對應的value在哪個結點,並從該結點取得資料返回.
一致性雜湊和gossip協議
cassandra能做到沒有單點代失敗實際上是由一致性雜湊和gossip協議保證的.
限制
使用cassandra時要注意下面這些限制:
Cassandra技術介紹之配置
所有的配置都在cassandra的安裝目錄下面的conf裡,conf目錄下面有cassandra.yaml這個檔案,所有的配置都可以通過修改這個檔案而達到目的 比較關鍵的幾個配置有 cluster name,partitioner,snitch,以及seed nodes的配置。如上圖,我們知道乙個c...
Cassandra技術介紹之配置
所有的配置都在cassandra的安裝目錄下面的conf裡,conf目錄下面有cassandra.yaml這個檔案,所有的配置都可以通過修改這個檔案而達到目的 比較關鍵的幾個配置有 cluster name,partitioner,snitch,以及seed nodes的配置。如上圖,我們知道乙個c...
mysql可以分享的技術 技術分享 MySQL
1 查詢語句是如何執行的?1 連線 1 建立連線 2 驗證許可權,修改了許可權,建立新的連線才會生效。3 sql執行的臨時記憶體 2 查詢快取 1 先查詢快取,更新操作會導致所有快取失效。2 mysql 8.0功能去掉 3 分析 詞法解析,語法解析 4 優化 1 決定使用哪個索引,比方說根據統計資訊...