【趙強老師】NoSQL數據庫之Cassandra基礎

一、Cassandra簡介

Cassandra是一個混合型的非關係的數據庫,類似於Google的BigTable。其主要功能比Dynamo (分佈式的Key-Value存儲系統)更豐富,但支持度卻不如文檔存儲MongoDB(介於關係數據庫和非關係數據庫之間的開源產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。支持的數據結構非常鬆散,是類似json的bjson格式,因此可以存儲比較複雜的數據類型)。Cassandra最初由Facebook開發,後轉變成了開源項目。它是一個網絡社交雲計算方面理想的數據庫。以Amazon專有的完全分佈式的Dynamo爲基礎,結合了Google BigTable基於列族(Column Family)的數據模型。P2P去中心化的存儲。很多方面都可以稱之爲Dynamo 2.0。

二、安裝與配置

  • 解壓安裝包
tar -zxvf apache-cassandra-3.11.3-bin.tar.gz -C ~/training/
  • 設置環境變量
CASSANDRA_HOME=/root/training/apache-cassandra-3.11.3
export CASSANDRA_HOME
PATH=$CASSANDRA_HOME/bin:$PATH
export PATH
  • 將以下三個地址設置爲Linux相應的IP
listen_address: 192.168.56.111
rpc_address: 192.168.56.111
 - seeds: "192.168.56.111"
  • 啓動Cassandra
注意:要以root用戶啓動Cassandra,需要使用-R參數。
命令:cassandra -R
  • 驗證Cassandra運行環境:nodetool工具
命令:nodetool status

從Cassandra 2.1版本開始,日誌和數據都被存放在logs和data的子目錄下。老版本默認保存在/var/log/cassandra和 /var/lib/cassandra。

三、Cassandra的配置參數

核心配置文件:conf/cassandra.yaml,啓動過程中的日誌信息如下圖所示:

  • 主要的運行時參數
cluster_name: 集羣的名稱
storage_port:節點內部通信的端口(默認: 7000)
listen_address:Cassandra綁定的、用來連接其他Cassandra節點的IP地址或者主機名稱。(默認: localhost)
native_transport_port:客戶端監聽CQL本地傳輸的端口(默認: 9042)
  • 目錄相關的參數
data_file_directories:這個目錄位置就是表數據存儲的地方(在SSTables裏)。Cassandra將數據均勻的分佈在這個位置,受配置的壓縮策略粒度的限制。
commitlog_directory:這個目錄是commit log 存放的地方。爲了獲得最佳的寫入性能,將commit log放在單獨的磁盤分區,或者(理想情況下)和data文件目錄分開的物理設備上。commit log只能追加的。
saved_caches_directory:這個目錄是table key和row緩存存放的地方。默認位置:$CASSANDRA_HOME/data/saved_caches
hints_directory:設置hints的存儲位置(默認: $CASSANDRA_HOME/data/hints)

四、Cassandra的基本操作

(一)登錄CQL客戶端:cqlsh localhost

  • 查看錶system.local的結構:

  • 查詢系統的信息:

  • 查看錶空間:describe keyspaces;
  • 查看已有表:describe tables;
  • 查看錶結構:describe table table_name;

(二)使用Cassandra的Java客戶端

Cassandra使用cql語言作爲操作語言,Cassandra在2.0之後,在操作上越來越像sql數據庫的操作,這樣想從傳統關係型數據庫,切換到Cassandra的話,上手成本也越來越低。使用官方java驅動操作Cassandra非常簡單。maven引入相關的依賴如下所示:

<dependency>
	<groupId>info.archinnov</groupId>
	<artifactId>achilles-core</artifactId>
	<version>6.0.0</version>
	<classifier>shaded</classifier>
</dependency>

下面執行CRUD操作:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章