Docker Compose - Cassandra (single)
前言
Cassandra
在NoSQL
裡面也算是小有名氣,稍微介紹Cassandra
為Facebook
原為了應對電子郵件的查詢效能所設計出來,結合Google Big Table
與Amazon DynamoDB
的資料模型與分散式架構所設計,於2008
年開放原始程式,因其良好的延伸性與效能被各大網站所使用,成為了目前最流行的分散式資料儲存架構的方案之一。
最主要強調他的高可用、沒有單點故障、簡單擴充。
註:該篇文章教學為單節點。
另外Cassandra
提供一個定義接近SQL
的語法The Cassandra Query Language (CQL)
,採用table/row/column
等相同定義的名稱去描述Cassandra
的Data Model
,讓使用者可以更快速的學習使用它。
Docker Image
此處直接使用Docker hub
上的cassandra:latest。
Docker Compose
- docker-compose.yml説明:
1
2
3
4
5
6
7
8
9version: '3.3'
services:
cassandra:
image: cassandra:latest
container_name: cassandra
ports:
- "9042:9042"
volumes:
- ./cassandra:/var/lib/cassandra- 版本定義為
3.3
。 - 定義
services
名稱為cassandra
。 - 使用
cassandra:latest
映像。 - 容器名稱定義
cassandra
。 - 暴露端口
9042
、9042
(格式為HOST:CONTAINER
)。 - 掛載主機路徑(格式為
SOURCE:TARGET
)。
- 版本定義為
Run & Test
此處是進入容器並使用
cqlsh
進行測試。註:如果有此錯誤
Connection error: ('Unable to connect to any servers', {'127.0.0.1:9042': ConnectionRefusedError(111, "Tried connecting to [('127.0.0.1', 9042)]. Last error: Connection refused")})
,表示Cassandra
還沒有完全啟動完畢,請稍等一下再次下cqlsh
指令即可。相關的語法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22-- 建立 test keyspace
CREATE KEYSPACE test
WITH REPLICATION = {
'class' : 'SimpleStrategy',
'replication_factor' : 1
};
-- 使用 test keyspace
USE test;
-- 建立 example table
CREATE TABLE test.example (
name text,
position int,
PRIMARY KEY (name, position));
-- 寫入資料
INSERT INTO test.example (name, position)
VALUES ('luffy', 1);
-- 查詢資料
SELECT * FROM test.example
Cassandra Cli
Other Docker Compose List
如需要找尋其他的 Docker Compose ,可以參考Docker Compose - 簡介的分享目錄。