简介
Apache Cassandra 是一款高性能、可扩展且高可用的NoSQL数据库,专为处理海量数据并保持极低延迟而设计。Netflix、Apple、eBay和Instagram等知名企业都在使用它实时处理PB级数据。
Python官方提供了cassandra-driver驱动程序,让Python程序能够全面访问Cassandra的各项功能。它支持同步和异步查询、预编译语句、UUID操作、TTL设置等丰富特性。
什么是cassandra-driver
Cassandra-driver是DataStax团队开发的Apache Cassandra官方Python客户端。这是一款高性能驱动程序,可实现Python应用程序与Cassandra集群之间的无缝集成。
驱动程序核心功能
- 同步与异步操作
- 预编译查询提升性能
- 自动将查询路由到最优节点
- 支持Cassandra所有数据类型
- 内置错误处理与重试机制
- 支持身份认证与SSL加密
- 集群节点间的负载均衡
安装与配置
安装驱动程序
pip install cassandra-driver
某些高级功能需要额外安装依赖:
pip install cassandra-driver[cqlengine] # 用于ORM
pip install cassandra-driver[graph] # 用于图操作
连接集群
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
# 简单连接
cluster = Cluster(['127.0.0.1'])
session = cluster.connect()
# 带认证的连接
auth_provider = PlainTextAuthProvider(username='cassandra', password='cassandra')
cluster = Cluster(['127.0.0.1'], auth_provider=auth_provider)
session = cluster.connect()
# 带SSL的连接
from cassandra.cluster import Cluster
from ssl import PROTOCOL_TLSv1_2, CERT_REQUIRED
cluster = Cluster(['127.0.0.1'],
ssl_context={
'ssl_version': PROTOCOL_TLSv1_2,
'cert_reqs': CERT_REQUIRED,
'ca_certs': '/path/to/ca.pem'
})
session = cluster.connect()
连接指定Keyspace
session.set_keyspace('my_keyspace')
# 或
session = cluster.connect('my_keyspace')
Cassandra核心概念
数据架构
- Keyspace — 类似SQL中的数据库,包含复制策略配置
- 表 — 包含行和列,但内部存储结构不同
- 分区键 — 决定数据存储在哪个节点
- 聚类键 — 影响分区内数据的排序方式
- 主键 — 由分区键和聚类键组成
数据模型特点
Cassandra不支持SQL中的JOIN和聚合操作,但具备水平扩展能力和高可用性。设计数据模型时应基于数据访问模式进行规划。
创建Keyspace和表
创建Keyspace
session.execute("""
CREATE KEYSPACE IF NOT EXISTS my_keyspace
WITH replication = {
'class': 'SimpleStrategy',
'replication_factor': '3'
}
""")
# 生产环境推荐使用NetworkTopologyStrategy
session.execute("""
CREATE KEYSPACE IF NOT EXISTS my_keyspace
WITH replication = {