- Bigtable
- Bigtable/DataModel
- Bigtable/MasterServer
- Bigtable/TabletServer
- Bigtable/๋ถ์๋ฐ์ค๊ณ
- Bigtable๊ธฐ๋ฅ๋ช ์ธ
1. ๊ตฌ์กฐ ¶
ํ
์ด๋ธ -> ํ๋ธ๋ฆฟ -> SSTABLE -> block
- ํ
์ด๋ธ์ ํ๋ธ๋ฆฟ๋ค์ ๋
ผ๋ฆฌ์ ์ธ ์งํฉ.
- ํ๋ธ๋ฆฟ์ SSTABLE๋ค์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋์ด์์ผ๋ฉฐ SSTABLE๋ค์ ๋ฆฌ์คํธ๋ฅผ ์ ์ฅํ๊ณ ์๋ค.
- SSTABLE์ block์ ์งํฉ์ด๋ฉฐ block๋ค์ ์ฃผ์์ ์คํ์
์ผ๋ก ๊ตฌ์ฑ๋์ด์๋ค.
2. ํ ์ด๋ธ ¶
๋ฐ์ดํฐ ์ ์ฅ ํ์์ 3์ฐจ์ ํ
์ด๋ธํํ. ํ(row key), ์ด(column), ๊น์ด(timestamp)
ํ๋ธ๋ฆฟ์ ๋ชจ๋ ํฉ๋ณํ๋ฉด ํ ์ด๋ธ์ด ๋๋ค.
ํ๋ธ๋ฆฟ์ ๋ชจ๋ ํฉ๋ณํ๋ฉด ํ ์ด๋ธ์ด ๋๋ค.
- Key - value
- row key : url(๋๋ ๋ฐ์ดํฐ๊ฐ์ ๋ํ, ์ ๋ชฉ๋ฑ)
- column family : column ์ข
๋ฅ
- ์ต์ปค
- ์ฝํ
์ธ (์ ๋ชฉ?) <- ์ปฌ๋ผ์ ๊ฐ์ด value
- Title
- ์ต์ปค
- timestamp๋ ๋ณ๋
- value : ํด๋น ์ฌ์ดํธ/ํค์ ๋งคํ๋๋ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๊ฐ
- row key : url(๋๋ ๋ฐ์ดํฐ๊ฐ์ ๋ํ, ์ ๋ชฉ๋ฑ)
3. ํ๋ธ๋ฆฟ ¶
ํ๋ธ๋ฆฟ์ ๋ชจ๋ ํฉ๋ณํ๋ฉด ํ
์ด๋ธ์ด ๋๋ค.
ํ๋ธ๋ฆฟ์ SSTABLE๋ค์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋์ด์์ผ๋ฉฐ SSTABLE๋ค์ ๋ฆฌ์คํธ๋ฅผ ์ ์ฅํ๊ณ ์๋ค.
ํ๋ธ๋ฆฟ์ SSTABLE๋ค์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋์ด์์ผ๋ฉฐ SSTABLE๋ค์ ๋ฆฌ์คํธ๋ฅผ ์ ์ฅํ๊ณ ์๋ค.
- ํ๋ธ๋ฆฟ์ ์ด๋ฆ์ : ๋ง์ง๋ง ํค -> ์นดํ๋ก๊ทธ์ ๋งคํํ์
- ๋ง์ง๋ง ํค๋ ์นดํ๋ก๊ทธ์์ shorten id์ ๋งคํ๋์ด์๋ค.
- ๋ง์ง๋ง ํค๋ ์นดํ๋ก๊ทธ์์ shorten id์ ๋งคํ๋์ด์๋ค.
- ํ๋ธ๋ฆฟ์ ํ๋ ์ด์์ row๋ก ๊ตฌ์ฑ๋จ.
- ํ๋ธ๋ฆฟ์ SSTABLE์ ID+์คํ์
์ ๋ฆฌ์คํธ๋ฅผ ์ ์ฅํ๊ณ ์๋ค.
3.1. SPLIT ¶
1. split ํ์ฉ
- ํธ๋ฆฌ๊ฑฐ : ํ๋ธ๋ฆฟ ํฌ๊ธฐ๊ฐ 200MB ์ด์์ผ๋
- row๋ ํ๋ ์ด์์ ํ๋ธ๋ฆฟ์ ์กด์ฌํ ์ ์๋ค.
4. SSTable ¶
SSTABLE์ ํ๋์ memtable๊ณผ block์ ์์์ฃผ์์ ์คํ์
๋ค๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
DFS ์ต์ ํ์ผ ๋จ์
DFS ์ต์ ํ์ผ ๋จ์
- SSTABLE ๋ช
?
- ํ๋ธ๋ฆฟId
- + ๋ง์ง๋ง row key
- ํ๋ธ๋ฆฟId
- ๋ฐ์ดํฐ ๋ธ๋ก๊ณผ ์ธ๋ฑ์ค ๋ธ๋ก
- ๋ฐ์ดํฐ ๋ธ๋ก
- ์ธ๋ฑ์ค ๋ธ๋ก
- ์ฝ 64KB๋ง๋ค ์กด์ฌํ๋ row key๋ฅผ ๋ธ๋ก์ ์ธ๋ฑ์ค๋ก ํ๋ค.
- ๋ธ๋ก์ ์ธ๋ฑ์ค์ ์ค์ ํ์ผ์ ์ฃผ์๋ฅผ
- ์ฝ 64KB๋ง๋ค ์กด์ฌํ๋ row key๋ฅผ ๋ธ๋ก์ ์ธ๋ฑ์ค๋ก ํ๋ค.
- ๋ฐ์ดํฐ ๋ธ๋ก
- ๋ค์์ ํ๋ธ๋ฆฟ์ด ํ๋์ SSTable์ ์ฐธ์กฐํ ๋์ ๋ฌธ์ ์ ?
5. ๋ธ๋ก ¶
- ๋ธ๋ก์ 64KB๋ด์ธ์ ์์์ ์ธ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
- SSTABLE์ ์ฃผ์์ ์คํ์
์ผ๋ก ๋ธ๋ก๋ค์ด ๊ตฌ๋ถ๋๋ค.
- SSTABLE์ ์ฃผ์์ ์คํ์
์ผ๋ก ๋ธ๋ก๋ค์ด ๊ตฌ๋ถ๋๋ค.
- ๋ช
์์ ์ธ ์๋ฃ๊ตฌ์กฐ๊ฐ ์๋๋ผ SSTable์์ row key๋ค๋ก ๊ตฌ๋ถ๋์ด์ง ๋ฒ์์ด๋ค.
- ๋ธ๋ก ์ธ๋ฑ์ค๋ก ์ ํ๋ row key๋ถํฐ ๋ค์ ๋ธ๋ก ์ธ๋ฑ์ค๋ก ์ ํ๋ row key๊ฐ ๋์ฌ ๋ ๊น์ง๋ฅผ ํ๋์ ๋ธ๋ก ๋จ์๋ก ํ๋ค.
- ๋ฐ๋์ 64KB๊ฐ ๋์ง๋ ์์
- ๋ธ๋ก ์ธ๋ฑ์ค๋ก ์ ํ๋ row key๋ถํฐ ๋ค์ ๋ธ๋ก ์ธ๋ฑ์ค๋ก ์ ํ๋ row key๊ฐ ๋์ฌ ๋ ๊น์ง๋ฅผ ํ๋์ ๋ธ๋ก ๋จ์๋ก ํ๋ค.
6. memtable ¶
1. ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋์ด์๋ค.
1. ํ๋ธ๋ฆฟ๋น ํ๊ฐ
1. ์ฐ๊ธฐ๋ฐ์ ์๋จ.
1. ๋ฐ์ดํฐ ๋ธ๋ญ๊ณผ ์ธ๋ฑ์ค ๋ธ๋ญ์ผ๋ก ๋๋์ด์ง
1. SSTABLE๋ค์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๋ค
1. ํ๋ธ๋ฆฟ๋น ํ๊ฐ
1. ์ฐ๊ธฐ๋ฐ์ ์๋จ.
1. ๋ฐ์ดํฐ ๋ธ๋ญ๊ณผ ์ธ๋ฑ์ค ๋ธ๋ญ์ผ๋ก ๋๋์ด์ง
- ํฌ๊ธฐ
- ๋ฐ์ดํฐ ๋ธ๋ญ ํฌ๊ธฐ : 32MB
- ์ธ๋ฑ์ค ๋ธ๋ญ์ ํฌ๊ธฐ์ ํ ์๋ค.
- ๋ฐ์ดํฐ ๋ธ๋ญ ํฌ๊ธฐ : 32MB
- ๋ฐ์ดํฐ
- ๋ฐ์ดํฐ ๋ธ๋ญ : ํค:๊ฐ์ ์ด๋ค.
- ์ธ๋ฑ์ค ๋ธ๋ญ : ํ๋ธ๋ฆฟ์ด ์ฐธ์กฐํ๊ณ ์๋ SSTable์ ๋ธ๋ญ ์ธ๋ฑ์ค๋ค merge
- ๋ฐ์ดํฐ ๋ธ๋ญ : ํค:๊ฐ์ ์ด๋ค.
1. SSTABLE๋ค์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๋ค
- ์ธ๋ฑ์ค๋ ์ด๋ป๊ฒ?
7. ๋ก์ปฌ๋ฆฌํฐ ๊ทธ๋ฃน ¶
ํน์ ์ปฌ๋ผ์ ๊ฐ์ง๋ row๋ค์ ๋ณ๋์ ํ๋ธ๋ฆฟ์ ์ ์ฅํ ๊ฒ. ex) ํ์ดํ
- TS์ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ค.
- ํน์ ์ปฌ๋ผ ์ข
๋ฅ๋ง์ ๊ฐ์ง๋ค. ex) title
8. ์ปค๋ฐ๋ก๊ทธ ¶
- ํ๋ธ๋ฆฟ์ ID + ์ฐ๋ ค๋ ํค:๋ฐธ๋ฅ
- ํ๋ธ๋ฆฟ์ ID์ ํ๋ธ๋ฆฟ์ ๊ฐ์ฅ ๋ง์ง๋ง ํค๋ฅผ ์ด์ฉํด ๋ง๋ ๋ค.
- ํ๋ธ๋ฆฟ์ ID์ ๋งคํํ
์ด๋ธ(์นดํ๋ก๊ทธ)์์ ์งง์ ID์ผ๋ก ๋์ฒด๋จ.
- ํ๋ธ๋ฆฟ์ ID์ ํ๋ธ๋ฆฟ์ ๊ฐ์ฅ ๋ง์ง๋ง ํค๋ฅผ ์ด์ฉํด ๋ง๋ ๋ค.
- ์ ์ฅ๊ณต๊ฐ์ ์ฌ์ฌ์ฉ : ์ปค๋ฐ๋ก๊ทธ๋ ์ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ๊ณต๊ฐ์ ์ฌ์ฌ์ฉํ๋๋ก ํ๋ค.
- ์ปค๋ฐ๋ก๊ทธ์ ๊ฐ์ฅ ๋ง์ง๋ง ํ์์คํฌํ์ memtable์ ๊ฐ์ฅ ์ค๋๋ ํ์์คํฌํ์ ๋น๊ตํ์ฌ memtable์ ํ์์คํฌํ๊ฐ ๋ ์ต์ ์ด๋ผ๋ฉด ๋ก๊ทธ์ญ์ ๊ฐ๋ฅ
- memtable์ T/S๊ฐ ๋ ์ต์ ์ด ์๋๋ผ๋ฉด minor compaction์ ํ์ฌ ๋ก๊ทธ๋ฅผ ๋น์ด๋ค.
- ์ปค๋ฐ๋ก๊ทธ์ ๊ฐ์ฅ ๋ง์ง๋ง ํ์์คํฌํ์ memtable์ ๊ฐ์ฅ ์ค๋๋ ํ์์คํฌํ์ ๋น๊ตํ์ฌ memtable์ ํ์์คํฌํ๊ฐ ๋ ์ต์ ์ด๋ผ๋ฉด ๋ก๊ทธ์ญ์ ๊ฐ๋ฅ
9. ์นดํ๋ก๊ทธ ¶
- ์นดํ๋ก๊ทธ์ ์ฃผ์๋ Locker์ ๋ฑ๋ก๋์ด์๋ค. (client์ ์ ๊ทผ์ ์ํด Locker์ ๋ฑ๋ก)
- ์นดํ๋ก๊ทธ ๋ํ ํ๋ธ๋ฆฟ. TS๊ฐ ๊ด๋ฆฌํ๋ค.
- ์นดํ๋ก๊ทธ์ ํ์ํ ๊ฒ
- ํ๋ธ๋ฆฟ ID ๋งคํ ํ
์ด๋ธ
- ์ปฌ๋ผ ํจ๋ฐ๋ฆฌ ๊ฐ์
- ์นดํ๋ก๊ทธ ์ ์ฉ ํ์ผ ํ์?? SSTable ํ๋๋ฅผ ํ ๋น๋ฐ์ ๋ค ์ธ๋๊น์ง ํด์ ํ์ง ์๋๊ฑด ์ด๋จ๊น?
- ํ๋ธ๋ฆฟ ID ๋งคํ ํ
์ด๋ธ
- ISSUE
- ์นดํ๋ก๊ทธ์ ์ธ์ ์ ๊ทผํ ๊ฒ์ธ๊ฐ?
- ์นดํ๋ก๊ทธ์ ์ธ์ ์ ๊ทผํ ๊ฒ์ธ๊ฐ?
10. ํ๋ธ๋ฆฟ ์ปด์ ํธ๋ฆฌ/ ํ๋ธ๋ฆฟ ํธ๋์ปค ¶
๋ฃจํธํ๋ธ๋ฆฟ, ๋ฉํ๋ฐ์ดํฐ ํ๋ธ๋ฆฟ, ์ ์ ํ๋ธ๋ฆฟ์ผ๋ก ๊ตฌ์ฑ๋จ. ์ผ๋ฐ ํ๋ธ๋ฆฟ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก SSTABLE๋ก ์ด๋ฃจ์ด์ ธ์์ผ๋ฉฐ write only์.
์๋ฃ๊ตฌ์กฐ : B+-ํธ๋ฆฌ -- ๋ฐฐ์ด(๋ฃจํธ, ๋ฉํํ๋ธ๋ฆฟ) + ๋ฆฌ์คํธ(์ ์ ํ๋ธ๋ฆฟ) --
์๋ฃ๊ตฌ์กฐ : B+-ํธ๋ฆฌ -- ๋ฐฐ์ด(๋ฃจํธ, ๋ฉํํ๋ธ๋ฆฟ) + ๋ฆฌ์คํธ(์ ์ ํ๋ธ๋ฆฟ) --
- ๋ฃจํธ ํ๋ธ๋ฆฟ
- Locker์ ์์น๊ฐ ๊ธฐ๋ก๋๋ค
- ๋ฉํํ๋ธ๋ฆฟ์ด ๋ถํ ๋ ๋(๋๋ ์ฝ์
๋ ๋) ๊ฐฑ์ ๋จ.
- ๋ฃจํธํ๋ธ๋ฆฟ์ ์์ ํ๋๋ ๋ฉํ๋ฐ์ดํฐ ํ๋ธ๋ฆฟ๊ณผ ๋งค์นญ๋๋ค.
- Locker์ ์์น๊ฐ ๊ธฐ๋ก๋๋ค
- ๋ฉํ๋ฐ์ดํฐ ํ๋ธ๋ฆฟ
- ์ ์ ํ๋ธ๋ฆฟ์ด ๋ถํ ๋ ๋(๋๋ ์ฝ์
๋ ๋) ๊ฐฑ์ ๋จ
- ์ ์ ํ๋ธ๋ฆฟ์ด ๋ถํ ๋ ๋(๋๋ ์ฝ์
๋ ๋) ๊ฐฑ์ ๋จ
- ์ ์ ํ๋ธ๋ฆฟ
- ํ๋ธ๋ฆฟ ID(row key)์ ํ๋ธ๋ฆฟ ์๋ฒ ๋งคํํด์ค.
- ํ๋ธ๋ฆฟ์ด ์ด๋์ ์ ์ฅ๋์ด์๋์ง ์ ์ ์์.
- ํ๋ธ๋ฆฟ ID(row key)์ ํ๋ธ๋ฆฟ ์๋ฒ ๋งคํํด์ค.
- ์ ์ฅ ๋ฐ์ดํฐ
- key : ํ๋ธ๋ฆฟ ID(row key)
value : IP+port#
- key : ํ๋ธ๋ฆฟ ID(row key)