UUID๋ ๋ฌด์์ธ๊ฐ์?
UUID(Universally Unique Identifier, ๋ฒ์ฉ ๊ณ ์ ์๋ณ์)๋ GUID๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ, ์ค์ ๊ด๋ฆฌ ๊ธฐ๊ด ์์ด๋ ์ปดํจํฐ ์์คํ ์์ ์ ๋ณด๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๊ธฐ ์ํด ์ฌ์ฉํ๋ 128๋นํธ ๊ฐ์ ๋๋ค. ์ด ๋๊ตฌ๋ ๊ฑฐ์ ์ ์ ์ผ๋ก ๋์๋ก ๋ง๋ค์ด์ง๋ ๋ฒ์ 4 UUID๋ฅผ ์์ฑํฉ๋๋ค. 122๋นํธ์ ๋์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์์ฑ๋ ๋ UUID๊ฐ ๊ฒน์น ํ๋ฅ ์ ์ฌ์ค์ 0์ ๊ฐ๊น์, ์ ์ธ๊ณ์ ์ผ๋ก ๊ณ ์ ํ ๊ฐ์ผ๋ก ์ทจ๊ธ๋ฉ๋๋ค. UUID๋ ํน์ ์ธ์ด๋ ํ๋ซํผ์ ์ข ์๋์ง ์๋ ๊ตญ์ ํ์ค(RFC 4122)์ ๋๋ค.
์์ฑ๊ธฐ ์ฌ์ฉ ๋ฐฉ๋ฒ
ํ์ํ UUID ๊ฐ์(1~50๊ฐ)๋ฅผ ์ ํ๊ณ , ์๋ฌธ์ ๋๋ ๋๋ฌธ์ ์ถ๋ ฅ์ ์ ํํ ๋ค, ํ์ค ํ์ดํ์ ํฌํจํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ์ธ์. ๊ณ์ฐ ๋ฒํผ์ ๋๋ฅด๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ณต์ฌํ๋ฉด ๋ฉ๋๋ค. UUID๋ ์๋ ์ฆ๊ฐ ์นด์ดํฐ์ ์์กดํ ์ ์๋ ํ๊ฒฝ์์ ํนํ ์ ์ฉํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ณธ ํค, API ์์ฒญ ID, ํ์ผ ์ด๋ฆ, ์ธ์ ํ ํฐ, ๋ถ์ฐ ์์คํ ์ ์๋ณ์ ๋ฑ ๋ค์ํ ์ฉ๋๋ก ํ์ฉํ ์ ์์ต๋๋ค.
ํ์ ์์ธํ ๋ณด๊ธฐ
๋ฒ์ 4 UUID๋ 32์๋ฆฌ 16์ง์๋ฅผ ํ์ดํ์ผ๋ก ๋ค์ฏ ๊ทธ๋ฃน์ผ๋ก ๋๋์ด ํ๊ธฐํฉ๋๋ค. ๊ทธ๋ฃน ๊ธธ์ด๋ 8-4-4-4-12 ํํ์ด๋ฉฐ, ์๋ฅผ ๋ค์ด xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx์ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ์ 4๋ก ํ์๋ ์๋ฆฌ๋ ๋ฒ์ ์ ๋ํ๋
๋๋ค. y๋ก ํ์๋ ์๋ฆฌ๋ ๋ณํ(variant)์ ๋ํ๋ด๋ฉฐ ๋ฐ๋์ 8, 9, a, b ์ค ํ๋์ฌ์ผ ํฉ๋๋ค. ๋๋จธ์ง x๋ ๋ชจ๋ ๋ฌด์์ 16์ง์์
๋๋ค.
$$\text{UUID} = \underbrace{\texttt{xxxxxxxx}}_{8}\text{-}\underbrace{\texttt{xxxx}}_{4}\text{-}\underbrace{\texttt{4xxx}}_{4}\text{-}\underbrace{\texttt{Yxxx}}_{4}\text{-}\underbrace{\texttt{xxxxxxxxxxxx}}_{12}\quad\times\,\text{Count}$$
์์ ๋ก ์ดํด๋ณด๊ธฐ
3f9a7c1e b204 1d88 9c33 a7f019be24c1๊ณผ ๊ฐ์ ์์์ 16์ง์ ๋ฌธ์์ด์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ด
์๋ค. ์ด๋ฅผ ์ ํจํ v4 UUID๋ก ๋ง๋ค๋ ค๋ฉด 13๋ฒ์งธ ์๋ฆฌ๋ฅผ 4๋ก, 17๋ฒ์งธ ์๋ฆฌ๋ฅผ ๋ณํ ๊ฐ์ผ๋ก ๊ณ ์ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์์ปจ๋ 3f9a7c1e-b204-4d88-9c33-a7f019be24c1์ด ๋ฉ๋๋ค. ๋ ๋ฒ์งธ ํ์ดํ ๋ค์ 4์ ์ธ ๋ฒ์งธ ํ์ดํ ๋ค์ 9(์ ํจํ ๋ณํ ๊ฐ)์ ์ฃผ๋ชฉํ์ธ์.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
์ด UUID๋ ์ํธํ์ ์ผ๋ก ์์ ํ๊ฐ์? ํ๋ซํผ์ ์์ฌ ๋์ ์์ค๋ก ์์ฑ๋๋ฏ๋ก ์ผ๋ฐ์ ์ธ ์๋ณ์ ์ฉ๋๋ก๋ ์ถฉ๋ถํฉ๋๋ค. ๋ค๋ง ๋์ ๋ณด์์ด ์๊ตฌ๋๋ ๋น๋ฐ ๊ฐ์๋ ์ ์ฉ ์ํธํ์ ๋์ ์์ฑ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ UUID๊ฐ ๊ฐ์์ง ์ ์๋์? ์ด๋ก ์์ผ๋ก๋ ๊ฐ๋ฅํ์ง๋ง ๊ทธ ํ๋ฅ ์ ๋ฌด์ํ ์ ์์ ๋งํผ ์์ต๋๋ค. ์ถฉ๋์ด ์ค์ ๋ก ์ผ์ด๋๋ ค๋ฉด ์์ญ ๋ ๋์ ์ด๋น ์์ญ์ต ๊ฐ์ฉ ์์ฑํด์ผ ํ ์ ๋์ ๋๋ค.
ํ์ดํ์ ์ ๊ฑฐํ๋ฉด ๊ฐ์ด ๋ฐ๋๋์? ์๋๋๋ค. ํ์ดํ์ ๋จ์ง ํ๊ธฐ์์ ํธ์์ผ ๋ฟ์ด๋ฉฐ, ๋ด๋ถ์ 128๋นํธ ๊ฐ์ ๋์ผํฉ๋๋ค.