我对Cassandra方式管理标签的最佳方法有点困惑:字符串字段?阵列场?二级指数?宽柱?甚至复合ids?
我目前认为数组字段+二级索引非常合适。 考虑到扩展能力的更好选择?
链接实现完全混淆^ _ ^:
添加数据本身 - 它与Stack Overflow标签非常相似:
我知道如何使用couchDB / Couchbase做到这一点,非常简单。到目前为止,Cassandra非常混乱,因为除非深入内部,否则我们永远不知道推荐的模型是什么。
注意,目前的CF就像:
CREATE TABLE items (
id timeuuid,
user_id uuid,
name varchar,
description text,
tags set<text>,
PRIMARY KEY (id)
);
由于
答案 0 :(得分:1)
与Cassandra中的大多数内容一样,它实际上取决于您的查询和数据大小。一个标签的值是否超过一个或几百兆?在这种情况下,您需要在标签内进行存储。您是否尝试一起查找两个标签的值?在这种情况下,您可以使用多个标记创建标记。这是假设简单的文本标签。
使用庞大的数据集,只需拥有标签 - &gt;价值观可能不是一个好的选择。然后,您可能希望使用具有某种形式的局部敏感散列的潜在单独阶段来确定要考虑的桶。通常,Cassandra会很好地管理分区。但是,有许多标签,而不是非常大的值,可能值得LHS使用前缀/长度/前缀+后缀长度等来最小化标签的数量。
有许多不同的方法可以解决这个问题,但是它是否适合你的情景取决于......嗯......你的情景。如果您向我们提供您期望的查询和预期的标签/值数量,我们将能够提供更多帮助。