主题
Cassandra的数据模型与使用方法
Cassandra是一个分布式NoSQL数据库系统,设计用于处理大量数据,提供高可用性和容错性。它最初由Facebook开发,后来成为Apache的顶级项目。
数据模型
键空间(Keyspace):类似于关系型数据库中的数据库,是Cassandra中的顶层容器。一个键空间可以包含多个表。键空间定义了数据的复制策略和一致性级别。
表(Table):类似于关系型数据库中的表,用于存储数据。表由列族(Column Family)构成,但在新版本中,这个概念已被简化为表。
列(Column):每个表由多列组成,每列有其名称和类型。
分区键(Partition Key):用于确定数据在集群中的分布。它是主键的一部分,决定了数据存储在哪一台节点上。
聚簇键(Clustering Key):也是主键的一部分,用于在相同分区键下的行之间进行排序。
主键(Primary Key):由分区键和可选的聚簇键组成,用于唯一标识表中的每一行。
使用方法
1. 创建键空间
cql
CREATE KEYSPACE IF NOT EXISTS my_keyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};
2. 创建表
cql
CREATE TABLE IF NOT EXISTS my_keyspace.my_table (
id int PRIMARY KEY,
name text,
age int
);
3. 插入数据
cql
INSERT INTO my_keyspace.my_table (id, name, age) VALUES (1, 'John Doe', 30);
4. 查询数据
cql
SELECT * FROM my_keyspace.my_table WHERE id = 1;
5. 更新数据
cql
UPDATE my_keyspace.my_table SET age = 31 WHERE id = 1;
6. 删除数据
cql
DELETE FROM my_keyspace.my_table WHERE id = 1;
连接和使用Cassandra
在Java中,通常使用DataStax的java-driver
来连接和操作Cassandra数据库。以下是一个简单的示例:
java
import com.datastax.oss.driver.api.core.CqlSession;
import com.datastax.oss.driver.api.core.cql.ResultSet;
public class CassandraExample {
public static void main(String[] args) {
try (CqlSession session = CqlSession.builder().withKeyspace("my_keyspace").build()) {
ResultSet rs = session.execute("SELECT * FROM my_table WHERE id = 1");
for (var row : rs) {
System.out.println(row.getUUID("id") + ", " + row.getString("name") + ", " + row.getInt("age"));
}
}
}
}