Hbase独自のtable/Data操作

出典: LunaBiblos

Software > DataBase > KeyValueストア > Hbaseの利用 > Hbase独自のtable/Data操作

目次

概要

Sampleで作ったDataを利用して、Hbase独自のData構造と利用方法の解説です。
今回はHbaseの仕様を解説していますが、BigTableをはじめとする主要なKeyValueストアはこれに近いData構造を持っています。
なお利用するTableの情報は大きな図になってしまうので別ページHbase解説用Data図に纏めてあります。

要点

  • 基本的にRow(Key)のみ検索が可能
  • ColumnFamilyとColumnの違いを理解する
  • create文で作る事が出来るのはColumnFamilyである
  • 今回はColumnFamily+Columnを便宜的に項目と呼ぶ
  • ColumnはPut文(Data登録時)に指定する
  • Columnの有無を利用して検索は可能

Data取得

Case1

利用Hbase Shell:get 'TEST_TYPE','KEY00001', {COLUMN => 'ColumnFamilyA:'}

timestamp=1254899183419, value=k1_cfA0
timestamp=1254898804238, value=k1_cfA_c1
timestamp=1254898807266, value=k1_cfA_c2
timestamp=1254898811462, value=k1_cfA_c3
timestamp=1254902678018, value=OnlyKEY1

Case2

利用Hbase Shell:get 'TEST_TYPE','KEY00001', {COLUMN => ['ColumnFamilyA:','ColumnFamilyB:']}

ColumnFamilyA:              timestamp=1254899183419, value=k1_cfA0
ColumnFamilyA:Column1       timestamp=1254898804238, value=k1_cfA_c1
ColumnFamilyA:Column2       timestamp=1254898807266, value=k1_cfA_c2
ColumnFamilyA:Column3       timestamp=1254898811462, value=k1_cfA_c3
ColumnFamilyA:OnlyKEY1      timestamp=1254902678018, value=OnlyKEY1
ColumnFamilyB:              timestamp=1254899186434, value=k1_cfB0
ColumnFamilyB:Column1       timestamp=1254898814592, value=k1_cfB_c1
ColumnFamilyB:Column2       timestamp=1254898817548, value=k1_cfB_c2
ColumnFamilyB:Column3       timestamp=1254898820692, value=k1_cfB_c3

Case3

利用Hbase Shell:get 'TEST_TYPE','KEY00001', {COLUMN => ['ColumnFamilyA:','ColumnFamilyB:Column1']}

ColumnFamilyA:              timestamp=1254899183419, value=k1_cfA0
ColumnFamilyA:Column1       timestamp=1254898804238, value=k1_cfA_c1
ColumnFamilyA:Column2       timestamp=1254898807266, value=k1_cfA_c2
ColumnFamilyA:Column3       timestamp=1254898811462, value=k1_cfA_c3
ColumnFamilyA:OnlyKEY1      timestamp=1254902678018, value=OnlyKEY1
ColumnFamilyB:Column1       timestamp=1254898814592, value=k1_cfB_c1

Case4

利用Hbase Shell:get 'TEST_TYPE','KEY00001', {COLUMNS => ['ColumnFamilyA:Column1','ColumnFamilyB:Column1']}

ColumnFamilyA:Column1       timestamp=1254898804238, value=k1_cfA_c1
ColumnFamilyB:Column1       timestamp=1254898814592, value=k1_cfB_c1

Case5

利用Hbase Shell:get 'TEST_TYPE','KEY00001', {COLUMN => 'ColumnFamilyA:Column1'}

timestamp=1254898804238, value=k1_cfA_c1

検索

Case1

利用Hbase Shell:scan 'TEST_TYPE',{COLUMNS => 'ColumnFamilyA:Column1'}

KEY00001                    column=ColumnFamilyA:Column1, timestamp=1254898804238, value=k1_cfA_c1
KEY00002                    column=ColumnFamilyA:Column1, timestamp=1254898840631, value=k2_cfA_c1
KEY00003                    column=ColumnFamilyA:Column1, timestamp=1254898876787, value=k3_cfA_c1

Case2

利用Hbase Shell:scan 'TEST_TYPE',{COLUMNS => 'ColumnFamilyA:OnlyKEY1'}

KEY00001                    column=ColumnFamilyA:OnlyKEY1, timestamp=1254902678018, value=OnlyKEY1