总订单数1亿条
->订单id,用户id,商品id集合,订单时间,订单完成时间,订单状态;
HBase表设计:
主表 ->
Rowkey: 用户ID_时间戳
列簇:info
索引表 ->
https://www.2cto.com/database/201708/664664.html
rowkey: 订单号
列簇:info:index value=主表的rowkey
注意点
用户id需要长度一致(索引表同理),如1要变换为"0000001".
那么rowkey为
0000001_1324324343
0000001_1648326442
0000002_1267867372
0000002_1474398648
0000002_1553762536
...
这样才能用scan 'order',{STARTROW=>'0000001',ENDROW=>'0000002'}
查询到用户0000001的所有订单信息
索引表其实是主表的值与rowkey的映射,为了加快查询效率。
预分区建表,目的是避免自动splits引起性能降低,影响读写效率。
hbase> create 't1', 'f1', SPLITS => ['2', '4', '6', '8']