Hummer TimeSeries DB 中关于RowId 的使用

RowId 是什么 ? 
    Hummer中的rowid 和 oracle 中的rowid 目的近似、实现不同。Rowid的目的都是唯一标示一条记录,而且也都属于伪列。但Oracle中rowid是有数据的物理位置计算获得,而Hummer中的rowid则是由key、时间戳、binlogid(数据落地时将自动加到记录中)组成 (也正因此Oracle rowid是定长的,Hummer 中rowid是不定长的)。不过Hummer 和 Oracle 中的rowid 用法和用途基本相似。

RowId在什么时候使用 ? 
    对于重复记录(key 和 timestamp 都相同)的操作往往需要使用rowid —— 因为虽然记录重复但rowid不会重复,因此如果对重复记录中的给定记录做检索、删除、或更新,就要使用rowid。
select rowid,car_card_num,pass_time,speed from tpass2 limit 4
rowid car_card_num      pass_time speed
0001EogO9;HYiel1A39FJ300000000000E== 京A02QT0 1388534441140 46
0001EogO9;HYiel1A39FJ300000001u4UE== 京A02QT0 1388534441140        46
0001EogOREnYiel1A3B;B5A0000000000U== 京A03K4S 1388534461708 59
0001EogOREnYiel1A3B;B5A0000001u4UU== 京A03K4S 1388534461708 59

更新操作

update tpass2 set speed = 100 where rowid='0001EogOREnYiel1A3B;B5A0000001u4UU=='select rowid,car_card_num,pass_time,speed from tpass2 where rowid='0001EogOREnYiel1A3B;B5A0000001u4UU==' 检查记录speed 已被修改

rowid     car_card_num     pass_time      speed
0001EogOREnYiel1A3B;B5A0000001u4UU==    京A03K4S        1388534461708
    100

注:rowid 更新不支持更新key和时间戳字段!

删除操作

delete from tpass2 where rowid='0001EogOREnYiel1A3B;B5A0000001u4UU=='

select * from tpass2 where rowid='0001EogOREnYiel1A3B;B5A0000001u4UU==' 则记录对应记录被删除   

另外hummer 的rowid 是时间有序的,即可以使用rowid><等条件,过滤给定rowid对应时间之间或之后的记录集合,如
select car_card_num,pass_time,speed from tpass2 where rowid<='0001EogOREnYiel1A3B;B5A0000000000U=='

car_card_num
     pass_time    speed
京A02QT0      1388534441140   46
京A02QT0      1388534441140       46
京A03K4S        1388534461708   59
Hummer TimeSeries DB Dock DEMO 介绍文章和下载见 http://blog.csdn.net/kanghua/article/details/44653149

你可能感兴趣的:(NoSQL,timeseries,database,IoT)