๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅDEV/Database

Auto-Increment์™€ UUID

by bdd 2022. 9. 13.

์ข‹์•„์š”์™€ ์ด๋ชจํ‹ฐ์ฝ˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ PK์— ๋Œ€ํ•ด ๋“ค์—ˆ๋˜ ์˜๋ฌธ๊ณผ ํ•™์Šต/์ƒ๊ฐ์ •๋ฆฌ๋ฅผ ์œ„ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ๊ธ€์„ ๋‚จ๊ฒจ๋ด…๋‹ˆ๋‹ค. 

 

 

 

 

 

1. Auto-Increment์™€ UUID. ๊ทธ ์˜๋ฏธ


Auto-Increment์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋ ๋•Œ ์ž๋™์œผ๋กœ PK๊ฐ’์ด 1 ์ฆ๊ฐ€ํ•˜๋ฉฐ UUID์˜ ๊ฒฝ์šฐ VARCHAR ํ˜น์€ Binary ๊ฐ’์œผ๋กœ PK๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Auto-Increment ๊ฐ™์€ ๊ฒฝ์šฐ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ’์ด ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’์ด ์—ฐ์†์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ํ•œ ๋ˆˆ์— ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ๋Š” ๋ฐ˜๋ฉด ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋˜๊ฑฐ๋‚˜ ํ•˜๋”๋ผ๋„ ๊ทธ ๊ฐ’์ด ์ฑ„์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด UUID์˜ ๊ฒฝ์šฐ ๋žœ๋คํ•œ ๊ฐ’์ด ์ƒ์„ฑ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋“ค์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ์†์ ์ธ ๊ฐ’๋“ค์„ ์•Œ ์ˆ˜ ๋Š” ์—†์ง€๋งŒ ์ค‘๊ฐ„์— ๊ณต๋ฐฑ์ด ์ƒ๊ธฐ๋”๋ผ๋„ PK์˜ ์—ฐ์†์„ฑ์„ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

ํšŒ์›๊ณผ ๊ฒŒ์‹œ๊ธ€/๋Œ“๊ธ€๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ๋ช‡ ๋ฒˆ์งธ ํšŒ์›, ๋ช‡ ๋ฒˆ์งธ ๊ฒŒ์‹œ๊ธ€๊ณผ ๊ฐ™์ด ์ˆœ์ฐจ์ ์ธ ๊ฐ’์ด ์˜๋ฏธ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Auto-Increment๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์˜์ง€ ์•Š์ง€๋งŒ ๋ฐ˜๋ฉด ์ข‹์•„์š”/์ด๋ชจํ‹ฐ์ฝ˜๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์ด ๊ฐ’์„ ๊ตณ์ด Auto-Increment๋กœ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์žˆ์„๊นŒ? ์— ๋Œ€ํ•œ ์˜๋ฌธ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ํšŒ์›์ด๋‚˜ ๊ฒŒ์‹œ๊ธ€๋ณด๋‹ค ์ž์ฃผ ์ถ”๊ฐ€/์‚ญ์ œ ๋ ํ…๋ฐ ์ค‘๊ฐ„์— ๊ฐ’์ด ๋น„๋”๋ผ๋„ ๋ณ„ ํƒˆ์—†๋Š” UUID๊ฐ€ ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

2. ์ธ๋ฑ์Šค์™€  UUID๋ฅผ ์„ ํƒํ•œ ์ด์œ 


์ข‹์•„์š”/์ด๋ชจํ‹ฐ์ฝ˜์„ UUID๋กœ ๋ฐ”๊พธ๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๋ฉด์„œ ํ•œ๊ฐ€์ง€ ๊ณ ๋ฏผ์‚ฌํ•ญ์ด ์ƒ๊ฒผ๋Š”๋ฐ์š”, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ UUID์˜ ์ธ๋ฑ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์ •๋ ฌํ•˜๋Š”์ง€์™€ ์ธ๋ฑ์Šค์˜ ๊ธธ์ด, ์„ฑ๋Šฅ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์— ๊ด€ํ•ด์„œ๋Š” ํ•ด๋‹น ๋ธ”๋กœ๊ทธ์™€ ์Šคํƒ ์˜ค๋ฒ„,์ธํ”„๋Ÿฐ ๊ฐ•์˜ ์งˆ๋ฌธ/๋‹ต๋ณ€ ์—์„œ ์ž˜์ •๋ฆฌํ•ด์ฃผ์…จ๋Š”๋ฐ์š”, ํ•œ ๋ฒˆ ์ฝ์–ด๋ณด์‹ค ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

 

์šฐ์„  ์ธ๋ฑ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์ธ์‹ํ• ๊นŒ์— ๋Œ€ํ•ด ๊ณ ๋ฏผ์€ UUID๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ B-Tree ์ž์ฒด์ ์ธ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•  ๊ฒƒ์ด๊ธฐ์— ๋”ฐ๋กœ ๊ณ ๋ฏผํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ๋ถ€๋ถ„์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ key-len์— ๋Œ€ํ•ด์„œ๋Š” ๋ณ„๋„๋กœ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•˜๋Š”๋ฐ binary ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ UUID๊ฐ€ ํฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. [์ถœ์ฒ˜]

 

key-len์€ binary ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ํฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค๊ณ  ํŒ๋‹จ

 

 

 

 

 

๋”ฐ๋ผ์„œ INSERT, SELECT ์„ฑ๋Šฅ๋งŒ ๊ณ ๋ฏผํ•˜๋ฉด ๋˜์—ˆ๋Š”๋ฐ INSERT์‹œ์—๋Š” ์„ฑ๋Šฅ์ด ์กฐ๊ธˆ ๋–จ์–ด์ง€์ง€๋งŒ ์กฐํšŒ์‹œ์— ์‚ฌ์šฉ์ž๊ฐ€ ๋Š๋‚„ ์ •๋„์˜ ํฐ ์ฐจ์ด๋Š” ์—†์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

๋”ฐ๋ผ์„œ UUID๋ฅผ ์ข‹์•„์š”/์ด๋ชจํ‹ฐ์ฝ˜์˜ PK๋กœ ์„ค์ •ํ–ˆ๊ณ  ์ง€๊ธˆ๋„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  UUID๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์— ๋Œ€ํ•œ ๋ถ€์ •์ ์ธ ์˜๊ฒฌ๋„ ์ •๋ง ๋งŽ์•˜๋Š”๋ฐ์š”, ์ด๋Ÿฐ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” UUID๊ฐ€ ์ฃผ๋Š” ์žฅ์ ์ด๋‚˜ ์ œ๊ฐ€ ์„ ํƒํ•œ ์ด์œ ์— ๋Œ€ํ•ด ํฌ์ƒํ•ด์•ผํ•  ๋น„์šฉ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. 

 

     - ์ด๋ชจํ‹ฐ์ฝ˜/์ข‹์•„์š”๋Š” ์ถ”๊ฐ€/์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•œ๋ฐ ์ค‘๊ฐ„์— ๊ฐ’์ด ์‚ญ์ œ๋˜๋”๋ผ๋„ PK ๊ณต๋ฐฑ์ด ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค.
        (PK ๊ณต๋ฐฑ์ด๋ž€ 1, 2,  3,  x, 5, 6๊ณผ ๊ฐ™์ด PK๊ฐ€ ์žˆ์„๋•Œ 4๊ฐ€ ๋น„๋Š” ํ˜„์ƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค)

     

 

 

 

๋‹จ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ž์ฃผ ์ถ”๊ฐ€/์‚ญ์ œ ๋œ๋‹ค๋ฉด ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” ๋ณ„๋„๋กœ ์‹ ๊ฒฝ์„ ์จ์•ผ ํ•˜๋Š”๋ฐ์š”, ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” ์ค‘๊ฐ„์— ์บ์‹ฑ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค ์˜ˆ์ •์ด๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ธˆ ๋” ๊ณ ๋ คํ•ด๋ณผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐ์ดํ„ฐ์˜ INSERT / DELETE๊ฐ€ ์กฐ๊ธˆ ๋Šฆ์–ด์ง€๋”๋ผ๋„ ์กฐํšŒํ•˜๋Š” ์†๋„๊ฐ€ ๋นจ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ํฌ์ƒํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด๋ผ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. **Auto-Increment๋ฅผ ํ™œ์šฉํ•˜๋”๋ผ๋„ ์ถ”๊ฐ€/์‚ญ์ œ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ถ€๋ถ„์€ (์•„์ง์€) ์กฐ๊ธˆ ๋” ์ง€์ผœ๋ด์•ผํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

 

 

3. Conclusion


๊ฒฐ๋ก ์ ์œผ๋กœ UUID๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์‚ฌ์šฉ์ž๊ฐ€ ๋Š๋‚„ ์ •๋„๋กœ ํฐ ์ฐจ์ด๋Š” ์—†๋‹ค ๋Š” ๊ฒƒ์ด ๊ฒฐ๋ก ์ด์—ˆ๊ณ  ์ด๋ฅผ ์œ„ํ•ด Auto-Increment๋Œ€์‹  UUID๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์ƒ ์•ˆ ์ข‹์€ ๋ถ€๋ถ„๋„ ์žˆ๊ฒ ์ง€๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์ง€๋ฉด์„œ ๋Š๋ผ๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ๋‹ค๋ฉด ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ถ”๊ฐ€์ ์œผ๋กœ ํฌ์ŠคํŒ…์„ ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. 

 

 

 

'๐Ÿ–ฅDEV > Database' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ •๊ทœํ™”๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ• ๊นŒ?  (0) 2022.09.07

๋Œ“๊ธ€