Like Share Discussion Bookmark Smile

J.J. Huang   2023-07-26   Docker Docker Compose   瀏覽次數:次   DMCA.com Protection Status

Docker Compose - Cassandra (single)

前言

CassandraNoSQL裡面也算是小有名氣,稍微介紹CassandraFacebook原為了應對電子郵件的查詢效能所設計出來,結合Google Big TableAmazon DynamoDB的資料模型與分散式架構所設計,於2008年開放原始程式,因其良好的延伸性與效能被各大網站所使用,成為了目前最流行的分散式資料儲存架構的方案之一。

最主要強調他的高可用、沒有單點故障、簡單擴充。

註:該篇文章教學為單節點。

另外Cassandra提供一個定義接近SQL的語法The Cassandra Query Language (CQL),採用table/row/column等相同定義的名稱去描述CassandraData Model,讓使用者可以更快速的學習使用它。

Docker Image

此處直接使用Docker hub上的cassandra:latest

Docker Compose

  • docker-compose.yml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    version: '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
    • 暴露端口90429042(格式為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 - 簡介的分享目錄。


註:以上參考了
Docker
Cassandra
TablePlus