详解Cassandra数据库

Apache Cassandra 数据库详解与 Docker 部署指南

一、Cassandra 数据库概述

Apache Cassandra 是一款分布式、高可用的 NoSQL 数据库,专为处理海量数据设计,具备以下核心特性:

1. 核心特点

  • 分布式架构:无中心节点设计,支持跨数据中心的自动复制和故障转移,提供线性扩展能力。
  • 高可用性:通过多副本机制实现数据冗余,支持跨数据中心部署,确保 99.9% 以上的服务可用性。
  • 灵活数据模型:基于宽列存储的半结构化数据模型,支持动态 schema,适合物联网、日志记录等高写入场景。
  • 高性能写入:采用 LSM-Tree 存储引擎,优化写入性能,单集群可支持千万级 QPS。
  • 5.0 新特性:引入向量搜索(Vector Search)支持 AI 应用,统一压缩策略提升节点数据密度至 10TB,新增 trie 数据结构优化读写效率。

2. 应用场景

  • 时间序列数据:如物联网设备数据、金融交易记录。
  • 实时分析:支持低延迟读写,适用于实时推荐系统。
  • 大规模分布式存储:电商产品目录、社交平台用户行为数据。
  • AI 与机器学习:5.0 版本的向量搜索功能可存储和检索嵌入向量,支持图像识别、聊天机器人等场景。

二、Cassandra 基础用法

1. 核心概念

  • Keyspace:逻辑命名空间,类似关系型数据库的数据库。
  • Table:存储数据的容器,由分区键(Partition Key)和集群键(Clustering Key)定义分布规则。
  • 分区键:决定数据分布到哪个节点,确保负载均衡。
  • 一致性级别:控制读写操作的副本响应数(如 ONEQUORUMALL)。

2. CQL 基本操作

(1)连接数据库
docker exec -it cassandra cqlsh
(2)创建 Keyspace
CREATE KEYSPACE my_keyspace 
WITH REPLICATION = { 
  'class' : 'SimpleStrategy', 
  'replication_factor' : 1 
};
(3)创建表
USE my_keyspace;

CREATE TABLE users (
  user_id UUID PRIMARY KEY,
  username TEXT,
  email TEXT,
  created_at TIMESTAMP
);
(4)插入数据
INSERT INTO users (user_id, username, email, created_at)
VALUES (
  uuid(), 
  'john_doe', 
  'john@example.com', 
  toTimestamp(now())
);
(5)查询数据
SELECT * FROM users WHERE user_id = 12345678-90ab-cdef-1234-567890abcdef;
(6)更新与删除
UPDATE users SET email = 'new@example.com' WHERE user_id = 12345678-90ab-cdef-1234-567890abcdef;
DELETE FROM users WHERE user_id = 12345678-90ab-cdef-1234-567890abcdef;

3. 数据建模最佳实践

  • 分区键设计:选择高基数(High Cardinality)字段,避免热点问题。
  • 集群键排序:通过集群键实现数据排序,支持范围查询。
  • 二级索引:谨慎使用,优先通过分区键优化查询性能。

三、Docker 安装与配置

1. 单机部署

(1)拉取镜像
docker pull cassandra:5.0.0  # 使用最新 5.0 版本
(2)启动容器
docker run -d \
  --name cassandra \
  -p 9042:9042 \
  -v cassandra_data:/var/lib/cassandra \
  cassandra:5.0.0
(3)验证运行状态
docker ps -a | grep cassandra
(4)进入容器执行 CQL
docker exec -it cassandra cqlsh

2. 数据持久化

通过挂载卷保存数据,避免容器删除后丢失:

docker run -d \
  --name cassandra \
  -p 9042:9042 \
  -v /path/to/local/data:/var/lib/cassandra \
  cassandra:5.0.0

3. 多节点集群部署(Docker Compose)

(1)创建 docker-compose.yml
version: '3'
services:
  cassandra1:
    image: cassandra:5.0.0
    container_name: cassandra1
    ports:
      - "9042:9042"
    environment:
      - CASSANDRA_SEEDS=cassandra1,cassandra2,cassandra3
    volumes:
      - cassandra_data1:/var/lib/cassandra

  cassandra2:
    image: cassandra:5.0.0
    container_name: cassandra2
    environment:
      - CASSANDRA_SEEDS=cassandra1,cassandra2,cassandra3
    volumes:
      - cassandra_data2:/var/lib/cassandra

  cassandra3:
    image: cassandra:5.0.0
    container_name: cassandra3
    environment:
      - CASSANDRA_SEEDS=cassandra1,cassandra2,cassandra3
    volumes:
      - cassandra_data3:/var/lib/cassandra

volumes:
  cassandra_data1:
  cassandra_data2:
  cassandra_data3:
(2)启动集群
docker-compose up -d
(3)检查集群状态
docker exec -it cassandra1 nodetool status

4. 安全配置(可选)

(1)启用认证
docker run -d \
  --name cassandra \
  -p 9042:9042 \
  -v cassandra_data:/var/lib/cassandra \
  -e CASSANDRA_AUTHENTICATION=org.apache.cassandra.auth.PasswordAuthenticator \
  -e CASSANDRA_AUTHORIZATION=org.apache.cassandra.auth.CassandraAuthorizer \
  cassandra:5.0.0
(2)客户端加密
docker run -d \
  --name cassandra \
  -p 9042:9042 \
  -v cassandra_data:/var/lib/cassandra \
  -v /path/to/certificates:/etc/cassandra/certs \
  -e CASSANDRA_CLIENT_ENCRYPTION=all \
  -e CASSANDRA_TRUSTSTORE=/etc/cassandra/certs/truststore.jks \
  -e CASSANDRA_TRUSTSTORE_PASSWORD=your_password \
  cassandra:5.0.0

5. 性能优化建议

(1)调整内存分配
docker run -d \
  --name cassandra \
  -p 9042:9042 \
  -v cassandra_data:/var/lib/cassandra \
  -e JVM_OPTS="-Xms4g -Xmx4g" \  # 设置堆内存
  cassandra:5.0.0
(2)优化配置参数

通过挂载自定义 cassandra.yaml 文件调整参数:

concurrent_reads: 256
concurrent_writes: 192
native_transport_max_threads: 4096

四、总结

Cassandra 凭借其分布式架构和高性能特性,成为处理海量数据的理想选择。通过 Docker 快速部署和配置,可轻松搭建单机或集群环境。结合 CQL 的灵活查询能力和 5.0 版本的新特性(如向量搜索),Cassandra 能够满足 AI、物联网等新兴领域的需求。在实际应用中,需根据业务场景合理设计数据模型,并通过安全配置和性能优化确保系统稳定运行。

# 快速启动单机实例
docker run -d --name cassandra -p 9042:9042 cassandra:5.0.0

参考文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值