U E D R , A S I H C RSS

Bigtable/Data Model

1. ตฌกฐ

…Œด๋ธ” -> ƒœ๋ธ”๋ฆฟ -> SSTABLE -> block
  1. …Œด๋ธ”€ ƒœ๋ธ”๋ฆฟ๋“ค˜ ๋…ผ๋ฆฌ ‘•ฉ.
  2. ƒœ๋ธ”๋ฆฟ€ SSTABLE๋“ค˜ ‘•œผ๋กœ ตฌ„ฑ๋˜–ดžˆœผ๋ฉฐ SSTABLE๋“ค˜ ๋ฆฌŠคŠธ๋ฅผ  €žฅ•˜  žˆ๋‹ค.
  3. SSTABLE€ block˜ ‘•ด๋ฉฐ block๋“ค˜ ฃผ†Œ™€ ˜”„…‹œผ๋กœ ตฌ„ฑ๋˜–ดžˆ๋‹ค.

2. …Œด๋ธ”

๋ฐ„ €žฅ ˜•‹€ 3ฐจ› …Œด๋ธ”˜•ƒœ. –‰(row key), —ด(column), นŠด(timestamp)
ƒœ๋ธ”๋ฆฟ„ ๋ชจ๋‘ •ฉ๋ณ‘•˜๋ฉด …Œด๋ธ”ด ๋œ‹ค.
  1. Key - value
    1. row key : url(๋˜๋Š” ๋ฐ„ฐ’˜ ๋Œ€‘œ,  œ๋ชฉ๋“ฑ)
    2. column family : column ข…๋ฅ˜
      1. •ปค
      2. ˜… ( œ๋ชฉ?) <- ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด value
      3. Title
    3. timestamp๋Š” ๋ณ„๋„
    4. value : •ด๋‹‚ฌŠธ/‚ค™€ ๋งค•‘๋˜๋Š” ตฌกฐ™”๋œ ๋ฐ„ฐ’

3. ƒœ๋ธ”๋ฆฟ

ƒœ๋ธ”๋ฆฟ„ ๋ชจ๋‘ •ฉ๋ณ‘•˜๋ฉด …Œด๋ธ”ด ๋œ‹ค.
ƒœ๋ธ”๋ฆฟ€ SSTABLE๋“ค˜ ‘•œผ๋กœ ตฌ„ฑ๋˜–ดžˆœผ๋ฉฐ SSTABLE๋“ค˜ ๋ฆฌŠคŠธ๋ฅผ  €žฅ•˜  žˆ๋‹ค.
  1. ƒœ๋ธ”๋ฆฟ˜ ด๋ฆ„€ : ๋งˆง€๋ง‰ ‚ค -> นดƒˆ๋กœ— ๋งค•‘•„š”
    1. ๋งˆง€๋ง‰ ‚ค๋Š” นดƒˆ๋กœ—„œ shorten id™€ ๋งค•‘๋˜–ดžˆ๋‹ค.
  2. ƒœ๋ธ”๋ฆฟ€ •˜๋‚˜ ƒ˜ row๋กœ ตฌ„ฑ๋จ.
  3. ƒœ๋ธ”๋ฆฟ€ SSTABLE˜ ID+˜”„…‹„ ๋ฆฌŠคŠธ๋ฅผ  €žฅ•˜  žˆ๋‹ค.

3.1. SPLIT

1. split —ˆšฉ
  1. Šธ๋ฆฌฑฐ : ƒœ๋ธ”๋ฆฟ ฌธฐฐ€ 200MB ƒผ๋•Œ
  2. row๋Š” •˜๋‚˜ ƒ˜ ƒœ๋ธ”๋ฆฟ— กดžฌ•  ˆ˜ žˆ๋‹ค.

4. SSTable

SSTABLE€ •˜๋‚˜˜ memtableณผ block˜ ‹œž‘ฃผ†Œ™€ ˜”„…‹๋“ค๋กœ ด๋ฃจ–ด žˆ๋‹ค.
DFS œ†Œ ŒŒผ ๋‹œ„
  1. SSTABLE ๋ช…?
    1. ƒœ๋ธ”๋ฆฟId
    2. + ๋งˆง€๋ง‰ row key
  2. ๋ฐ„ฐ ๋ธ”๋กณผ ธ๋ฑŠค ๋ธ”๋ก
    1. ๋ฐ„ฐ ๋ธ”๋ก
    2. ธ๋ฑŠค ๋ธ”๋ก
      1. •ฝ 64KB๋งˆ๋‹กดžฌ•˜๋Š” row key๋ฅผ ๋ธ”๋ก˜ ธ๋ฑŠค๋กœ •œ‹ค.
      2. ๋ธ”๋ก˜ ธ๋ฑŠค™€ ‹ œ ŒŒ˜ ฃผ†Œ๋ฅผ
  3. ‹ˆ˜˜ ƒœ๋ธ”๋ฆฟ•˜๋‚˜˜ SSTable„ ฐธกฐ• •Œ˜ ๋ฌธ œ ?
    1. —ฌ๋Ÿฌ ƒœ๋ธ”๋ฆฟ•˜๋‚˜˜ SSTable„ ฐธกฐ•ด๋„ ๋ธ”๋Ÿญ๋“ค„ ˜”„…‹œผ๋กœ ฐธกฐ•˜๋ฏ€๋กœ ฐ™€ ๋ถ€๋ถ„„ ฐธกฐ•˜๋Š” —†๋‹ค.
    2. ฐ ƒœ๋ธ”๋ฆฟ˜ majorCompaction‹œ ƒœ๋ธ”๋ฆฟ๋ณ„๋กœ SSTable๋“คด ๋‚˜๋ˆ„–ดง€๋ฏ€๋กœ ฒฐตญ SSTable€ •˜๋‚˜˜ ƒœ๋ธ”๋ฆฟ— ”ผฐธกฐ๋œ‹ค.

5. ๋ธ”๋ก

  1. ๋ธ”๋ก€ 64KB๋‚ด™ธ˜ •”‹œ ž๋ฃŒตฌกฐด๋‹ค.
    1. SSTABLE˜ ฃผ†Œ™€ ˜”„…‹œผ๋กœ ๋ธ”๋ก๋“คตฌ๋ถ„๋œ‹ค.
  2. ๋ช…‹œ ž๋ฃŒตฌกฐฐ€ •„‹ˆ๋SSTable—„œ row key๋“ค๋กœ ตฌ๋ถ„๋˜–ด„ ๋ฒ”œ„ด๋‹ค.
    1. ๋ธ”๋ก ธ๋ฑŠค๋กœ „ ƒ๋œ row key๋ถ€„ฐ ๋‹Œ ๋ธ”๋ก ธ๋ฑŠค๋กœ „ ƒ๋œ row keyฐ€ ๋‚˜˜ฌ ๋•Œ นŒง€๋ฅผ •˜๋‚˜˜ ๋ธ”๋ก‹œ„๋กœ •œ‹ค.
    2. ๋ฐ˜๋“œ‹œ 64KBฐ€ ๋˜ง€๋Š” •ŠŒ

6. memtable

1. ๋ฉ”๋ชจ๋ฆฌ— • ‹น๋˜–ดžˆ๋‹ค.
1. ƒœ๋ธ”๋ฆฟ๋‹•œœ
1. “ฐธฐ๋ฐ–— •ˆ๋จ.
1. ๋ฐ„ฐ ๋ธ”๋Ÿญณผ ธ๋ฑŠค ๋ธ”๋Ÿญœผ๋กœ ๋‚˜๋ˆ„–ดง
  1. ฌธฐ
    1. ๋ฐ„ฐ ๋ธ”๋Ÿญ ฌธฐ : 32MB
    2. ธ๋ฑŠค ๋ธ”๋Ÿญ€ ฌธฐ œ•œ —†๋‹.
  2. ๋ฐ„
    1. ๋ฐ„ฐ ๋ธ”๋Ÿญ : ‚ค:ฐ’„ “ด๋‹.
    2. ธ๋ฑŠค ๋ธ”๋Ÿญ : ƒœ๋ธ”๋ฆฟฐธกฐ•˜  žˆ๋Š” SSTable˜ ๋ธ”๋Ÿญ ธ๋ฑŠค๋“ค merge
1. • ‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ฌธฐฐ€ ๋‹ฐจ„œ ๋”ƒ “ธ ˆ˜ —†„•Œ SSTABLE๋กœ  €žฅ•œ‹ค.
1. SSTABLE๋“ค˜ ธ๋ฑŠค๋ฅผ ฐ€„‹
  1. ธ๋ฑŠค๋Š” –ด๋–ปฒŒ?

7. ๋กœปฌ๋ฆฌ‹ธ๋ฃน

Šน • ปฌ๋Ÿผ„ ฐ€ง€๋Š” row๋“ค„ ๋ณ„๋„˜ ƒœ๋ธ”๋ฆฟ—  €žฅ•œ ฒƒ. ex) ƒ€‹€
  1. TS˜ ๋ฉ”๋ชจ๋ฆฌ— กดžฌ•œ‹ค.
  2. Šน • ปฌ๋Ÿผ ข…๋ฅ˜๋งŒ„ ฐ€„‹ค. ex) title

8. ปค๋ฐ‹๋กœ

  1. ƒœ๋ธ”๋ฆฟ˜ ID + “ฐ๋ ค๋Š” ‚ค:๋ฐธ๋ฅ˜
    1. ƒœ๋ธ”๋ฆฟ˜ ID€ ƒœ๋ธ”๋ฆฟ˜ ฐ€žฅ ๋งˆง€๋ง‰ ‚ค๋ฅผ šฉ•ด ๋งŒ๋“ ‹ค.
    2. ƒœ๋ธ”๋ฆฟ˜ ID€ ๋งค•‘…Œด๋ธ”(นดƒˆ๋กœธ)—„œ งง€ IDœผ๋กœ ๋Œ€ฒด๋จ.
  2.  €žฅณต„˜ žฌ‚ฌšฉ : ปค๋ฐ‹๋กœธ๋Š” ›˜• ž๋ฃŒตฌกฐ๋ฅผ ‚ฌšฉ•˜—ฌ ž๋™œผ๋กœ ณต„„ žฌ‚ฌšฉ•˜๋„๋ก •œ‹ค.
    1. ปค๋ฐ‹๋กœ˜ ฐ€žฅ ๋งˆง€๋ง‰ ƒ€ž„Šคƒฌ”„™€ memtable˜ ฐ€žฅ ˜ค๋ž˜๋œ ƒ€ž„Šคƒฌ”„™€ ๋น„ต•˜—ฌ memtable˜ ƒ€ž„Šคƒฌ”„ฐ€ ๋” œ‹ ด๋ผ๋ฉด ๋กœ‚ญ œฐ€๋Šฅ
    2. memtable˜ T/Sฐ€ ๋” œ‹ •„‹ˆ๋ผ๋ฉด minor compaction„ •˜—ฌ ๋กœธ๋ฅผ ๋น„šด๋‹ค.

9. นดƒˆ๋กœ

  1. นดƒˆ๋กœ˜ ฃผ†Œ๋Š” Locker— ๋“ฑ๋ก๋˜–ดžˆ๋‹ค. (client˜  ‘„ œ„•ด Locker— ๋“ฑ๋ก)
  2. นดƒˆ๋กœธ ๋˜•œ ƒœ๋ธ”๋ฆฟ. TSฐ€ ด€๋ฆฌ•œ‹ค.
  3. นดƒˆ๋กœ— •„š”•œ ฒƒ
    1. ƒœ๋ธ”๋ฆฟ ID ๋งค•‘ …Œด๋ธ”
    2. ปฌ๋Ÿผ Œจ๋ฐ€๋ฆฌ œˆ˜
    3. นดƒˆ๋กœ „šฉ ŒŒ•„š”?? SSTable •˜๋‚˜๋ฅผ • ‹น๋ฐ›•„‹“ธ๋•ŒนŒง€ • œ•˜ง€ •Š๋Š”ฑด –ด๋–จนŒ?
  4. ISSUE
    1. นดƒˆ๋กœ— –ธ œ  ‘•  ฒƒฐ€?

10. ƒœ๋ธ”๋ฆฟ ปดƒ‰ Šธ๋ฆฌ/ ƒœ๋ธ”๋ฆฟ Šธ๋ž˜ปค

๋ฃจŠธƒœ๋ธ”๋ฆฟ, ๋ฉ”ƒ€๋ฐ„ƒœ๋ธ”๋ฆฟ, œ  €ƒœ๋ธ”๋ฆฟœผ๋กœ ตฌ„ฑ๋จ. ผ๋ฐ˜ ƒœ๋ธ”๋ฆฟณผ ๋งˆฐฌฐ€ง€๋กœ SSTABLE๋กœ ด๋ฃจ–ด žˆœผ๋ฉฐ write onlyž„.
ž๋ฃŒตฌกฐ : B+-Šธ๋ฆฌ -- ๋ฐฐ—ด(๋ฃจŠธ, ๋ฉ”ƒ€ƒœ๋ธ”๋ฆฟ) + ๋ฆฌŠคŠธ(œ  €ƒœ๋ธ”๋ฆฟ) --
  1. ๋ฃจŠธ ƒœ๋ธ”๋ฆฟ
    1. Locker— œ„˜ฐ€ ธฐ๋ก๋œ‹
    2. ๋ฉ”ƒ€ƒœ๋ธ”๋ฆฟด ๋ถ„• ๋ •Œ(๋˜๋Š” ‚ฝž…๋ •Œ) ฐฑ‹ ๋จ.
    3. ๋ฃจŠธƒœ๋ธ”๋ฆฟ˜ ›†Œ •˜๋‚˜๋Š” ๋ฉ”ƒ€๋ฐ„ƒœ๋ธ”๋ฆฟณผ ๋งคนญ๋œ‹ค.
  2. ๋ฉ”ƒ€๋ฐ„ƒœ๋ธ”๋ฆฟ
    1. œ  €ƒœ๋ธ”๋ฆฟด ๋ถ„• ๋ •Œ(๋˜๋Š” ‚ฝž…๋ •Œ) ฐฑ‹ ๋จ
  3. œ  € ƒœ๋ธ”๋ฆฟ
    1. ƒœ๋ธ”๋ฆฟ ID(row key)™€ ƒœ๋ธ”๋ฆฟ „œ๋ฒ„ ๋งค•‘•คŒ.
    2. ƒœ๋ธ”๋ฆฟ–ด๋””—  €žฅ๋˜–ดžˆ๋Š”ง€ •Œ ˆ˜ žˆŒ.
  4.  €žฅ ๋ฐ„
    1. key : ƒœ๋ธ”๋ฆฟ ID(row key)
      value : IP+port#
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:36
Processing time 0.0272 sec