์ด ๊ธ์ koreanhole ๋์ ๊ธ์ ๋๋ค.
Intro
์ต๊ทผ UOS๊ณต์ง์ฌํญ ์ฑ์ ๋ฐฑ์๋ ์์คํ ์ ๊ต์ฒดํ๋ ์์ ์ ํ๊ณ ์์ต๋๋ค.
๊ธฐ์กด Firebase์ Firestore๋ฅผ ์ฌ์ฉํ๊ณ ์์๋๋ฐ ์ด๋ฒ์ ์๋กญ๊ฒ Nestjs๋ก ์๋ฒ๋ฅผ ์์ฑํ๋ ์ค์ ๋๋ค.
UOS๊ณต์ง์ฌํญ์ ์๋ฒ์๋ ์ด 3๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ( department, notice, user )์ด ์์ต๋๋ค.
๊ฐ ๋ชจ๋ธ์ ๋ ์ฝ๋ ๋ง๋ค ๊ณ ์ ์ id๊ฐ์ ๋ฐ๊ธํ๋๋ฐ ๋ชจ๋ uuid(v4)๋ก ๋ฐ๊ธํ์ต๋๋ค.
uuid๋ฅผ ๋ง๊ตฌ์ก์ด๋ก ๋ฐ๊ธํ๊ฒ ๋๋ฉด ํน์ ๋์ค์ ๊ฒน์น๋ uuid๊ฐ ์์ง ์์๊น?
UUID ์๊ฐ
- uuid๋ ๋ฒ์ฉ๊ณ ์ ์๋ณ์(Universal Unique IDentifier)๋ผ๊ณ ํ๋ค.
- ๋คํธ์ํฌ์์ ์กด์ฌํ๋ ๊ฐ์ฒด๋ค์ ์๋ณํ๊ณ ๊ตฌ๋ณํ๊ธฐ ์ํด ๊ฐ๋ฐ ์ฃผ์ฒด๊ฐ ์ค์ค๋ก ์ด๋ฆ์ ์ง๋๋ก ํ๋ฉฐ ๊ณ ์ ์ฑ์ ์ถฉ์กฑ์ํฌ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์ด 36๊ฐ์ ๋ฌธ์๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.(32๊ฐ์ ๋ฌธ์์ 4๊ฐ์ ํ์ดํ์ผ๋ก ๊ตฌ์ฑ๋ ์ด 5๊ฐ์ ๊ทธ๋ฃน)
- ์์: 550e8400-e29b-41d4-a716-446655440000
- a~f๊น์ง์ ์ํ๋ฒณ ๊ฐ๋ค์ด ๋๋ฌธ์์ธ์ง ์๋ฌธ์์ธ์ง๋ ์ค์ํ์ง ์๋ค.(16์ง์)
- 128๋นํธ์ ๊ฐ์ด๋ค.
- ์์: 550e8400-e29b-41d4-a716-446655440000
- ์ด 340,282,366,920,938,463,463,374,607,431,768,211,456๊ฐ์ ์ฌ์ฉ๊ฐ๋ฅํ UUID๊ฐ ์๋ค๊ณ ํ๋ค...
UUID(v4)๋ฅผ ๋ง๋๋ ๊ณผ์
- ๋๋คํ 16๋ฐ์ดํธ(128๋นํธ)๋ฅผ ๋ง๋ ๋ค.
- ํน์ ๋นํธ๋ฅผ RFC 4122์ section 4.4์ ๋ฐ๋ผ ๊ฐ์ ๋ณ๊ฒฝํด์ค๋๋ค.
- ์์ uuid: 550e8400-e29b-41d4-a716-446655440000
- ์์์ ๋ฐ์ค ์น 4์ ์์น๋ ํญ์ '4'๊ฐ ์กด์ฌํด์ผ ํ๋ค.
- a๊ฐ ์์นํ ์๋ฆฌ๋ ํญ์ '8', '9', 'a', 'b' ๋ฌธ์ ์ค ํ๋๊ฐ ์กด์ฌํด์ผ ํ๋ค.
- ์์ uuid: 550e8400-e29b-41d4-a716-446655440000
UUID v4๋ ์ค๋ณต๋ ๊ฐ๋ฅ์ฑ์ด ์์๊น?
uuid v4๋ ์์ฑ ์๋ฆฌ์ ์ค๋ณต์ด ๊ฐ๋ฅํ๋ค. ๋ค๋ง ๊ทธ ์ค๋ณต๋ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ํฌ๋ฐํ๋ค. ์ด 340,282,366,920,938,463,463,374,607,431,768,211,456 ๊ฐ์ uuid๊ฐ ์์ฑ ๊ฐ๋ฅํ๋ฐ ์ด ์ค ์ค๋ณต๋๋ uuid๊ฐ ์์ฑ๋ ๊ฐ๋ฅ์ฑ์ด ์ผํ ๋ด๋ ํฌ๋ฐํด๋ณด์ธ๋ค.
๊ทธ๋๋ ๋์ uuid๊ฐ ์ค๋ณต๋๋ฉด ์ด๋ป๊ฒ ํ์ง?
์ธ๊ฐ์ด ๋งค๋ ํ๋์์ ๋จ์ด์ง๋ ์ด์์ ๋ง์ ํ๋ฅ ์ด 0.00000000006 ์ด๋ผ๊ณ ํ๋ค. ์ด ํ๋ฅ ์ ์์ญ์กฐ์ uuid(v4)๋ฅผ ์์ฑํ ๋ ๋จ ํ๋์ ์ค๋ณต๋ uuid๊ฐ ์์ฑ๋ ํ๋ฅ ๊ณผ ๊ฐ๋ค.
๋ํ, ๋งค ์ด 10์ต๊ฐ์ uuid๋ฅผ 100๋ ์ ๊ฑธ์ณ์ ์์ฑํ ๋ ๋จ ํ๋์ uuid๊ฐ ์ค๋ณต๋ ํ๋ฅ ์ 50%์ด๋ค.
UOS๊ณต์ง์ฌํญ์ ์๋ฒ์๋ ์ฝ 3~4๋ง๊ฐ์ ๊ณต์ง์ฌํญ์ด ์ ์ฅ๋ ์์ ์ธ๋ฐ ์ด ์ค uuid์ ์ค๋ณต์ด ๋ฐ์ํ ํ๋ฅ ์ ๋งค์ฐ ์ ์ด๋ณด์ธ๋ค.
๊ทธ๋๋... ํน์..?
uuid v4๋ ๊ฑฐ์ ๋๋คํ uuid๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋๋..? ํน์..? uuid๊ฐ ๊ฒน์น ์๋ ์๋ค. ๊ทธ๋ฐ ๊ฑฑ์ ์ด ์๋ค๋ฉด uuid v1์ ์ฌ์ฉํ๋ฉด ๋๋ค.
uuid v1์ ๋คํธ์ํฌ ์นด๋์ MAC์ฃผ์(48๋นํธ)์ ํ์ฌ ์๊ฐ(60๋นํธ)์ ๊ธฐ๋ฐ์ผ๋ก uuid๋ฅผ ์์ฑํ๋ค. ์ฌ๊ธฐ์ ๋งํ๋ ํ์ฌ ์๊ฐ์ 1582๋ 10์ 15์ผ๊ณผ ํ์ฌ ์๊ฐ์ nanosecond์ ์ฐจ์ด๋ฅผ ๋งํ๋ค. 3603๋ ๋๊น์ง ๊ฐ๋ฅํ๋ค๊ณ ํ๋ค.
๋ฐ๋ผ์ uuid v1์ ์ฌ์ฉํ์ฌ uuid๋ฅผ ์ฌ์ฉํ๋ฉด ์คํ๋ ค uuid v4์ ๋นํด ์ค๋ณต ๊ฐ๋ฅ์ฑ์ด ํจ์ฌ ๋ฎ์ uuid๋ฅผ ์์ฑํ ์ ์๋ค. ํ์ง๋ง uuid v1์ ์ฌ์ฉํ ๊ฒฝ์ฐ uuid๊ฐ์ ํตํด MAC์ฃผ์๋ฅผ ์์๋ผ ์ ์๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค. ๋ํ MAC์ฃผ์์ ์์ฑ ์๊ฐ์ด ์ ์ถ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ uuid ์ญ์ ์ ์ถํ ์ ์๋ค๋ ๋ณด์ ๋ฌธ์ ๊ฐ ์๋ค.
๊ฒฐ๋ก
uuid v4๋ ์ถฉ๋ถํ ์์ ํ๊ฒ ์ ์ผํ uuid๋ฅผ ๋ฐ๊ธํด์ฃผ๋ฉฐ uuid๊ฐ ์ค๋ณต๋ ์ ์๋ ํต๊ณ์ ๊ฐ๋ฅ์ฑ ์ญ์ ๊ทนํ ํฌ๋ฐํ๊ธฐ์ uuid๊ฐ ์ค๋ณต๋๋ฉด ์ด์ฉ์ง ํ๋ ๊ฑฑ์ ์ ์ํด๋ ๋๋ค.
uuid v1์ ํ์ฌ ์๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก uuid๊ฐ์ ์์ฑํ๋๋ฐ uuid๊ฐ ์์ฑ๋ ์๊ฐ๊ณผ MAC์ฃผ์๋ก uuid๋ฅผ ์ ์ถํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ ํ์ง ์๋ค.
'...' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Maven] Springboot ํ๋ก์ ํธ์์ mvnw, mvnw.cmd ๋ ๋ฌด์์ผ๊น? (0) | 2021.08.26 |
---|---|
[Docker] ์ธ๋ถ์์ ์ปจํ ์ด๋ ๋ด๋ถ์ ์ ์ํ๊ธฐ (0) | 2021.08.25 |
[Node.js] Socket.io Cors(ํฌ๋ก์ค ๋๋ฉ์ธ) ํด๊ฒฐํ๊ธฐ (0) | 2021.08.24 |
[Docker] ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์์๋ณด๊ธฐ (0) | 2021.08.24 |
[Elastic Search] TokenFilter - NGram (0) | 2021.08.24 |