Giter Site home page Giter Site logo

database-test's Introduction

์ž๋™ ์ฆ๊ฐ€, ULID ๋ฐ UUIDv7์„ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ

์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋‹ค์–‘ํ•œ ๊ธฐ๋ณธ ํ‚ค ์ƒ์„ฑ ์ „๋žต์˜ ์„ฑ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋˜๋Š” ์ „๋žต์—๋Š” ์ž๋™ ์ฆ๊ฐ€, ULID ๋ฐ UUIDv7์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ๋†’์€ ๋ถ€ํ•˜ ์กฐ๊ฑด์—์„œ ๊ฐ ๋ฐฉ๋ฒ•์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค:

.
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ directory_structure.txt           # ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋‚˜์—ดํ•œ ํ…์ŠคํŠธ ํŒŒ์ผ
โ”œโ”€โ”€ k6_test.js                        # K6 ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ
โ”œโ”€โ”€ nest-cli.json                     # NestJS CLI ๊ตฌ์„ฑ ํŒŒ์ผ
โ”œโ”€โ”€ package-lock.json                 # npm ์ข…์†์„ฑ์— ๋Œ€ํ•œ ์ž ๊ธˆ ํŒŒ์ผ
โ”œโ”€โ”€ package.json                      # ํ”„๋กœ์ ํŠธ ์ข…์†์„ฑ๊ณผ ์Šคํฌ๋ฆฝํŠธ
โ”œโ”€โ”€ src/                              # TypeScript ์†Œ์Šค ํŒŒ์ผ
โ”‚ย ย  โ”œโ”€โ”€ app.controller.spec.ts
โ”‚ย ย  โ”œโ”€โ”€ app.controller.ts
โ”‚ย ย  โ”œโ”€โ”€ app.module.ts
โ”‚ย ย  โ”œโ”€โ”€ app.service.ts
โ”‚ย ย  โ”œโ”€โ”€ config/
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ database.config.ts        # ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ ํŒŒ์ผ
โ”‚ย ย  โ”œโ”€โ”€ entities/
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ auto-increment.entity.ts  # ์ž๋™ ์ฆ๊ฐ€ ๊ธฐ๋ณธ ํ‚ค์— ๋Œ€ํ•œ ์—”ํ‹ฐํ‹ฐ
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ ulid.entity.ts            # ULID ๊ธฐ๋ณธ ํ‚ค์— ๋Œ€ํ•œ ์—”ํ‹ฐํ‹ฐ
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ uuidv7.entity.ts          # UUIDv7 ๊ธฐ๋ณธ ํ‚ค์— ๋Œ€ํ•œ ์—”ํ‹ฐํ‹ฐ
โ”‚ย ย  โ”œโ”€โ”€ main.ts                       # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ง„์ž…์ 
โ”‚ย ย  โ””โ”€โ”€ speed/
โ”‚ย ย      โ”œโ”€โ”€ speed.controller.ts       # ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ API๋ฅผ ์œ„ํ•œ ์ปจํŠธ๋กค๋Ÿฌ
โ”‚ย ย      โ”œโ”€โ”€ speed.module.ts           # ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋ชจ๋“ˆ
โ”‚ย ย      โ””โ”€โ”€ speed.service.ts          # ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋น„์Šค
โ”œโ”€โ”€ test/                             # ์—”๋“œ ํˆฌ ์—”๋“œ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ํŒŒ์ผ
โ”‚ย ย  โ”œโ”€โ”€ app.e2e-spec.ts
โ”‚ย ย  โ””โ”€โ”€ jest-e2e.json
โ”œโ”€โ”€ tsconfig.build.json               # ๋นŒ๋“œ๋ฅผ ์œ„ํ•œ TypeScript ๊ตฌ์„ฑ ํŒŒ์ผ
โ””โ”€โ”€ tsconfig.json                     # TypeScript ๊ตฌ์„ฑ ํŒŒ์ผ

๊ฐœ์š”

์ด ํ”„๋กœ์ ํŠธ๋Š” MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™˜๊ฒฝ์—์„œ ์„ธ ๊ฐ€์ง€ ๊ธฐ๋ณธ ํ‚ค ์ƒ์„ฑ ์ „๋žต์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๊ณ  ๋น„๊ตํ•˜๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค:

  • ์ž๋™ ์ฆ๊ฐ€: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ƒ์„ฑ๋œ ์ˆœ์ฐจ์ ์ธ ์ •์ˆ˜ ๊ธฐ๋ฐ˜ ๊ธฐ๋ณธ ํ‚ค.
  • ULID: ๊ณ ์œ ์„ฑ๊ณผ ์ •๋ ฌ ๊ฐ€๋Šฅ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ •๋ ฌ ๊ฐ€๋Šฅํ•œ ์‹๋ณ„์ž.
  • UUIDv7: ๋ฌด์ž‘์œ„์„ฑ๊ณผ ์‹œ๊ฐ„ ์ˆœ์„œ๋ฅผ ๊ฒฐํ•ฉํ•œ ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ UUID.

์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ

ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•๋ก 

์ด ํ”„๋กœ์ ํŠธ์—๋Š” k6_test.js๋ผ๋Š” ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด K6๋ฅผ ์‚ฌ์šฉํ•ด ๋†’์€ ๋ถ€ํ•˜ ์กฐ๊ฑด์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ์ง€ํ‘œ๋ฅผ ์ธก์ •ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค:

  • ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„: ์‚ฝ์ž… ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ํ‰๊ท ์ ์œผ๋กœ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„.
  • ์ตœ๋Œ€ ์‘๋‹ต ์‹œ๊ฐ„: ์‚ฝ์ž… ์ž‘์—… ์ค‘ ๊ธฐ๋ก๋œ ๊ฐ€์žฅ ๊ธด ์‹œ๊ฐ„.
  • ์ „์ฒด ์ฒ˜๋ฆฌ๋Ÿ‰: ์ดˆ๋‹น ์ฒ˜๋ฆฌ๋œ ์ž‘์—…์˜ ์ด ์ˆ˜.

ํ…Œ์ŠคํŠธ ์‹คํ–‰

  1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •:

    • MySQL์ด ์‹คํ–‰ ์ค‘์ด๊ณ  ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. src/config/database.config.ts ํŒŒ์ผ์„ ์—ด์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž๊ฒฉ ์ฆ๋ช…์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  2. ์ข…์†์„ฑ ์„ค์น˜:

    npm install
  3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰:

    npm run start
  4. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์‹คํ–‰:

    k6 run k6_test.js

๊ฒฐ๊ณผ ๋ฐ ๋ถ„์„

๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•œ ํ›„, ๊ฒฐ๊ณผ๋Š” ์ฝ˜์†”์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์˜ ์ฃผ์š” ์ง€ํ‘œ๋Š” ๋†’์€ ๋ถ€ํ•˜ ์กฐ๊ฑด์—์„œ ์–ด๋–ค ๊ธฐ๋ณธ ํ‚ค ์ „๋žต์ด ๊ฐ€์žฅ ์„ฑ๋Šฅ์ด ์ข‹์€์ง€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์˜ ๊ฒฐ๊ณผ:

์ง€ํ‘œ ์ž๋™ ์ฆ๊ฐ€ ULID UUIDv7
ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„ 741.44 ยตs 1.05 ms 813.42 ยตs
์ตœ๋Œ€ ์‘๋‹ต ์‹œ๊ฐ„ 66.86 ms 72.76 ms 48.97 ms
์ฒ˜๋ฆฌ๋Ÿ‰ ๋†’์Œ ์ค‘๊ฐ„ ๋†’์Œ

๊ฒฐ๋ก 

์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๋ก ์„ ๋„์ถœํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.:

  • ์ž๋™ ์ฆ๊ฐ€: ๊ฐ€์žฅ ์ผ๊ด€๋˜๊ณ  ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ, ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ๊ณผ ์†๋„๊ฐ€ ์ค‘์š”ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.
  • ULID: ๊ณ ์œ ์„ฑ๊ณผ ์ •๋ ฌ ๊ฐ€๋Šฅ์„ฑ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ํŠนํžˆ ๋ถ€ํ•˜๊ฐ€ ๋†’์€ ์ƒํ™ฉ์—์„œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๊ฒช์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • UUIDv7: ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ๊ณ ์œ  ์‹๋ณ„์ž์˜ ํ•„์š”์„ฑ๊ณผ ์„ฑ๋Šฅ ๊ฐ„์˜ ๊ท ํ˜•์„ ์ž˜ ์œ ์ง€ํ•˜๋ฉฐ, ์‹œ๊ฐ„ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค.

database-test's People

Contributors

raminicano avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.