Cassandra 教程(一): Cassandra 簡介 Overview 數據模型 舉個例子 總結

Overview

Apache Cassandra 是一個大規模可擴展的分佈式開源NoSQL數據庫,完美適用於跨數據中心/雲端的結構化數據、半結構化數據和非結構化數據,同時,Cassandra 高可用、線性可擴展、高性能、無單點。

特點

  • scalable,線性可擴展
  • fault-tolerant,且沒有單點(peer-to-peer)
  • column-oriented database & partitioned row store database
  • distribution design 基於 Amazon 的 Dynamo
  • data model 基於 Google 的 Bigtable
  • 靈活的數據存儲,支持結構化、半結構化、非結構化數據
  • 支持事務
  • 寫性能好
  • 由 Facebook開源

數據模型

內部數據結構

Cassandra是一個column-oriented database,也就是說,不用像關係型數據庫一樣事先定義好列,在Cassandra中,不同行的列可以不一樣。

在Cassandra中,數據模型由keyspaces、column families、primary key 和 columns組成,對比關係型數據庫,如下表:

關係型數據庫 Cassandra
Database Keyspace
Table CF(column family)
Primary Key Primary Key
Column Name Key / Column Name
Column Value Column Value

在Cassandra中,Primary Key包括partition key 和 cluster key兩部分,其中cluster key可選,partition key確定數據行分發到哪個node,cluster key用於node內部數據排序。

對於每一個column family,不要想象成關係型數據庫的表,而要想像成一個多層嵌套的排序散列表(Nested sorted map)。這樣能更好地理解和設計Cassandra的數據模型。

散列表可用提供高效的鍵值查找,排序的散列表可提供高效的範圍查找,在Cassandra裏,我們可以使用primary key和column key做高效的鍵值查詢和範圍查詢,而且,在Cassandra中,列的名稱可以直接包含數據,也就是說,有的列可以只有列名沒有列值。

Map<RowKey, SortedMap<ColumnKey, ColumnValue>>

CQL

CQL (Cassandra Query Language)是用於 Cassandra 的查詢語言,可類比用於關係型數據庫的SQL,注意,雖然CQL 和 SQL 看起來比較相似,但二者內部原理完全不同。

舉個例子

搭建Cassandra

學習Cassandra時搭建環境最簡單的方式是使用docker,可以參考鏡像

例子

如下圖所示,首先創建keyspaces,然後創建table,往table中插入數據,再查詢該table。

總結

本文簡單介紹了Cassandra,並舉例說明了基本的使用。下一篇將介紹Cassandra的數據模型。

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