Design Unique ID Generation For Distributed System
์ ์ผ ID๋ฅผ ์ํด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ auto_increment
๋ฒ ์ด์ค๋ฅผ ๊ธฐ๋ณธ ํค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์กด์ฌํ๋ค.
ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ํธ๋ํฝ์ด ๋งค์ฐ ๋์ผ๋ฉด ๊ฐ ์์ฑ ๋ถํ๊ฐ ์๊ธธ ์ ์๊ณ , ๋ถ์ฐ ์์คํ
ํ๊ฒฝ์์ ์ฌ์ฉํ๊ธฐ ์ ์ ํ์ง ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ๋์ธ ๊ฒฝ์ฐ: ์ ์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋จ์ผ ์ง์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ฌ ID ํ ๋น ์์ฒด๊ฐ ์ค๋จ๋ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ๋ฌ ๋์ธ ๊ฒฝ์ฐ: ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์์ฑ๋ ID๊ฐ ๊ฒน์น์ง ์๋๋ก ๋ณด์ฅํ๊ธฐ ์ํด ์ง์ฐ์ด ๋ฐ์ํ ์ ์๋ค.
๋ถ์ฐ ํ๊ฒฝ์์ ์ ์ผ ID ์์ฑ ์์คํ ์ ์ค๊ณํ ๋ ๋ค์์ ์๊ตฌ์ฌํญ์ ๋ง์ถฐ ์ค๊ณํด ๋ณผ ์ ์๋ค.
์ ์ผ์ฑ
์ซ์๋ก๋ง ๊ตฌ์ฑ
64๋นํธ๋ก ํํ ๊ฐ๋ฅ
๋ฐ๊ธ ๋ ์ง์ ๋ฐ๋ฅธ ์ ๋ ฌ ๊ฐ๋ฅ
์ด๋น 10,000๊ฐ ๋ฐ๊ธ ๊ฐ๋ฅ
์ ์ผ ID ์์ฑ ๋ฐฉ๋ฒ
์ ์ผ ID ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
๋ค์ค ๋ง์คํฐ ๋ณต์ (Multi-Master Replication)
๋ฐ์ดํฐ๋ฒ ์ด์ค์ auto_increment ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ 1๋งํผ ์ฆ๊ฐ ์ํค๋ ๊ฒ์ด ์๋, k๋งํผ ์ฆ๊ฐ ์ํค๋ ๋ฐฉ๋ฒ(k=๋ฐ์ดํฐ ๋ฒ ์ด์ค ์๋ฒ ์)
์ ์ผ์ฑ ๋ณด์ฅ
์๊ฐ์ ๋ฐ๋ฅธ ์ ๋ ฌ ๋ถ๊ฐ๋ฅ / ๊ท๋ชจ ํ์ฅ ์ด๋ ค์
UUIDv4
์๋ฒ์์ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ฑ ๋ถํ๊ฐ ๋ฐ์ํ์ง ์์
์ ๋ ฌ๋ ๊ฐ์ผ๋ก ์์ฑ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์ถ๊ฐ ๋ฐ ์ญ์ ์ ์ฑ๋ฅ ์ ํ(ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค)
36๊ธ์ ๋ฌธ์์ด๋ก ๊ตฌ์ฑ๋์ด(๋ฐ์ด๋๋ฆฌ ๋ณํ ์ 16๋ฐ์ดํธ) ์ ์ฅ ๊ณต๊ฐ์ด ํผ
์ ์ผ์ฑ ๋ณด์ฅ / ์๋ฒ ์ฌ์ด ์กฐ์จ์ด ํ์ ์์ด ๋๊ธฐํ ์ด์ X / ๊ท๋ชจ ํ์ฅ ์ฉ์ด
๋ฌธ์๊ฐ ํฌํจ ๋จ / ๋ฐ๊ธ ๋ ์ง์ ๋ฐ๋ฅธ ์ ๋ ฌ์ด ๋ถ๊ฐ๋ฅ
UUIDv7
์์๋ฆฌ์ ํ์์คํฌํ๊ฐ ๋ค์ด๊ฐ ์๊ฐ ๊ธฐ์ค ์ ๋ ฌ๋ ์์๋ก ์์ฑ ๊ฐ๋ฅ
์ ๋ ฌ๋ ๊ฐ์ผ๋ก ์์ฑ๋๊ธฐ ๋๋ฌธ์ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค์ ์ ํฉ
์ฌ์ ํ 36๊ธ์ ๋ฌธ์์ด๋ก ๊ตฌ์ฑ๋์ด ์ ์ฅ ๊ณต๊ฐ์ด ํผ(๊ท๋ชจ๊ฐ ์์ ๊ณณ์์ ๋ฌธ์ ์์ผ๋, ํด๋น ๊ฒฝ์ฐ์ ์๋ ์ฆ๊ฐ ๊ฐ์ ์ฌ์ฉํด๋ ๋ฌด๋ฐฉ)
ํฐ์ผ ์๋ฒ
auto_increment ๊ธฐ๋ฅ์ ๊ฐ์ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ฅผ ์ค์ ์ง์คํ์ผ๋ก ๋ณ๋๋ก ๋์ด ID๋ฅผ ์์ฑํ๋๋ก ํ๋ ๋ฐฉ๋ฒ
์ ์ผ์ฑ ๋ณด์ฅ / ์ฌ์ด ๊ตฌํ
SPOF(Single Point of Failure) ๋ฌธ์ ๋ฐ์(์ฌ๋ฌ ํฐ์ผ ์๋ฒ ๊ตฌ์ถ ํ์ -> ๋๊ธฐํ ์ด์ ๋ฐ์ ๊ฐ๋ฅ)
์ค๋ ธ์ฐํ๋ ์ดํฌ ์ ๊ทผ๋ฒ
์ฌ๋ฌ ์น์ ์ผ๋ก ๋ถํ ๋ 64๋นํธ ID๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ
1๋นํธ: ์ฌ์ธ ๋นํธ / 41๋นํธ: ํ์์คํฌํ / 10๋นํธ: ์ฅ๋น ๊ณ ์ ๋ฒํธ / 12๋นํธ: ์ผ๋ จ๋ฒํธ
์ ์ผ์ฑ ๋ณด์ฅ / ๋ฐ๊ธ ๋ ์ง์ ๋ฐ๋ฅธ ์ ๋ ฌ ๊ฐ๋ฅ / ๊ท๋ชจ ํ์ฅ ์ฉ์ด
๋ ธ๋ ID ์ถฉ๋ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ
์์ธ ์ค๊ณ
์ฌ๋ฌ ๋ฐฉ๋ฒ ์ค ์๊ตฌ ์ฌํญ์ ๋ง์กฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ ธ์ฐํ๋ ์ดํฌ ์ ๊ทผ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค. ๊ฐ ๋นํธ ๋ณ๋ก ์์ธ ์ค๋ช ์ ๋ค์๊ณผ ๊ฐ๋ค.
ํ์์คํฌํ: ๊ฐ์ฅ ๋ง์ ๋นํธ๋ฅผ ์ฐจ์งํ๋ฉฐ, ์๊ฐ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ ฌ ๊ฐ๋ฅํ๋๋ก ํ๋ ์ญํ
41๋นํธ์ ๊ธธ์ด๋ ๋ฐ๋ฆฌ์ด๋ก ํ์ฐ ํ์ ๋ 69๋ ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅ
์๋น์ค ๊ธฐ์ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์์ํ์ฌ ์ค๋ฒํ๋ก ๋ฐ์ ์์ ์ ๋ฆ์ถ ์ ์์
69๋ ์๊ฐ์ด ์ง๋๋ฉด ๊ธฐ์ ์๊ฐ์ ๋ฐ๊พธ๊ฑฐ๋ ๋ค๋ฅธ ID ์ฒด๊ณ๋ก ๋ณ๊ฒฝ ํ์
์ฅ๋น ๊ณ ์ ๋ฒํธ: ์์คํ ์์ ์ ๊ฒฐ์
5๋นํธ: ๋ฐ์ดํฐ ์ผํฐ ID / 5๋นํธ: ์๋ฒ ID ์์ผ๋ก ํ ๋นํ ์ ์์
์ผ๋ฐ์ ์ผ๋ก ์์คํ ์ด์ ์ค์๋ ๋ณ๊ฒฝ๋์ง ์์(์๋ชป ๋ณ๊ฒฝ ์ ์ถฉ๋ ๋ฐ์ ๊ฐ๋ฅ)
์ผ๋ จ๋ฒํธ: ๊ฐ์ ๋ฐ๋ฆฌ์ด ๋์ ํ๋ ์ด์์ ID๋ฅผ ๋ง๋ค์ด ๋ธ ๊ฒฝ์ฐ๋ง 0๋ณด๋ค ํฐ ๊ฐ์ผ๋ก ์ฆ๊ฐ(์ต๋ 4096๊ฐ)
์ถ๊ฐ ๊ณ ๋ ค ์ฌํญ
์๊ณ ๋๊ธฐํ(clock synchronization): ๊ฐ ์๋ฒ๊ฐ ์๋ฒฝํ ๊ฐ์ ์๊ฐ์ ๋ฐ๋ผ๋ณด์ง ์๊ธฐ ๋๋ฌธ์ ์๋ฒ ๊ฐ ์๊ณ๊ฐ ๋๊ธฐํ ๋ฐฉ๋ฒ ํ์
์น์ ๊ธธ์ด ์ต์ ํ: ๋์์ฑ์ด ๋ฎ๊ณ ์๋ช ์ด ๊ธด ์๋น์ค์ธ ๊ฒฝ์ฐ ํ์์คํฌํ ์ ์ ๊ธธ์ด๋ฅผ ๋๋ฆฌ๊ณ ์ผ๋ จ๋ฒํธ ๊ธธ์ด๋ฅผ ์ค์ด๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํ ์ ์์
์ฐธ๊ณ ์๋ฃ
Last updated
Was this helpful?