java - 宽行的 Cassandra CQL3 java 示例

标签 java dictionary cassandra cql3 datastax-java-driver

我有一个使用 CQL3 的数据模型,如下所示

CREATE TABLE test(
   userid text,
   entry_date timestamp,
   attributes map<text, text>,
   primary key (userid,entry_date)
 );

map 包含大量数据。我需要基于 map 键进行搜索以及查询以支持基于用户 ID 和日期范围的搜索。 你能帮助我了解数据模型以及使用 datastax 驱动 api 的 java 示例吗?如果我可以转换为宽行,您能否告诉我如何使用 java 组织和获取数据。

最佳答案

首先,当您说您的 map 中包含大量数据时,这是什么意思? Collection 中有 64K 件元素的限制,因此请注意这一点。

其次,C* 表的设计应支持您的查询。如果您有多个查询,通常会产生多个表。您提供的表格将支持您对用户 ID 和日期范围的查询。对于基于您的属性的查询,您可以尝试将它们存储在 map 中:

CREATE TABLE test(
userid text,
entry_date timestamp,
attribute_key text, 
attribute_value text,
PRIMARY KEY ((userid, entry_date), attribute_key)
);

此数据模型通过其键和值来划分您的 map 。通过添加 attribute_key 作为聚类列,您将获得宽行。请记住复合分区键,但您将需要 userid 和 entry_date 字段来进行查询。

关于java - 宽行的 Cassandra CQL3 java 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31723206/

相关文章:

java - 运行java中收集推文的代码时出现异常

python - 在字符串中的关键字之前删除 '\n'

mysql - 无法打开共享库 '/usr/lib/mysql/plugin/ha_cassandra.so'

java - jar 文件是如何执行的?这些类是否在某处提取?

java - 当我生成 apk 并安装在我的设备中时,我尝试使用 firebase otp 验证我的手机号码,显示 SHA-1 错误

java - 在 Spring Boot 中配置 PropertyPlaceholderConfigurer

python - 如何用随机字典值填充 pandas 数据框列

Python程序组合两个字典,为公共(public)键添加值

javascript - 如何使用 Node.js Cassandra 驱动程序运行连续查询?

cassandra节点经常拒绝