HBase中資料的多版本特性潛在的意外

2021-09-08 20:40:06 字數 693 閱讀 8339

2011-11

-08部落格分類:hbase

hbase

多版本刪除

時間戳keyvalue

hbase做為keyvalue結構儲存,在儲存上是依照rowkey的字典序進行排序,對於很多應用而言這可能遠遠不夠,好在hbase的資料可以儲存多個版本,並且版本可以排序,其理論上最大的版本數目integer.max_value,這在一定程度上簡化應用端的設計 

舉個例子,假設現在有乙個應用,對使用者的每次登入資訊(如:時間+ip)進行,並要求可以快速獲取指定使用者的最近登入資訊,如果選用hbase儲存則可以設計為:rowkey為使用者id,value為ip位址,並指定timestamp為登入時間,依照版本的保留特性,可以很容易地儲存使用者近一月、近一年的登入資訊。 

看起來上面的設計很不錯,畢竟使用者啥都不需要操作,hbase可以很容易為你保留近一段時間內的資料 

但是,如果一知半解,很可能會發生一些你意料之外的現象 

1.先後插入兩條資料,他們擁有相同的rowkey,列,以及timestamp,不同的value 

實際結果:只能獲取到第2次插入的資料,而不是兩個版本 

2.先插入一條資料,版本為t1,然後刪除版本t1,再插入一條資料,版本仍為t1 

實際結果:讀取版本為t1的資料時為空 

3.先刪除版本小於t1的資料,再插入一條資料,版本為t2,並且t2

hbase的高階特性 多版本

1 多版本 hbase的多版本是利用hbase針對某個列族控制最多可以放入的資料個數,我們只需修改表中的versions值就可以,如果versions值是1,那麼我們只可以在這個cell單元中存放乙個值,如果versions的值是2,那麼我們可以往cell最多存放2個值。接下來我們測試一下 1 先建...

Python中多版本的interpreter選擇

電腦上裝了python2.7 和 python3.6.1,而且還安裝了anaconda anaconda中有自帶的python解析器,我的是anaconda 4.4 通過pip install 命令安裝的包都會儲存在.python python36 32 lib site packages下面 py...

PostgreSQL中的多版本併發控制

多版本併發控制的原理 在併發操作中,當正在寫時,如果使用者在讀,可能會產生資料不一致的問題。比如一行的前半部分剛寫入,後半部分還沒有寫入,這時讀的人可能讀取到的資料行,其前半部分資料是新的,後半部分資料是舊的,這樣就導致了資料一致性問題。解決這個問題最簡單的辦法是使用讀寫鎖。寫的時候,不允許讀,正在...