SQL °­ÁÂ
2016.02.20 / 16:56

HBase - µ¥ÀÌÅÍ ¸ðµ¨ ÀÌÇØ Á¤¸®

¾ß¿ËÀÌ
Ãßõ ¼ö 493

# HBase µ¥ÀÌÅÍ ¸ðµ¨ Á¤¸®


HBase µ¥ÀÌÅÍ ¸ðµ¨ °³¿ä
 * Å×À̺í(Table) : HBase´Â µ¥ÀÌÅ͸¦ Å×ÀÌºí¿¡ Á¶Á÷È­ÇÑ´Ù.
   Å×À̺í À̸§Àº ½ºÆ®¸µ(String)ÀÌ´Ù. ±×¸®°í ÆÄÀÏ ½Ã½ºÅÛÀÇ °æ·Î·Î »ç¿ëÇصµ ¾ÈÀüÇÑ ¹®ÀÚ·Î ±¸¼ºµÇ¾î ÀÖ´Ù.

 * ·Î¿ì(Row) : Å×ÀÌºí ³»¿¡ ÀÖ°í, µ¥ÀÌÅÍ´Â Å×À̺íÀÇ ·Î¿ì¿¡ µû¶ó ÀúÀåµÈ´Ù.
    ·Î¿ì´Â ·Î¿ìÅ°(rowkey)¿¡ ÀÇÇØ À¯ÀÏÇÏ°Ô ½Äº°µÈ´Ù. ·Î¿ìÅ°´Â µ¥ÀÌÅÍ Å¸ÀÔÀ» °¡Áö°í ÀÖÁö ¾Ê°í byte[]·Î Ãë±ÞµÈ´Ù.

 * Ä®·³ Æйи®(Column Family) :  ·Î¿ì ³»¿¡ ÀÖ´Â µ¥ÀÌÅÍ´Â Ä®·³ Æйи®¿¡ ÀÇÇØ ±×·ìÈ­µÈ´Ù.
    Ä®·³ Æйи®´Â ¶ÇÇÑ HBase ³»ÀÇ µ¥ÀÌÅÍ ÀúÀåÀ» À§ÇÑ ¹°¸®Àû 󸮹æ½Ä¿¡ ¿µÇâÀ» ÁØ´Ù.
    ÀÌ·¯ÇÑ ÀÌÀ¯ ¶§¹®¿¡ ±×µéÀº ¸ÕÀú Á¤ÀǵǾî¾ß ÇÏ°í ½±°Ô º¯°æÇÒ ¼ö ¾ø´Ù.
    Ä®·³ Æйи®¿¡ µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ÇÊ¿ä°¡ ¾ø´Ù°í Çصµ Å×À̺íÀÇ ¸ðµç ·Î¿ì´Â µ¿ÀÏÇÑ Ä®·³ Æйи®¸¦ °¡Áø´Ù.
    Ä®·³ Æйи® À̸§Àº ½ºÆ®¸µ(String)ÀÌ°í ÆÄÀÏ ½Ã½ºÅÛÀÇ °æ·Î »ó¿¡¼­ ¾ÈÀüÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â ¹®ÀÚ·Î ±¸¼ºµÇ¾î¾ß ÇÑ´Ù.

 * Ä®·³ ÇÑÁ¤ÀÚ(Column Qualifier) : Ä®·³ Æйи® ³»ÀÇ µ¥ÀÌÅÍ´Â Ä®·³ ÇÑÁ¤ÀÚ ¶Ç´Â °£´ÜÈ÷ Ä®·³À» ÅëÇؼ­ Ç¥ÇöµÈ´Ù.
    Ä®·³ ÇÑÁ¤ÀÚ´Â »çÀü¿¡ ÁöÁ¤µÉ ÇÊ¿ä°¡ ¾ø´Ù. Ä®·³ ÇÑÁ¤ÀÚ´Â ·Î¿ì »çÀÌ¿¡ ÀÏ°ü¼ºÀÌ ÀÖÀ» ÇÊ¿ä°¡ ¾ø´Ù.
    ·Î¿ìÅ°¿Í °°ÀÌ Ä®·³ ÇÑÁ¤ÀÚ´Â Ä®·³ ŸÀÔÀ» °¡ÁöÁö ¾Ê°í Ç×»ó byte[]·Î ´Ù·ç¾îÁø´Ù.

* ¼¿(Cell) or °ª(Value) : ·Î¿ìÅ°¿Í Ä®·³ Æйи®, Ä®·³ ÇÑÁ¤ÀÚÀÇ Á¶ÇÕÀº À¯ÀÏÇÏ°Ô ¼¿À» ½Äº°ÇÏ´Â °ªÀÌ´Ù.
   ¼¿¿¡ ÀúÀåµÈ µ¥ÀÌÅÍ´Â ¼¿ÀÇ °ªÀ¸·Î ÂüÁ¶µÈ´Ù. 
   °ªµéÀº µ¥ÀÌÅÍ Å¸ÀÔÀ» °¡ÁöÁö ¾Ê°í Ç×»ó byte[]·Î Ãë±ÞµÈ´Ù.

* ¹öÀü(Version) : ¼¿ ³»ÀÇ °ªµéÀº ¹öÀüº°·Î ÀúÀåµÈ´Ù.
   ¹öÀüµéÀº long ŸÀÔÀÇ Å¸ÀÓ½ºÅÆÇÁ¿¡ ÀÇÇØ ½Äº°µÇ°í ÇöÀç ŸÀÓ½ºÅÆÇÁ´Â ±âº»°ªÀ¸·Î »ç¿ëµÈ´Ù.
   HBase¿¡ ÀÇÇØ À¯ÁöµÇ´Â ¼¿ °ªµéÀÇ ¹öÀüµéÀº Ä®·³ Æйи®¸¦ ÅëÇØ ¼³Á¤µÈ´Ù.
   ¼¿ ¹öÀüµéÀÇ ±âº» °³¼ö´Â ¼ÂÀÌ´Ù.


ÀÌµé ¿©¼¸ °³ÀÇ ±âº»ÀûÀÎ ÄÁ¼ÁÀº HBaseÀÇ ±âÃʸ¦ ÀÌ·ç°í ÀÖ´Ù.
À̵éÀº API¿¡ ÀÇÇØ Ç¥ÇöµÇ´Â ³í¸® ºä¸¦ ÅëÇؼ­ »ç¿ëÀÚ¿¡°Ô ³ëÃâµÈ´Ù.
À̵éÀº ±¸Çöü°¡ °ü¸®ÇÏ´Â ¹°¸®ÀûÀÎ µð½ºÅ© »óÀÇ µ¥ÀÌÅÍ À§ÀÇ ±¸Á¶ÀÌ´Ù.
ÀÌ ¿©¼¸ °¡Áö ÄÁ¼ÁÀ» È®½ÇÈ÷ ¾Ë°í ÀÖÀ¸¸é HBase¸¦ ÀÌÇØÇÏ´Â µ¥ Å©°Ô µµ¿òÀÌ µÉ °ÍÀÌ´Ù.

HBase¿¡¼­ À¯ÀÏÇÑ µ¥ÀÌÅÍ °ªÀº ÄÚµð³×ÀÌÆ®¿¡ ÀÇÇØ Á¢¼ÓµÈ´Ù.
°ªÀ» À§ÇÑ ¿ÏÀüÇÑ ÄÚµð³×ÀÌÆ®´Â ·Î¿ìÅ°, Ä®·³ Æйи®, Ä®·³ ÇÑÁ¤ÀÚ, ¹öÀü ÀÌ´Ù.



# µ¥ÀÌÅÍ ÄÚµð³×ÀÌÆ®
³í¸®ÀûÀÎ µ¥ÀÌÅÍ ¸ðµ¨¿¡¼­ ¹öÀü ¼ýÀÚ´Â µ¥ÀÌÅÍ Á¶°¢ÀÇ À§Ä¡¸¦ ¾Ë·ÁÁÖ´Â ÄÚµð³×ÀÌÆ®ÀÇ ÀϺκÐÀÌ´Ù.
·Î¿ì¿Í Ä®·³¿¡ ±â¹ÝÇÑ 2D ÄÚµð³×ÀÌÆ® ½Ã½ºÅÛÀÎ Å×ÀÌºí¿¡ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â °ü°èÇü µ¥ÀÌÅͺ£À̽º¸¦ »ý°¢ÇÒ ¼ö ÀÖ´Ù.
HBase´Â 4D ÄÚµð³×ÀÌÆ® ½Ã½ºÅÛ¿¡ ±â¹ÝÇÑ Å×ÀÌºí¿¡ µ¥ÀÌÅ͸¦ ÀúÀåÇÑ´Ù.
HBase¿¡ ÀÇÇØ »ç¿ëµÇ´Â ÄÚµð³×ÀÌÆ®µéÀº ¼ø¼­´ë·Î ·Î¿ìÅ° > Ä®·³ Æйи® > Ä®·³ ÇÑÁ¤ÀÚ > ¹öÀü ÀÌ´Ù.

ÄÚµð³×ÀÌÆ®¸¦ ÀüºÎ ÇϳªÀÇ ´ÜÀ§·Î °í·ÁÇÑ´Ù¸é HBase¸¦ Å° ¹ë·ù ÀúÀå¼Ò·Î »ý°¢ÇÒ ¼ö ÀÖ´Ù.
³í¸® µ¥ÀÌÅÍ ¸ðµ¨ÀÇ Ãß»óÈ­¸¦ ¿°µÎ¿¡ µÐ´Ù¸é ÄÚµð³×ÀÌÆ®¸¦ Å°·Î, ¼¿ÀÇ µ¥ÀÌÅ͸¦ °ªÀ¸·Î »ý°¢ÇÒ ¼ö ÀÖ´Ù.

»ç¿ëÀÚ »ðÀÔ À̹ÌÁö












»ç¿ëÀÚ »ðÀÔ À̹ÌÁö










# »ùÇà µ¥ÀÌÅÍ Å×½ºÆ®

»ç¿ëÀÚ »ðÀÔ À̹ÌÁö


# RDBMS ¿Í HBase Å×ÀÌºí ±¸Á¶

»ç¿ëÀÚ »ðÀÔ À̹ÌÁö


# HBase Å×ÀÌºí »ý¼º¹× Á¶È¸

test_table Å×ÀÌºí »ý¼º

hbase(main):065:0> create 'test_table', 'fam1'


test_table¿¡ Column family Ãß°¡

hbase(main):065:0> alter 'test_table', 'fam2'

Updating all regions with the new schema...

1/1 regions updated.

Done.

0 row(s) in 1.9410 seconds


> row1 ÀÔ·Â

put 'test_table', 'row1', 'fam1:id', '101'

put 'test_table', 'row1', 'fam1:name_first', 'Adam'

put 'test_table', 'row1', 'fam1:name_last', 'Wiley'

put 'test_table', 'row1', 'fam2:department', 'Sales'


> row2 ÀÔ·Â

put 'test_table', 'row2', 'fam1:id', '102'

put 'test_table', 'row2', 'fam1:name_first', 'Brian'

put 'test_table', 'row2', 'fam1:name_last', 'Chester'

put 'test_table', 'row2', 'fam2:department', 'Service'


> row3 ÀÔ·Â

put 'test_table', 'row3', 'fam1:id', '103'

put 'test_table', 'row3', 'fam1:name_first', 'Julian'

put 'test_table', 'row3', 'fam2:department', 'Sales¡®

test_table ·Î¿ì Á¶È¸

hbase(main):113:0> scan 'test_table'

ROW         COLUMN+CELL

 row1        column=fam1:id, timestamp=1446797570439, value=101

 row1        column=fam1:name_first, timestamp=1446797570461, value=Adam

 row1        column=fam1:name_last, timestamp=1446797570480, value=Wiley

 row1        column=fam2:department, timestamp=1446797570892, value=Sales

 row2        column=fam1:id, timestamp=1446799156978, value=102

 row2        column=fam1:name_first, timestamp=1446799156999, value=Brian

 row2        column=fam1:name_last, timestamp=1446799157018, value=Chester

 row2        column=fam2:department, timestamp=1446799157866, value=Service

 row3        column=fam1:id, timestamp=1446799886855, value=103

 row3        column=fam1:name_first, timestamp=1446799886868, value=Julian

 row3        column=fam2:department, timestamp=1446799887276, value=Sales

3 row(s) in 0.0120 seconds   -- ·Î¿ì ±×·ì °Ç¼ö


hbase(main):114:0> get 'test_table', 'row1'

COLUMN                          CELL

 fam1:id                        timestamp=1446797570439, value=101

 fam1:name_first                timestamp=1446797570461, value=Adam

 fam1:name_last                 timestamp=1446797570480, value=Wiley

 fam2:department                timestamp=1446797570892, value=Sales

4 row(s) in 0.0040 seconds   -- Ä÷³ °Ç¼ö


hbase(main):135:0> get 'test_table', 'row3', 'fam1:name_first'

COLUMN                          CELL

 fam1:name_first                timestamp=1446799799517, value=Julian

1 row(s) in 0.0210 seconds

hbase(main):149:0> get 'test_table', 'row1', ['fam1:id', 'fam1:name_first', 'fam1:name_last']

COLUMN            CELL

 fam1:id              timestamp=1446797570439, value=101

 fam1:name_first   timestamp=1446797570461, value=Adam

 fam1:name_last   timestamp=1446797570480, value=Wiley

3 row(s) in 0.0060 seconds


hbase(main):150:0> get 'test_table', 'row1', ['fam1:name_first', 'fam1:name_last']

COLUMN            CELL

 fam1:name_first   timestamp=1446797570461, value=Adam

 fam1:name_last   timestamp=1446797570480, value=Wiley

2 row(s) in 0.0050 seconds


hbase(main):161:0> scan 'test_table', {"COLUMNS" => ['fam1:id', 'fam1:name_first', 'fam1:name_last']}

ROW                  COLUMN+CELL                      

 row1                 column=fam1:id, timestamp=1446797570439, value=101         

 row1                 column=fam1:name_first, timestamp=1446797570461, value=Adam 

 row1                 column=fam1:name_last, timestamp=1446797570480, value=Wiley 

 row2                 column=fam1:id, timestamp=1446799156978, value=102         

 row2                 column=fam1:name_first, timestamp=1446799156999, value=Brian

 row2                 column=fam1:name_last, timestamp=1446799157018, value=Chester

 row3                 column=fam1:id, timestamp=1446799886855, value=103         

 row3                 column=fam1:name_first, timestamp=1446799886868, value=Julian

3 row(s) in 0.0090 seconds


hbase(main):162:0> get 'test_table', 'row1', {"COLUMNS" => ['fam1:id', 'fam1:name_first', 'fam1:name_last']}

COLUMN            CELL

 fam1:id              timestamp=1446797570439, value=101

 fam1:name_first   timestamp=1446797570461, value=Adam

 fam1:name_last   timestamp=1446797570480, value=Wiley

3 row(s) in 0.0080 seconds



Âü°í µµ¼­ : HBase Àξ׼Ç