为简单起见,假设我有一个表,其中主键在逻辑上应该是长的。
目前,从我做的一个项目(使用关系数据库)继承,我有一个 IDMaker 类,它返回我使用(在那个项目中)作为主键的 long。
我说可以是因为据我了解,由于此 ID 是基于时间戳且单调递增的,因此它不是 HBase 行键的良好候选者。
现在,阅读
http://ikaisays.com/2011/01/25/app-engine-datastore-tip-monotonically-increasing-values-are-bad/
http://hbase.apache.org/book/rowkey.design.html
和Lars George 的《HBase:权威指南》第 9 章,
我看到“腌制”策略可以满足我的需要。这基本上为我的键添加了一个前缀,因此打破了单调系列。
现在的问题是:使用这样的策略,从这个 ids 开始:
1
2
3
4
假设这些密钥转到一个区域服务器,并像这样转换这些 id(前缀当然是一个例子)
0:1
7:2
9:3
a:4
我如何确定这四行仍然不会转到同一个区域服务器?换句话说,我怎么能确定我的前缀足以避免这里很好地描述了http://ikaisays.com/2011/01/25/app-engine-datastore-tip-monotonically-increasing-values-are -坏/?