如何解决Cassandra 静态列
我是 Cassandra 的新手,我想要完成的是我有一个资源表,它是我正在设计的电子学习平台的一部分......所以该表将 courseId 作为其分区键和 sectionId作为集群键,然后将 resourceId 作为另一个集群键,然后是其余数据..所以现在我想将 section_name 列添加到表中,使其值不会被复制到 sectionId 下的每个资源中,我认为这样做的方法可能类似于静态列,但不是每个分区键都是静态的(在我们的例子中是courseId),它应该是静态的(sectionId)..所以我的问题是有一个功能可以做到这一点或者有什么方法可以实现这一点。我现在想到的一种方法是为课程部分创建一个表,为具有 sectionId 作为其分区键的资源创建另一个表,这样我们就可以使 section_name 成为静态列。另一种解决方案是保持表原样,然后创建另一个以 courseId 作为分区键和 sectionId 作为集群键的表,然后我将 section_name 放在该主键下。为什么我不想将 section_name 复制到每个资源中的问题,就好像部分名称中有更新一样(我认为这不太可能发生很多)它需要我更新该部分中的所有资源. 旁注:我正在使用微服务,所以资源表是我的边界。如果标题不够表达,对不起
解决方法
不幸的是,没有。分区的所有行在静态列中共享相同的值。
这不是在 Cassandra 中建模数据的正确方法:
我现在想到的一种方法是为课程部分创建一个表,为具有 sectionId 作为其分区键的资源创建另一个表...
数据在 Cassandra 中是非规范化的,因此您无需进行连接或外部查找。
对于每个应用查询,您需要设计一个表格,其中包含响应该应用查询所需的所有数据。干杯!
,我认为,看着您的问题,下表设计应该可以解决您的问题 -
CREATE TABLE IF NOT EXISTS resource_by_courseId _sectionId
(
courseId text,sectionId text,resourceId text,section_name text static
primary key ((courseId,sectionId),resourceId)
)WITH CLUSTERING ORDER BY (resourceId DESC);
section_name 是静态的,这对于 (courseId,sectionId) 将保持不变。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。