mongodb - Hbase 数据应该如何才能快速查询响应?

标签 mongodb hadoop cassandra hbase

我的情况符合以下规则:

  1. 一个用户一次只能在一个地点。如果用户 A 在地点 X 签到,然后在 field Y,他们不再在 field X。
  2. 签到最多只能“持续”3 小时。如果用户 A 在地点 X 签到然后 3 小时内什么都没有,他们不再在地点 X。

数据将使用 Kafka 和 spark-streaming 解析到 HBase。

我想使用 HBase,TTL 为 3 小时,版本控制为 1,满足上述条件。问题是我很困惑如何在 HBase 中组织数据以获得更快的查询响应,我应该使用具有 field 名称或 field 名称的单个列作为不同的列名称吗?

哪个更好,为什么?

需要执行的查询是: 1.用户A现在在哪里? 2. 现在 X 地点有哪些用户?

最佳答案

最高效的查询是基于HBase表的row key。 我会使用用户名作为行键,以便能够快速获取特定用户所在位置的信息。每行都需要一列 - 地点。

显然,要收集所有数据(查询 2:地点 X 有哪些用户),您需要扫描整个(部分)表格。所以效率不会很高。查看 HBase 的二级索引 - 如果您遇到此类查询的性能问题。

关于mongodb - Hbase 数据应该如何才能快速查询响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44479855/

相关文章:

java - Spring boot注入(inject)mongodb数据源

具有文档字段比较的 MongoDB partialFilterExpression

java - 从 java 杀死一个 Oozie 工作流

solr - 何时在DSE中使用Cassandra与Solr?

Cassandra CQL 选择查询不返回以时间戳作为 clusterkey 的记录

database - Cassandra "default_time_to_live"属性未删除数据

mongodb - meteor :部署时 find() 不返回任何文件

mongodb - mongodb 中嵌套数组对象的展开和分组

hadoop - 如何使用 hive/spark-sql 生成大数据集?

hadoop - 我们能否使用Sqoop2导入仅创建文件而不将其创建到HIVE表等