๐Ÿ—ป

๊ณ ์œ ํ•œ ID๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• (UUID)

โš ๏ธ
์ ˆ๋Œ€ ๊ทธ๋ƒฅ ์ฝ”๋“œ ๋ณต๋ถ™ํ•ด์„œ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹œ๊ณ , ๊ผญ UUID์— ๋Œ€ํ•œ ๊ฐœ๋…๊ณผ ํ•ด๋‹น ์ฝ”๋“œ์˜ ๋™์ž‘์— ๋Œ€ํ•ด์„œ ์ˆ™์ง€ํ•˜์‹  ์ดํ›„์— ์‚ฌ์šฉํ•ด์ฃผ์„ธ์š”!!! ์ด ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์‹ ๋‹ค๋ฉด ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ฝ”๋ฉ˜ํŠธ์— UUID์— ๋Œ€ํ•œ ํ€ด์ฆˆ๋ฅผ ๋‚ ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹
/** * ๋žœ๋คํ•œ ๋ฌธ์ž ๋˜๋Š” ์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋œ UUID v4๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. */ export function generateUUID(): string { // timeStmap let d = new Date().getTime(); return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { let r = Math.random() * 16; r = (d + r) % 16 | 0; d = Math.floor(d / 16); return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16); }); }
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๋‹ค๋ณด๋ฉด ํŠน์ • ๋Œ€์ƒ์—๊ฒŒ ๊ณ ์œ ํ•œ ID๋ฅผ ๋ถ€์—ฌํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
๋‹จ์ˆœํžˆ integer๋ฅผ auto increasement ์‹œ์ผœ๊ฐ€๋ฉฐ ๋งŒ๋“œ๋Š” ID๋Š” ๋‹จ์ˆœํžˆ ๋งˆ์ง€๋ง‰ ID์— +1 ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ƒˆ๋กœ์šด ID๋ฅผ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋™์‹œ์„ฑ์ด ๋ณด์žฅ๋˜์–ด์•ผ ํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” ID๊ฐ€ ์ถฉ๋Œํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์œ„ํ—˜์ด ์กด์žฌํ•ด, ๋‚œ์ˆ˜๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ID ์ฒด๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ์š”.
ํด๋ผ์ด์–ธํŠธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๋™์‹œ์„ฑ์ด ๋ณด์žฅ๋˜์–ด์•ผ ํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ID๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ์œ„ํ—˜์ด ์ ๊ธฐ๋Š” ํ•˜์ง€๋งŒ, ๊ทธ๋ž˜๋„ ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์€ ID๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿด ๋•Œ UUID ๊ฐœ๋…์ด ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (ex. ์œ ์ € ๋””๋ฐ”์ด์Šค๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ID๋ฅผ ๋ถ€์—ฌํ•ด์„œ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค๋˜๊ฐ€โ€ฆ์ด๋Ÿฐ ID๋Š” ๋ฌผ๋ฆฌ์  ํด๋ผ์ด์–ธํŠธ ๋จธ์‹ ์— ๋Œ€ํ•œ ๊ตฌ๋ถ„์ด ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์—์„œ ๋ชป ๋งŒ๋“ฆ.)