2017-04-14 80 views
0

我来自sql背景,缺少一些基础概念。我有我的MySQL数据分为5列,其中我需要两列进行数据过滤。在sql中,查询很简单,我可以在这两列上放置一个索引,并且可以根据我的where子句中为这两列定义的某个范围获取数据。hbase的最佳rowkey设计

这两列中的数据像时间戳一样以单调递增的方式出现。什么可以是设计hbase的最佳方式。我正在考虑把时间戳作为rowkey与热点的某种措施。但是对于每个查询,我需要将范围过滤器放在rowkey中,然后根据第二列扫描结果和过滤器。我不确定这是否足够快或不。那么索引的hbase等值是多少?

还有一小鬼一点要注意的是,我只想要一次加载数据,然后进行只读请求。

任何帮助,高度赞赏。

回答

0

RowKey需要为您独一无二。是的,你可以这样做,但我认为你应该使用时间戳的其他参数。例如;时间戳+用户ID。这对你是安全的。认为你有许多hbase客户端,他们编写一个hbase服务器。 2客户端可以同时写入hbase服务器。当然,你不需要在你的rowkey中写入所有的属性。这不会是真的。

0

这取决于你最常执行什么类型的查询。如果您主要需要过滤一列,而不是建议您将此列与时间戳一起放在行键中。 对,例如:

rowkey = shardKey + column + timestamp 

如果同时使用过滤比

rowKet = shardKey + column1 + column2 +timestamp 

在第一个案件shardKey或许应该像hash(column) % number_of_regions,并在seccond hash(column1 + column2) % number_of_regions。因此,您始终可以获取特定列1和列2组合的时间序列数据。或者,如果您需要两者,请考虑制作几张表格,因为您要写一次。