我使用CQL3
有如下数据模型CREATE TABLE test(
userid text,
entry_date timestamp,
attributes map<text, text>,
primary key (userid,entry_date)
);
地图包含大量数据。我需要基于地图密钥进行搜索以及基于userId和日期范围支持搜索的查询。 你能帮助我使用数据模型以及使用datastax驱动器api的java中的示例吗?如果我可以转换为宽行,您可以告诉我如何使用java组织和获取数据。
答案 0 :(得分:1)
首先,当您说地图中包含大量数据时,这意味着什么?集合中有64K项限制,因此请注意这一点。
其次,C *表应设计为支持您的查询。如果您有多个查询,通常会产生多个表。您提供的表格将支持您对用户ID和日期范围的查询。对于基于您的属性的查询,您可以尝试将它们存储在地图中:
CREATE TABLE test(
userid text,
entry_date timestamp,
attribute_key text,
attribute_value text,
PRIMARY KEY ((userid, entry_date), attribute_key)
);
此数据模型会根据其键和值来破坏您的地图。通过将attribute_key添加为群集列,您将拥有宽行。请记住复合分区键,但您需要查询的userid和entry_date字段。