HBase 二级索引和备用查询路径

感谢平台分享-http://bjbsair.com/2020-04-10/tech-info/53319.htmlhtml

你也能够将本文的标题理解为“若是个人表 rowkey 看起来像这样,但我也但愿个人查询表这样。” dist-list 上的一个常见示例是 row-key 格式为“user-timestamp”格式,但对于特定时间范围内的用户活动有报告要求。所以,用户选择容易,由于它处于密钥的主导位置,但时间不是。markdown

没有一个最好的方法来解决这个问题的答案,由于它取决于:ide

  • 用户数量
  • 数据大小和数据到达率
  • 报告要求的灵活性(例如,彻底特定的日期选择与预先配置的范围)
  • 指望的查询执行速度(例如,对于临时报告来讲90秒多是合理的,而对于其余状况来讲可能太长)

并且解决方案也受到集群规模和解决方案所需的处理能力的影响。常见的技巧在下面的部分中介绍。这是一个全面但并不是详尽的方法清单。性能

二级索引须要额外的集群空间和处理并不使人惊讶。这正是 RDBMS 中发生的状况,由于建立备用索引的操做须要更新空间和处理周期。RDBMS产品在这方面更加先进,能够处理替代索引管理。可是,HBase 在更大的数据量下能够更好地扩展,因此这是一项功能交换。线程

实施这些方法时请注意 Apache HBase 性能调整。htm

另外,请参阅在这个 dist-list 线程 HBase,mail#user - Stargate + hbase 中的 David Butler 响应。索引

HBase过滤查询get

根据具体状况,使用客户端请求过滤器多是适当的。在这种状况下,不会建立二级索引。可是,请不要在应用程序(如单线程客户端)上对这样的大表进行全面扫描。同步

HBase按期更新二级索引产品

能够在另外一个表中建立二级索引,经过 MapReduce 做业按期更新。该做业能够在一天内执行,但要取决于加载策略,它可能仍然可能与主数据表不一样步。

HBase双写二次索引

另外一种策略是在将数据发布到集群时构建二级索引(例如,写入数据表,写入索引表)。若是这是在数据表已经存在以后采起的方法,那么对于具备 MapReduce 做业的二级索引将须要引导。

HBase汇总表

在时间范围很是普遍的状况下(例如,长达一年的报告)以及数据量大的地方,汇总表是一种常见的方法。这些将经过 MapReduce 做业生成到另外一个表中。

HBase协处理器二级索引

协处理器行为相似于 RDBMS 触发器。这些在 0.92 增长。

相关文章
相关标签/搜索