読者です 読者をやめる 読者になる 読者になる

HBaseのテーブルにはTTLを指定できる

HBase

「履歴情報を三ヶ月分だけ残しておきたい」ってことをMySQLでやると、データ量が多くなった場合にたいへん面倒なことになるが、HBaseならばTTLが指定できるということを知った。

hbase(main):026:0> create "mytable", {NAME => "value", VERSIONS => 1, TTL => 60}
0 row(s) in 1.0510 seconds                                                                                                                                                                                   
hbase(main):031:0* put "mytable", "spam", "value:x", "SPAM"
0 row(s) in 0.0020 seconds
hbase(main):032:0> put "mytable", "spam", "value:y", "EGG"
0 row(s) in 0.0030 seconds
hbase(main):033:0> put "mytable", "spam", "value:z", "HAM"
0 row(s) in 0.0020 seconds
hbase(main):034:0> get "mytable", "spam"
COLUMN                       CELL
 value:x                     timestamp=1276595279504, value=SPAM
 value:y                     timestamp=1276595285648, value=EGG
 value:z                     timestamp=1276595294857, value=HAM
3 row(s) in 0.0110 seconds
hbase(main):035:0> get "mytable", "spam"
COLUMN                       CELL
0 row(s) in 0.0070 seconds

trunk版のCassandraでもTTLを指定できるようになっているけど、安定性とかHadoopとの親和性を考えると、TTLつきの履歴情報だったならばHBaseに入れた方がいいかな。