Skip to content

Cassandra的数据模型与使用方法

Cassandra是一个分布式NoSQL数据库系统,设计用于处理大量数据,提供高可用性和容错性。它最初由Facebook开发,后来成为Apache的顶级项目。

数据模型

  1. 键空间(Keyspace):类似于关系型数据库中的数据库,是Cassandra中的顶层容器。一个键空间可以包含多个表。键空间定义了数据的复制策略和一致性级别。

  2. 表(Table):类似于关系型数据库中的表,用于存储数据。表由列族(Column Family)构成,但在新版本中,这个概念已被简化为表。

  3. 列(Column):每个表由多列组成,每列有其名称和类型。

  4. 分区键(Partition Key):用于确定数据在集群中的分布。它是主键的一部分,决定了数据存储在哪一台节点上。

  5. 聚簇键(Clustering Key):也是主键的一部分,用于在相同分区键下的行之间进行排序。

  6. 主键(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"));
            }
        }
    }
}