
๋ค์ด๊ฐ๋ฉฐ
- Hbase๋ฅผ ํ์ฉํ๊ธฐ ์ํด์๋ Key ์ค๊ณ๊ฐ ๋ฌด์๋ณด๋ค ์ค์ํ๋ค.
- Hbase๋ ์ด๋ป๊ฒ ์ ์ฅ์ด ๋๊ณ ์ด๋ป๊ฒ ์ค๊ณํ๋๊ฒ ์ข์์ง ์ดํดํ๊ธฐ ์ํด ์์ฑํ๋ค.
Hbase Key Design์ ๋ํด
Hbase๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ ์ฅํ ๊น?

- ์ผ์ชฝ ์๋จ์ ๊ทธ๋ฆผ์ ๋ฐ์ดํฐ๋ฅผ ๋
ผ๋ฆฌ์ ์ผ๋ก ํํํ ๊ทธ๋ฆผ์ด๋ค.
Row
์ Column[Family:Qualifier]
๋ก ๊ตฌ์ฑ๋ ๋ชจ์ต์ด๋ค.
- ์ค๋ฅธ์ชฝ ์๋จ&ํ๋จ ๊ทธ๋ฆผ์ ๋
ผ๋ฆฌ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ์ฅํ๋ ๊ณผ์ ์ ํํํ ๊ทธ๋ฆผ์ด๋ค.
Column-Famliy
๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
- ์๊น์ ์งํจ์
Version์ ์๋ฏธ
ํ๊ณ ํ์์คํฌํ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ์ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
Null๊ฐ
์ ์ ์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ RowKey
, Column ์ ๋ณด
๋ฅผ ํฌํจํ์ฌ ์ ์ฅํ๋ค.
์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ป๊ธฐ ์ํด์๋?

- ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ์๋ก Scan ๋ฒ์๊ฐ ์ปค์ง๋ ์ ์ ์ ์ ์๋ค.
- Performance๊ฐ ์์ข์์ง๋ค.
- ํน์ RowKey๋ฅผ ๊ฒ์ํ ๋
Column-Famliy
๋ฅผ ์ง์ ํ๋ฉด ์์ Scan ๋ฒ์๋ก ๋น ๋ฅธ ์๋๋ฅผ ์ป์ ์ ์๋ค.
Column-Qualifier
๋จ์์ ์กฐ๊ฑด์ ์ฑ๋ฅ์ ์ด์ ์ ํฌ๊ฒ ์๋ค.
๊ทธ๋ผ ์ด๋ค ํํ๋ก ์ค๊ณํ์ฌ ์ ์ฅํด์ผํ ๊น?

- ๋ ์ข
๋ฅ์ ํ
์ด๋ธ์ด ์๋ค.
- ์ผ์ชฝ :
userID : colfam : messageID : timestamp : emali-message
- ์ค๋ฅธ์ชฝ :
userID-messageID : colfam : : timestamp : emali-message
- ๋ ํ
์ด๋ธ์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ์์๋ ์๋ฌด๋ฐ ์ฐจ์ด๊ฐ ์์ง๋ง..
- Hbase ํน์ฑ์
RowKey ๊ธฐ์ค์ผ๋ก ๋ถํ ํ๋ ํน์ฑ
๋๋ฌธ์ ์ค๋ฅธ์ชฝ ํํ์ ์ค๊ณ๋ฅผ ๊ถ์ฅํ๋ค.
- ์ผ์ชฝ ์ค๊ณ๋ผ๋ฉด
Heavy User์ ๋ฐ์ดํฐ
๋ฅผ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐํ ์ ์๋ ๋จ์ ์ด ์๋ค.
๊ทธ๋ ๋ค๋ฉด ํญ์ ๋ณตํฉ RowKey๊ฐ ์ ๋ต์ผ๊น?
- ๋ณตํฉ RowKey๋ก ํ
์ด๋ธ์ ๊ตฌ์ฑํ๋ฉด
User
๋ก ์งํํ๋ ์์
์ ๋ํด ์์์ฑ์ ์๊ฒ ๋๋ค.
- ๋จ์ผ Rowkey๋ UserID๋ก ๋ชจ๋ Message๋ฅผ ์ฝ๊ฑฐ๋ ์์ ํ ์ ์์์ง๋ง
- ๋ณตํฉ Rowkey์ธ ๊ฒฝ์ฐ UserID๋ง ๊ฐ์ง๊ณ ๋ ๋ชจ๋ Message๋ฅผ ์์ ํ๊ธฐ ์ด๋ ต๋ค.
Hbase์ Rowkey ๋์์ธ ๊ฐ์ด๋
- ์๋ชป๋ RowKey๋ Hotspotting์ ์ ๋ฐํ ์ ์์ผ๋ ์ฃผ์ํ์.
- ํ๋์ Region Server์ ๋ง์ ํธ๋ํฝ์ด ์ง์ค๋ ์ ์๋ค.
- ์ด๋ฅผ ํํผํ๊ธฐ ์ํด์๋
Salting / Hashing / Reversing Key
์ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
- ํธ๋ํฝ์ ๋ถ์ฐ๋์์ง๋ง.. Read ์ฑ๋ฅ์ ๋จ์ด์ง๋ ๋จ์ ์ ๊ฐ์ง๊ณ ์๋ค.
- ์์ฐจ์ ์ธ Row Key / TimeseriesData ์ค๊ณ๋ ์ต๋ํ ํผํ์.
- ์์ฐจ์ ์ผ๋ก ์ ๋ ฌ๋ RowKey ์ํฉ์์ ํน์ Range๋ง ํธ๋ํฝ์ ๋ฐ๋ ๊ฒฝ์ฐ
- Rowkey๊ธฐ๋ฐ์ผ๋ก Region์ ๋ถ์ฐํด๋ ํธ๋ํฝ์ด ์ ๋๋ก ๋ถ์ฐ์ด ์๋ ์ ์๋ค.
- monotonically increasing values are bad
- Row์ Column ์ด๋ฆ์ ์๊ฒ ๋ง๋ค์.
Column Families
: ์ต๋ํ ์งง์ ์ด๋ฆ์ผ๋ก ์ค๊ณ (์: data๋ d)
Attributes
๋ก ์ฝ๊ธฐ ์ฌ์ด ๋ค์ด๋ฐ๋ณด๋จ ์งง์ ์ด๋ฆ์ผ๋ก ์ค๊ณ
Rowkey Length
๋ ์ต๋ํ ์งง๊ฒ
long
์ byte๋ก ์ ์ฅํ๋ฉด 8byte
์ด๋ฅผ String์ผ๋ก ์ ์ฅํ์ฌ byte๋ก ๋ณํํ๋ฉด ๊ฑฐ์ 3xbytes
์ ์ ์ฅ๋๋ค.
- ์ฝ๊ธฐ๋ ์ด๋ ต์ง๋ง / ๋ฐ์ดํฐ๋ฅผ ์๊ฒ ๋ง๋ค ์ ์๋ค.
- ์ ์ด๋ ๊ฒ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ์๊ฒ ์ค๊ณํ๋ผ๊ณ ํ ๊น?
Reference