MST

星途 面试题库

面试题:Cassandra集合类型在数据建模中的应用

假设你要设计一个Cassandra数据库来存储用户的兴趣爱好,每个用户可能有多个兴趣爱好。请说明如何使用Cassandra的集合类型进行数据建模,并给出相应的CQL语句示例。
10.7万 热度难度
数据库Cassandra

知识考点

AI 面试

面试题答案

一键面试

使用Cassandra集合类型建模思路

在Cassandra中,可以使用集合类型(如 set)来存储用户的多个兴趣爱好。我们将用户ID作为主键,兴趣爱好以集合的形式存储在对应的列中。这样设计可以方便地查询某个用户的所有兴趣爱好。

CQL语句示例

  1. 创建表
CREATE TABLE user_hobbies (
    user_id UUID PRIMARY KEY,
    hobbies SET<TEXT>
);

这里假设 user_id 是UUID类型,如果你使用其他类型(如文本类型等),可相应调整。hobbies 列是一个 set 类型,用来存储文本类型的兴趣爱好。

  1. 插入数据
INSERT INTO user_hobbies (user_id, hobbies)
VALUES (d8f9a31b-55a5-479b-8855-0a50f0059856, {'reading', 'painting'});

插入了一个用户ID为 d8f9a31b-55a5-479b-8855-0a50f0059856,并且该用户有 readingpainting 两个兴趣爱好的数据。

  1. 查询数据
SELECT hobbies FROM user_hobbies WHERE user_id = d8f9a31b-55a5-479b-8855-0a50f0059856;

此查询语句会返回指定用户ID对应的所有兴趣爱好。

  1. 更新数据(添加新的兴趣爱好)
UPDATE user_hobbies
SET hobbies = hobbies + {'traveling'}
WHERE user_id = d8f9a31b-55a5-479b-8855-0a50f0059856;

该语句在指定用户的兴趣爱好集合中添加了 traveling 这一兴趣爱好。

  1. 删除数据(删除某个兴趣爱好)
UPDATE user_hobbies
SET hobbies = hobbies - {'painting'}
WHERE user_id = d8f9a31b-55a5-479b-8855-0a50f0059856;

此语句从指定用户的兴趣爱好集合中删除了 painting 这一兴趣爱好。