๐Ÿƒ๐Ÿƒ‍โ™‚๏ธ๐Ÿƒ๐Ÿป‍โ™€๏ธ

๐Ÿƒ๐Ÿƒ‍โ™‚๏ธ๐Ÿƒ๐Ÿป‍โ™€๏ธ

  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (64)
    • Network (4)
      • Network ์Šคํ„ฐ๋”” (4)
    • Database (6)
      • DB ์Šคํ„ฐ๋”” (15)
    • CS (12)
      • CS ์Šคํ„ฐ๋”” (12)
    • Backend (16)
      • NestJS (7)
      • Spring (6)
    • ๋ฉด์ ‘ ์ค€๋น„ (6)
      • ๋ฉด์ ‘ ์Šคํ„ฐ๋”” (5)
    • CI, CD (1)
      • Etc (1)
    • ์–ธ์–ด (4)
      • Javascript(Node, TS...) (4)
    • ๊ธฐ์ˆ ์  ๊ณ ๋ฏผ (0)
  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก
  • Github
RSS ํ”ผ๋“œ
๋กœ๊ทธ์ธ
๋กœ๊ทธ์•„์›ƒ ๊ธ€์“ฐ๊ธฐ ๊ด€๋ฆฌ

๐Ÿƒ๐Ÿƒ‍โ™‚๏ธ๐Ÿƒ๐Ÿป‍โ™€๏ธ

์ปจํ…์ธ  ๊ฒ€์ƒ‰

ํƒœ๊ทธ

Spring MySQL OS ๋ฐฑ์—”๋“œ ๋„คํŠธ์›Œํฌ ํ”„๋กœ์„ธ์Šค ์šด์˜์ฒด์ œ NestJS ์ธ๋ฑ์Šค CS db Database SQL ๋ฉด์ ‘ node.js TypeScript JPA PostgreSQL K6 Nest.js

์ตœ๊ทผ๊ธ€

๋Œ“๊ธ€

๊ณต์ง€์‚ฌํ•ญ

์•„์นด์ด๋ธŒ

Database(21)

  • ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ Mysql Online DDL ๊ธฐ์ˆ 

    ์„œ๋น„์Šค๊ฐ€ ์ปค์ง์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๋“ค์ด ์ถ”๊ฐ€๋˜๊ณ , ์ด์— ๋”ฐ๋ผ ์„œ๋น„์Šค ๋’ทํŽธ์—์„œ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋ฟ ์•„๋‹ˆ๋ผ DB๊นŒ์ง€ ์ˆ˜๋งŽ์€ ๋ณ€๊ฒฝ์ ๋“ค์ด ์ƒ๊ฒจ๋‚ฉ๋‹ˆ๋‹ค.์ด ๋•Œ๋งˆ๋‹ค ์„œ๋น„์Šค ์ค‘๋‹จ ๊ณต๊ณ ๋ฅผ ๋‚ด์„œ ์‚ฌ์šฉ์ž ํŠธ๋ž˜ํ”ฝ์„ ์›์ฒœ ์ฐจ๋‹จํ•˜๊ณ  ํŒจ์น˜๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค๋ฉด ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ๋Š” ํŽธํ• ์ง€ ๋ชฐ๋ผ๋„, ์ค‘๋‹จ๋œ ๋งค ์‹œ์ ์ด ์ผ์ข…์˜ ์†์‹ค๋กœ ๋ณผ ์ˆ˜ ์žˆ์–ด ์‰ฝ๊ฒŒ ์ƒ๊ฐํ•  ๋ฌธ์ œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.์ฆ‰, ์„œ๋น„์Šค์˜ ๊ด€์ ์—์„œ๋Š” ํ”ผ์น˜๋ชปํ•  ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๋ฉด ๋ฌด์ค‘๋‹จ์œผ๋กœ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๋Š” ํŽธ์ด ๋” ๋„์›€์ด ๋˜๋ฆฌ๋ผ๋Š” ๊ฒƒ์€ ์ž๋ช…ํ•ฉ๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๋ฌด์กฐ๊ฑด ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. DB ๋ ˆ์ด์–ด์˜ ๋ณ€๊ฒฝ์„ ์ ์šฉํ•˜๋‹ค๋ณด๋ฉด ๋‹น์‹œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋˜ ํŠธ๋žœ์žญ์…˜์€ Blocking์ด ๋ ์ˆ˜๋„, ํ˜น์€ ์•„์˜ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด ์ข…๋ฃŒ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ์œ ์ €์˜ ์„œ๋น„์Šค ์ด์šฉ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด๊ธฐ..

    2025.03.16
  • ๋ ˆ์ฝ”๋“œ ๋žœ๋ค ์กฐํšŒ๋ฅผ ํ†ตํ•œ ๋‚™๊ด€์  ๋ฝ ์„ฑ๋Šฅ ๊ฐœ์„ ๊ธฐ (with ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ)

    ์„œ๋ก  TiketeerTiketeer has 5 repositories available. Follow their code on GitHub.github.comํ˜„์žฌ ์ €๋Š” ์ง€์ธ 3๋ถ„๊ณผ ํ•จ๊ป˜ ๊ฐ„๋‹จํ•œ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ ์ค‘์ธ๋ฐ, ๊ทธ ๊ณณ์—์„œ ์ง„ํ–‰ ์ค‘์ธ ‘ํ‹ฐ์ผ€ํŒ… ์„œ๋น„์Šค’ ํ”„๋กœ์ ํŠธ์—์„œ ํ•œ์ˆœ๊ฐ„ ๋ถ€ํ•˜๊ฐ€ ๋ชฐ๋ฆฌ๋Š” ํ‹ฐ์ผ€ํŒ… ํ™˜๊ฒฝ์—์„œ๋„ ๊ตฌ๋งค์˜ ์ •ํ•ฉ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์„ฑ๋Šฅ์ ์ธ ๊ฐœ์„ ๋„ ์ด๋ฃจ์–ด๋‚ด๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋…ผ์˜๋“ค์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ธ€์—์„œ๋Š” ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์—์„œ ํ‹ฐ์ผ“ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฝ์–ด์˜ค๋Š” ๋ฐฉ์‹์„ ๊ฐœ์„ ํ•˜๊ณ  ๊ธฐ์กด ๋ฐฉ์‹๊ณผ ์„ฑ๋Šฅ์ ์œผ๋กœ ๋น„๊ตํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๊ณ , ์ตœ์ข…์ ์œผ๋กœ๋Š” ์ด๋ฅผ ํ†ตํ•ด ์ €ํฌ ์„œ๋น„์Šค์— ๋ฏธ์นœ ์˜ํ–ฅ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋“ค์–ด๊ฐ€๊ธฐ ์•ž์„œ๋ณธ๊ฒฉ์ ์ธ ์„ฑ๋Šฅ ๋น„๊ต์— ์•ž์„œ ํ˜„์žฌ ํ”„๋กœ..

    2024.05.02
  • Database PK ์ƒ์„ฑ ์ „๋žต (without DB, Mysql)

    ๊ฐ€์žฅ ์†์‰ฝ๊ฒŒ ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์šฉํ•  PK๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ PK๊ฐ€ ๋  ์ˆ˜์น˜ ์นผ๋Ÿผ์— AUTO_INCREMENT(MySql ๊ธฐ์ค€)๋ฅผ ๊ฑธ์–ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•˜๋ฉด, ๊ฐœ๋ฐœ์ž๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ PK ์นผ๋Ÿผ์„ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ DB๊ฐ€ ์•Œ์•„์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚จ ๊ฐ’์ด ๋ ˆ์ฝ”๋“œ์— ํฌํ•จ๋˜๊ฒŒ ๋œ๋‹ค. ์ธ๋ฑ์Šค๋Š” ๊ฒฐ๊ตญ DB์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฐœ๋…์ด๊ณ , ๊ทธ ๊ฐ’์„ DB๊ฐ€ ์ง์ ‘ ์ƒ์„ฑํ•ด์ฃผ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค๋ฉด ๊ทธ๊ฑธ๋กœ ๋œ ๊ฒƒ ์•„๋‹Œ๊ฐ€? ๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์—๋„ ๊ฒฐ๊ตญ ํŠน์ • ๊ด€์ ์—์„œ๋Š” ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ด ํ•œ๊ณ„๋“ค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ์ด๋ฅผ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋˜๋‹ค๋ฅธ ๋ฐฉ์‹๋“ค์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ๋‹ค. DB๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” PK์˜ ๋ฌธ์ œ์  1. ๋ถ„์‚ฐ์ฒ˜๋ฆฌ ํ™˜๊ฒฝ์—์„œ PK ๊ฐ’ ์ฑ„๋ฒˆ์˜ ์–ด๋ ค์›€ ์ตœ๊ทผ์—๋Š” ๋Œ€๊ทœ๋ชจ..

    2024.03.17
  • MVCC in Mysql(with ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ์ˆ˜์ค€)

    ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” MVCC์˜ ๊ฐœ๋…๊ณผ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ์ˆ˜์ค€์„ ๊ตฌํ˜„ํ•  ๋•Œ ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ค‘ ํ•˜๋‚˜์ธ Mysql์„ ํ†ตํ•ด ์ •๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค. ๋“ค์–ด๊ฐ€๊ธฐ ์•ž์„œ ์ด๋ฒˆ ๊ธ€์—์„œ ์ค‘์ ์ ์œผ๋กœ ๋‹ค๋ฃจ๊ฒŒ ๋  MVCC ์ฃผ์ œ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—, ๋จผ์ € ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ์ˆ˜์ค€์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ์ง€์‹์ด ํ•„์š”ํ•˜๋‹ค. ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ์ˆ˜์ค€์ด๋ž€, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์—์„œ ํŠธ๋žœ์žญ์…˜๋“ค์ด ๋™์‹œ๋‹ค๋ฐœ์ ์œผ๋กœ ์‹คํ–‰๋  ๋•Œ ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์˜ ์กฐํšŒ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์— ์–ผ๋งˆ๋‚˜ ์˜ํ–ฅ์„ ๋ฐ›๊ฒŒํ• ์ง€์— ๋Œ€ํ•œ ์ˆ˜์ค€์„ ์˜๋ฏธํ•œ๋‹ค. READ UNCOMMITED, READ COMMITED, REPEATABLE READ, SERIALIZABLE์˜ ์ด 4๊ฐ€์ง€ ์ˆ˜์ค€์œผ๋กœ ๊ตฌ์„ฑ๋˜๊ณ  ์–ธ๊ธ‰ํ•œ ์ˆœ์„œ์˜ ์—ญ์ˆœ์œผ๋กœ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด ๋†’์•„์ง„๋‹ค. (READ ..

    2024.02.25
  • ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋ฐฉ๋ฒ•๋ก  ๋น„๊ต(Offset vs Cursor)

    ํŽ˜์ด์ง€๋„ค์ด์…˜์ด๋ž€? OLTP ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ˜ํ™˜๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ํŠน์ • ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋œ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์›น๊ฐœ๋ฐœ์˜ ๊ฐ€์žฅ ํ”ํ•œ ์˜ˆ์‹œ์ธ ๊ฒŒ์‹œํŒ์ด ๊ทธ๋ ‡๋‹ค. ๊ฒŒ์‹œํŒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•œ ํŽ˜์ด์ง€์— ์•ฝ 20๊ฐœ์˜ ๊ฒŒ์‹œ๊ธ€๋“ค์„ ์ตœ์‹ ์ˆœ์œผ๋กœ ๋…ธ์ถœ์‹œํ‚ค๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์Œ ํŽ˜์ด์ง€๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด 21 ~ 40๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ทธ์ œ์„œ์•ผ ์กฐํšŒ๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋œ๋‹ค. ์ด ์ƒํ™ฉ์—์„œ ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „์ฒด ๊ฒŒ์‹œ๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์‚ฌ์šฉ์ž๊ฐ€ ์œ„์น˜ํ•œ ํŽ˜์ด์ง€์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก API ์„ค๊ณ„๊ฐ€ ์ด๋ฃจ์–ด์ง€๋Š”๋ฐ ์ด๋ฅผ ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋ฐฉ๋ฒ•๋ก ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํŽ˜์ด์ง€๋„ค์ด์…˜ ์ข…๋ฅ˜ ์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํŽ˜์ด์ง€๋„ค์ด์…˜ ๊ธฐ๋ฒ•์—๋Š” Offset ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€๋„ค์ด์…˜๊ณผ Cursor(Keyset) ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€๋„ค์ด์…˜์ด ์กด์žฌํ•œ๋‹ค. Offset ๊ธฐ..

    2024.02.17
  • Exists ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด์„œ (SQL)

    ๊ฐœ์ธ์ ์œผ๋กœ SQL์˜ Exists ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•œ ์ดํ•ด๋„๊ฐ€ ๋‚ฎ์•˜๊ณ  ์ด๋กœ ์ธํ•ด ์‹ค์ œ๋กœ ํ™œ์šฉ์„ ๊ฑฐ์˜ ๋ชปํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, DB ์Šคํ„ฐ๋””๋ฅผ ์œ„ํ•ด ์ฑ…์„ ์ฝ๋Š” ๋„์ค‘ ํ•ด๋‹น ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ๋“ฑ์žฅํ•ด์„œ ์ด ๊ธฐํšŒ์— ์ด๋ฅผ ํ™•์‹คํžˆ ์ •๋ฆฌํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ณ ์ž ํ•œ๋‹ค. Exists ์—ฐ์‚ฐ์ž๋ž€? Exists ์—ฐ์‚ฐ์ž๋Š” ์—ฐ์‚ฐ์ž ์ดํ›„์— ๋“ฑ์žฅํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ True, ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ False๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋ง๋กœ๋งŒ ์„ค๋ช…ํ•˜๋ฉด ์ดํ•ด๊ฐ€ ์–ด๋ ค์šฐ๋‹ˆ ์‹ค์ œ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. SELECT post.id, post.name FROM post WHERE post.user_id = 10 AND EXISTS ( SELECT 1 FROM comment WHERE comment.post_id = post.id AND..

    2024.02.12
์ด์ „
1 2 3 4
๋‹ค์Œ
ํ‹ฐ์Šคํ† ๋ฆฌ
ยฉ 2018 TISTORY. All rights reserved.

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”