Closed xiang82 closed 11 years ago
大概看了下代码,对于这种static情况(代码中是static)的;在insert时,把rowkey列也插入进去了;
index rebuild功能目前没有实现,只会对新数据建索引,所以第一条记录没有索引。
这个功能还在考虑是否要加上,主要是对现有表进行index rebuild,会非常耗时,会把整个表全扫一遍, 然后再插入主录,在有上亿记录级别的表中进行index rebuild很耗资源。
create index目前是用索引表实现的,索引表本身就是一个普通的HBase表, 所以这个索引表也有rowKey,此rowKey的格式是由索引子段值和主表rowkey组成的, “column=CF:C"中的这个C列理论上是不必要的,但是HBase在put记录时必须要有一个字段,所以C列只是一个伪列。
在主表中id做为主键,就是rowkey,是否不应再写入到后面的CF中,这种情况下的查询效率很低,没有走rowkey
@freemanhjr 你是指Issue #48 吧? 那边的问题已标记为bug了。
我使用create index做了如下测试,有几个问题想请教一下: 按照如下步骤顺序操作
下面是我在hbase中看到的情况: scan表mytest有2条记录: hbase(main):008:0> scan 'MYTEST' ROW COLUMN+CELL
1 column=CF:AGE, timestamp=800052, value=\x00\x00\x00\x03
1 column=CF:ID, timestamp=800052, value=\x00\x00\x00\x01
1 column=CF:NAME, timestamp=800052, value=\x00\x00\x00\x02
1 column=CF:_LEALONE_TRANSACTIONMETA, timestamp=800052, value=PC05:36020,800050,1
2 column=CF:AGE, timestamp=800077, value=\x00\x00\x00\x04
2 column=CF:ID, timestamp=800077, value=\x00\x00\x00\x02
2 column=CF:NAME, timestamp=800077, value=\x00\x00\x00\x03
2 column=CF:_LEALONE_TRANSACTIONMETA, timestamp=800077, value=PC05:36020,800075,1 scan索引表idx只有1条记录: hbase(main):007:0> scan 'IDX' ROW COLUMN+CELL
\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x0 column=CF:C, timestamp=800051, value=0
12
\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x0 column=CF:_LEALONE_TRANSACTIONMETA, timestamp=800051, value=PC04:36020,800049,1
12