๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
HYU/์กธ์—… ํ”„๋กœ์ ํŠธ

8. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์ถ•

by Jaeguk 2024. 3. 31.

์ด๋ฒˆ ํ™œ๋™ ์š”์•ฝ


์ด๋ฒˆ์ฃผ์—๋Š” ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ๊ตฌ์ถ•์„ ์œ„ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์˜€๋‹ค

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

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค


์„œ๋ฒ„ ์ปดํ“จํ„ฐ์— ์ƒˆ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค

๋จผ์ € ์–ด๋–ค DB๋ฅผ ์“ธ ๊ฒƒ์ธ์ง€๋ฅผ ๊ณ ๋ฏผํ–ˆ๋‹ค.
ํฌ๊ฒŒ ๋ดค์„ ๋•Œ, SQL๊ณผ NoSQL๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

SQL์˜ ๊ฒฝ์šฐ์—๋Š” ์ฃผ๋กœ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๊ณ , NoSQL์€ ๊ทธ์™€ ๋ฐ˜๋Œ€๋˜๋Š” ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

NoSQL์˜ ์žฅ์ ์€ ์กฐํšŒ๊ฐ€ ๋น ๋ฅด๊ณ , ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ์— ์šฉ์ดํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ ์ด๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์ง€ ์•Š๊ณ , ์กฐํšŒ๊ฐ€ ์ดˆ๋ฐ˜ ํ”„๋ก ํŠธ ํ™”๋ฉด ๊ตฌ์„ฑ์„ ์ œ์™ธํ•˜๋ฉด ๊ทธ๋ ‡๊ฒŒ ๋งŽ์ด ์ผ์–ด๋‚  ๊ฒƒ ๊ฐ™์ง€ ์•Š์•˜๋‹ค.

๋Œ€์‹  ์‚ฌ์šฉ์ž๋งˆ๋‹ค ์ปค์Šคํ…€ํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ ์ž ํ–ˆ๋Š”๋ฐ, NoSQL์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฝค ๋งŽ์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•  ๊ฒƒ ๊ฐ™์•˜๋‹ค.
๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์ด ์ ๊ณ , ์Šคํ‚ค๋งˆ๊ฐ€ ๋ช…ํ™•ํ•œ RDB๋ฅผ ์„ ํƒ ํ–ˆ๋‹ค.

๊ทธ ์ค‘์—์„œ๋„ PostgreSQL์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ–ˆ๋‹ค.
์‚ฌ์‹ค ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•˜๋ฉด, MySQL์„ ์“ฐ๋Š” ๊ฒŒ ๋งž์•˜๋‚˜๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค๊ธฐ๋„ ํ•˜์ง€๋งŒ, ์ผ๋‹จ์€ PostgreSQL๋กœ ์ง„ํ–‰์„ ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค

 

  • PostgreSQL์„ ์„ค์น˜ํ•˜๊ณ , ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„์€ cytoscape๋กœ ์ƒ์„ฑํ–ˆ๋‹ค

 

  • ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•  DB ์œ ์ €๋„ ์ƒ์„ฑํ–ˆ๋‹ค

 

  • ์„œ๋ฒ„ ์ปดํ“จํ„ฐ์— ๋Œ€ํ•œ ์™ธ๋ถ€ ์š”์ฒญ์„ ํ—ˆ๋ฝํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ผ๋‹จ์€ ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•ด ํ—ˆ๋ฝํ•˜๋„๋ก ์„ค์ • ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ–ˆ๋‹ค
    • listen address = '*'๋กœ ์„ค์ •ํ–ˆ๋‹ค
    • IPv4 local connections์—์„œ host์˜ address๋ฅผ 0.0.0.0/0(Anywhere)๋กœ ์„ค์ •ํ–ˆ๋‹ค
  • ๋˜ํ•œ ๋ฐฉํ™”๋ฒฝ ํ•ด์ œ๋ฅผ ์œ„ํ•ด์„œ ๋ฆฌ๋ˆ…์Šค์˜ ufw๋ฅผ ์‚ฌ์šฉํ•ด์„œ Postgres๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” 5432 ํฌํŠธ์— ๋Œ€ํ•œ ์š”์ฒญ์„ ํ—ˆ๋ฝํ–ˆ๋‹ค

 

Issue


๋กœ์ปฌ์—์„œ ์ƒ์„ฑํ•œ DB์— ์—ฐ๊ฒฐํ•˜๋Š” ๋„์ค‘์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค

  • ๋ชจ๋“  ์„ค์ •์„ ์ •์ƒ์ ์œผ๋กœ ๋งˆ์ณค๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ๋กœ์ปฌ์—์„œ ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผ์ด ๋˜์ง€ ์•Š์•˜๋‹ค
  • ๊ฐ™์€ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ด์„œ ๋‚ด๋ถ€๋ง์—์„œ ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋ฉด ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ–ˆ์ง€๋งŒ, ๋กœ์ปฌ์—์„œ์˜ ์ ‘๊ทผ๋งŒ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค
  • ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ํ•™๊ต์ธก์—์„œ ์ž์ฒด์ ์œผ๋กœ ์™ธ๋ถ€์˜ ์š”์ฒญ์„ ๋ง‰๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋ผ ์ƒ๊ฐ ํ–ˆ๋‹ค

์กฐ๊ต๋‹˜์˜ ์กฐ์–ธ์— ๋”ฐ๋ผ ํ•™๊ต์ธก์— VPN ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹ ์ฒญ์„ ํ•ด๋‘” ์ƒํƒœ์ด๋‹ค

 

๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ๊ตฌ์ถ•


๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ๊ตฌ์ถ•์„ ์œ„ํ•œ ์ดˆ๊ธฐ ์„ธํŒ… ์ž‘์—…๋“ค๋„ ์ง„ํ–‰ํ–ˆ๋‹ค

  • ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋‘˜๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์Šคํƒ์ธ NestJS๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค
  • Node์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ CRUD ์ง„ํ–‰
  • Edge์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ CRUD ์ง„ํ–‰
  • ORM์œผ๋กœ๋Š” TypeORM ๋Œ€์‹  Prisma๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค
    • ์ด์œ ๋Š” ์š”์ฆ˜ Prisma๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•˜๊ณ , TypeORM์— ๋น„ํ•ด์„œ ์กฐ๊ธˆ ๋” ๋†’์€ ์ถ”์ƒํ™” ์ˆ˜์ค€์œผ๋กœ ์ธํ•ด์„œ ๊ฐœ๋ฐœ์ด ์šฉ์ด ํ•  ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ–ˆ๋‹ค
    • ๊ฐ์ž ํ•™์—…์ด๋‚˜ ๋‹ค๋ฅธ ์ผ์ด ์žˆ๋Š” ์ƒํƒœ์—์„œ ์ง„ํ–‰ํ•˜๋Š” ์กธ์—… ํ”„๋กœ์ ํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์— ์šฉ์ดํ•œ ๊ฒƒ๋„ ์žฅ์ ์œผ๋กœ ๊ณ ๋ ค๋ฅผ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค

 

๊ฐœ๋ฐœ ๊ตฌ์ƒ๋„


ํ˜„์žฌ ์ƒํ™ฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์•ž์œผ๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋  ํ”Œ๋กœ์šฐ๋ฅผ ๊ทธ๋ ค๋ณด์•˜๋‹ค

  • ํ”„๋ก ํŠธ ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ์—๋Š” Vercel ๋“ฑ์„ ์ด์šฉํ•ด์„œ ์™ธ๋ถ€ ํ˜ธ์ŠคํŒ…์„ ์ง„ํ–‰ํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜, ๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ ์ธํ•ด์„œ ๋‚ด๋ถ€๋ง์—์„œ ๋ฐฐํฌ๋ฅผ ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค
    • ๋‹คํ–‰ํžˆ ํ”„๋ก ํŠธ์šฉ ์„œ๋ฒ„ ์ปดํ“จํ„ฐ๋„ ์žˆ์–ด์„œ ๊ฑฐ๊ธฐ์„œ ํ˜ธ์ŠคํŒ…์„ ์ง„ํ–‰ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์•˜๋‹ค
  • VPN์„ ์ด์šฉํ•ด์„œ ์„œ๋ฒ„ ์ปดํ“จํ„ฐ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๊ฒฐ ํ›„, ๋กœ์ปฌ์—์„œ ๋ฐฑ์—”๋“œ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ณ  ์„œ๋ฒ„ ์ปดํ“จํ„ฐ์—์„œ๋Š” ๋ฐฐํฌ๋งŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์˜ˆ์ •์ด๋‹ค

 

Reference


 

RDBMS์™€ NoSQL์˜ ์ฐจ์ด

RDBMS์™€ NoSQL database๋Š” ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅด๊ณ , ์–ด๋–ป๊ฒŒ ์จ์•ผ ํ• ๊นŒ์š”?

www.whatap.io

 

PostgreSQL

The world's most advanced open source database.

www.postgresql.org

 

[Postgresql] ์™ธ๋ถ€์ ‘์† ํ—ˆ์šฉํ•˜๊ธฐ

postgresql๋ฅผ ์™ธ๋ถ€์—์„œ ์ ‘์† ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •ํ•ด๋ณด์ž. ๊ธฐ๋ณธ์ ์œผ๋กœ postgresql์„ ์„ค์น˜ํ–ˆ๋‹ค๋ฉด ์™ธ๋ถ€์ ‘์†์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋„๋ก ๋˜์–ด ์žˆ๋‹ค. โ€ป conf ํŒŒ์ผ๋“ค์˜ ๊ฒฝ๋กœ : /etc/postgresql/10/main/ 1) postgresql.conf ํŒŒ์ผ ์ˆ˜์ • - li

tbmaster.tistory.com

 

[Postgresql] ์™ธ๋ถ€์—์„œ ์ ‘์†ํ•˜๊ธฐ

์—ฐ๊ฒฐ ์œ ๋ฌด ํ™•์ธ ํ…”๋„ท์œผ๋กœ IP, port๋ฅผ ๋ช…์‹œํ•˜๋ฉด ํ•ด๋‹น ์„œ๋ฒ„์— ์ € ํฌํŠธ๊ฐ€ ์—ด๋ ค ์žˆ๋Š”์ง€ ๊ฐ„๋‹จํžˆ ํ™•์ธ $ telnet 127.0.0.1 5432 Trying 127.0.0.1... telnet: Unable to connect to remote host: Connection refused $ telnet 127.0.0.1 22 Tryin

racoonlotty.tistory.com

 

[postgresql] Ubuntu์—์„œ postgresql ์„ค์น˜ํ•˜๊ณ  ์™ธ๋ถ€ ์ ‘์† ์—ด์–ด์ฃผ๊ธฐ

1. PostgreSQL ์„ค์น˜ apt-get์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  postgresql๊ณผ postgresql-contrib์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„์ค€๋‹ค. sudo apt-get update sudo apt-get install -y postgresql postgresql-contrib postgresql-contrib์€ postgresql์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ™•์žฅํŒฉ์ด

cocook.tistory.com

 

PostgreSQL | ์—ญํ• (์‚ฌ์šฉ์ž) ROLE ์ƒ์„ฑ | ์ƒ์„ฑ๋œ ์—ญํ•  ์กฐํšŒ

PostgreSQL๋กœ ์ƒ์„ฑ๋œ ์—ญํ•  ๋ชฉ๋ก์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ๋‹ค. \du ๋ช…๋ น ์‚ฌ์šฉ ๋จผ์ € psql์˜ ๋ฉ”ํƒ€ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ญํ•  ๋ชฉ๋ก์„ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•œ๋‹ค. devkuma=# \du ๋กค

www.devkuma.com

 

[linux] ์šฐ๋ถ„ํˆฌ ๋ฐฉํ™”๋ฒฝ ์„ค์ •ํ•˜๊ธฐ ํฌํŠธ ํ—ˆ์šฉ ํ•˜๊ธฐ (ubuntu, ufw)

1. ๊ธฐ๋ณธ ๋ช…๋ น์–ด ๋ฐฉํ™”๋ฒฝ ์ •์ง€ ํ›„ ์ƒํƒœ ํ™•์ธ ufw disable ufw status ๋ฐฉํ™”๋ฒฝ ์‹คํ–‰ ํ›„ ์ƒํƒœ ํ™•์ธ ufw enable ufw status 22๋ฒˆ ํฌํŠธ ํ—ˆ์šฉํ•˜๊ณ  ๋ฆฌ์ŠคํŠธ ํ™•์ธ ufw allow 22 ufw status 22๋ฒˆ ํฌํŠธ ๋ง‰๊ณ  ๋ฆฌ์ŠคํŠธ ํ™•์ธํ•˜๊ธฐ ufw deny 22

pinggoopark.tistory.com

 

Prisma | Simplify working and interacting with databases

Build, optimize, and grow your application easily with an intuitive data model, type-safety, automated migrations, connection pooling, caching, and real-time database subscriptions.

www.prisma.io

 

728x90