Cassandra 文档

版本

您正在查看预发布版本的文档。

Cassandra 快速入门

步骤 1:使用 Docker 获取 Cassandra

您需要在计算机上安装 Docker Desktop for Mac、Docker Desktop for Windows 或类似软件。

Apache Cassandra 也以 tarball 或软件包的形式提供 下载

docker pull cassandra:latest

步骤 2:启动 Cassandra

Docker 网络允许我们访问容器的端口,而无需在主机上公开它们。

docker network create cassandra

docker run --rm -d --name cassandra --hostname cassandra --network cassandra cassandra

步骤 3:创建文件

Cassandra 查询语言 (CQL) 与 SQL 非常相似,但适合 Cassandra 的无连接结构。

创建一个名为 data.cql 的文件,并将以下 CQL 脚本粘贴到其中。此脚本将创建一个 keyspace(Cassandra 在其中复制数据的层级)、一个用于保存数据的表,并将一些数据插入该表

CREATE KEYSPACE IF NOT EXISTS store WITH REPLICATION =
{ 'class' : 'SimpleStrategy',
'replication_factor' : '1'
};

CREATE TABLE IF NOT EXISTS store.shopping_cart (
    userid text PRIMARY KEY,
    item_count int,
    last_update_timestamp timestamp
);

INSERT INTO store.shopping_cart
    (userid, item_count, last_update_timestamp)
    VALUES ('9876', 2, toTimeStamp(now()));
INSERT INTO store.shopping_cart
    (userid, item_count, last_update_timestamp)
    VALUES ('1234', 5, toTimeStamp(now()));

步骤 4:使用 CQLSH 加载数据

CQL shell 或 cqlsh 是用于与数据库交互的一种工具。我们将使用它来使用您刚刚保存的脚本将一些数据加载到数据库中。

docker run --rm --network cassandra \
-v "$(pwd)/data.cql:/scripts/data.cql" \
-e CQLSH_HOST=cassandra -e CQLSH_PORT=9042 \
-e CQLVERSION=3.4.6 nuvo/docker-cqlsh

Cassandra 服务器本身(您运行的第一个 docker run 命令)需要几秒钟才能启动。如果服务器尚未完成其初始化序列,上面的命令将抛出错误,因此请等待几秒钟让它启动。

步骤 5:交互式 CQLSH

与 SQL shell 类似,您也可以使用 cqlsh 以交互方式运行 CQL 命令。

docker run --rm -it --network \
cassandra nuvo/docker-cqlsh cqlsh cassandra \
9042 --cqlversion='3.4.5'

这应该会为您提供如下提示

Connected to Test Cluster at cassandra:9042.
[cqlsh 5.0.1 | Cassandra 4.0.4 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.
cqlsh>

步骤 6:读取一些数据

SELECT * FROM store.shopping_cart;

步骤 7:写入更多数据

INSERT INTO store.shopping_cart
    (userid, item_count)
    VALUES ('4567', 20);

步骤 8:清理

docker kill cassandra
docker network rm cassandra

恭喜!

嘿,这并不难,对吧?

要了解更多信息,我们建议您执行以下步骤

  • 阅读 Cassandra 基础,了解主要概念以及 Cassandra 的高级工作原理。

  • 浏览 案例研究,了解我们全球社区中的其他用户如何从 Cassandra 中获益。