2023๋…„ 4์›” 22์ผยท3๋ถ„ ์ฝ๊ธฐ

PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ๋ฐ AppMaster๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

์ •๊ทœํ™”, ์ธ๋ฑ์‹ฑ, ์ œ์•ฝ ์กฐ๊ฑด ๋“ฑ์„ ํฌํ•จํ•˜์—ฌ PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„๋ฅผ ์œ„ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. AppMaster.io๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๊ณ  ํšจ์œจ์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์–ด๋–ป๊ฒŒ ๋„์›€์ด ๋˜๋Š”์ง€ ์•Œ์•„๋ณด์„ธ์š”.

PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ๋ฐ AppMaster๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ, ์•ก์„ธ์Šค ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•˜๋ฏ€๋กœ ์ค‘์š”ํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋”ฐ๋ฅด๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํšจ์œจ์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ์ •๊ทœํ™”, ์ธ๋ฑ์‹ฑ, ์ œ์•ฝ ์กฐ๊ฑด ๊ด€๋ฆฌ ๋“ฑ์„ ํฌํ•จํ•˜์—ฌ PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ AppMaster.io ์™€ ๊ฐ™์€ no-code ํ”Œ๋žซํผ์ด ์–ด๋–ป๊ฒŒ PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ค๊ณ„ ๋ฐ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด์„œ๋„ ๋‹ค๋ฃฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ‘œ์ค€ํ™”

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

  • 1NF(์ œ1 ์ •๊ทœํ˜•): ๊ฐ ์—ด์— ์›์ž ๊ฐ’์ด ํฌํ•จ๋˜์–ด ์žˆ๊ณ  ๋ฐ˜๋ณต๋˜๋Š” ๊ทธ๋ฃน์ด ์—†๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • 2NF(2์ฐจ ์ •๊ทœํ˜•): ๋ชจ๋“  1NF ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๊ณ  ๊ธฐ๋ณธ ํ‚ค๊ฐ€ ์•„๋‹Œ ๊ฐ ์—ด์ด ๊ธฐ๋ณธ ํ‚ค์— ์™„์ „ํžˆ ์ข…์†๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • 3NF(์ œ3 ์ •๊ทœํ˜•): ๋ชจ๋“  2NF ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๊ณ  ๊ธฐ๋ณธ ํ‚ค๊ฐ€ ์•„๋‹Œ ์—ด์ด ๊ธฐ๋ณธ ํ‚ค์— ์ „์ด์ ์œผ๋กœ ์ข…์†๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • BCNF(Boyce-Codd Normal Form): ๋ชจ๋“  ๊ฒฐ์ •์ž๊ฐ€ ํ›„๋ณด ํ‚ค์ธ 3NF์˜ ์•ฝ๊ฐ„ ๋” ๊ฐ•๋ ฅํ•œ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

๊ณผ๋„ํ•˜๊ฒŒ ์ •๊ทœํ™”ํ•˜๋ฉด ์ฟผ๋ฆฌ ์‹œ ๊ณผ๋„ํ•œ ์กฐ์ธ์ด ๋ฐœ์ƒํ•˜์—ฌ ์ž ์žฌ์ ์œผ๋กœ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉํ•˜๋Š” ์ •๊ทœํ™” ์ˆ˜์ค€์„ ์‹ ์ค‘ํ•˜๊ฒŒ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์„ฑ๋Šฅ ๊ฐ„์˜ ๊ท ํ˜•์„ ๋งž์ถ”๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์‹ฑ

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

  • WHERE ์ ˆ ๋ฐ JOIN ์กฐ๊ฑด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ธ๋ฑ์Šค ์—ด์€ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ๊ฐ€์†ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž์ฃผ ์ฟผ๋ฆฌ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ž‘์€ ํ•˜์œ„ ์ง‘ํ•ฉ์ด ์žˆ๋Š” ํฐ ํ…Œ์ด๋ธ”์— ๋ถ€๋ถ„ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • WHERE ์ ˆ์— ์—ฌ๋Ÿฌ ์—ด์ด ํฌํ•จ๋œ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ๋‹ค์ค‘ ์—ด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ธ๋ฑ์Šค๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ถ„์„ํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ œ์•ฝ

์ œ์•ฝ ์กฐ๊ฑด์€ ์—ด ๋˜๋Š” ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๊ทœ์น™์„ ์ ์šฉํ•˜์—ฌ ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ๊ณผ ์ •ํ™•์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์˜ ํ•„์ˆ˜ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ๊ตฌ์†์กฐ๊ฑด ์œ ํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ ํ‚ค: ํ…Œ์ด๋ธ”์˜ ๊ฐ ํ–‰์„ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ณ  ์ค‘๋ณต ํ–‰์ด ์—†๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ์™ธ๋ž˜ ํ‚ค: ๋‘ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜๊ณ  ์ฐธ์กฐ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฐธ์กฐ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณ ์œ : ์ง€์ •๋œ ์—ด์— ์ค‘๋ณต ๊ฐ’์ด ์—†๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ํ™•์ธ: ์—ด์˜ ๋ฐ์ดํ„ฐ์— ํŠน์ • ์กฐ๊ฑด์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • Not Null: ์—ด์ด NULL ๊ฐ’์„ ํฌํ•จํ•  ์ˆ˜ ์—†๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ๊ด€๋ จ ํ…Œ์ด๋ธ”์— ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ œ์•ฝ ์กฐ๊ฑด์„ ์‹ ์ค‘ํ•˜๊ฒŒ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

๋ช…๋ช… ๊ทœ์น™

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ์ฒด(ํ…Œ์ด๋ธ”, ์—ด, ์ธ๋ฑ์Šค ๋“ฑ)์— ๋Œ€ํ•ด ์ผ๊ด€๋œ ๋ช…๋ช… ๊ทœ์น™์„ ์„ค์ •ํ•˜๋ฉด ๊ฐ€๋…์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ PostgreSQL ๋ช…๋ช… ๊ทœ์น™์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋ชจ๋ฒ” ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

  • PostgreSQL์€ ์ธ์šฉ ๋ถ€ํ˜ธ๊ฐ€ ์—†๋Š” ์‹๋ณ„์ž๋ฅผ ์†Œ๋ฌธ์ž๋กœ ์ž๋™ ๋ณ€ํ™˜ํ•˜๋ฏ€๋กœ ๊ฐ์ฒด ์ด๋ฆ„์— ์†Œ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
  • camelCase ๋˜๋Š” PascalCase๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ๋ฐ‘์ค„(_)๋กœ ๊ฐœ์ฒด ์ด๋ฆ„์˜ ๋‹จ์–ด๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๋ถˆ๋ถ„๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ์•ฝ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ  ์„œ์ˆ ์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์™ธ๋ž˜ ํ‚ค ์—ด์˜ ๊ฒฝ์šฐ referenced_table_singular_form_id ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: users ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ ํ‚ค์˜ ๊ฒฝ์šฐ user_id ).
  • idx_ ๋˜๋Š” index_ ์™€ ๊ฐ™์€ ์ธ๋ฑ์Šค ์ด๋ฆ„์— ์ผ๊ด€๋œ ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

๋ฐ์ดํ„ฐ ์œ ํ˜•

๋” ์ ์€ ๋…ธ๋ ฅ์œผ๋กœ ๊ฒฐ์ œ ์‹œ์Šคํ…œ ์‹œ์ž‘
๋ฐฑ์—”๋“œ ๊ฒฝ๋กœ์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™์„ ์ˆ˜์ž‘์—…์œผ๋กœ ์ฝ”๋”ฉํ•˜์ง€ ์•Š๊ณ  Stripe ๊ฒฐ์ œ๋ฅผ ์—ฐ๊ฒฐํ•˜์„ธ์š”.
๊ฒฐ์ œ ์ถ”๊ฐ€

์—ด์— ์ ํ•ฉํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ ์Šคํ† ๋ฆฌ์ง€ ๊ณต๊ฐ„, ์„ฑ๋Šฅ ๋ฐ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฏ€๋กœ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. PostgreSQL์€ ์ˆซ์ž, ๋ฌธ์ž, ์ด์ง„์ˆ˜, ๋‚ ์งœ/์‹œ๊ฐ„ ๋“ฑ์„ ํฌํ•จํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์—ด์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์„ ํƒํ•  ๋•Œ ๋‹ค์Œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.

  • ์Šคํ† ๋ฆฌ์ง€ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค.
  • ์•Œ๋ ค์ง„ ์ตœ๋Œ€ ๊ธธ์ด๊ฐ€ ์žˆ๋Š” ์—ด์— text ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ  ๋Œ€์‹  ์ง€์ •๋œ ๊ธธ์ด ์ œํ•œ์ด ์žˆ๋Š” varchar ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
  • ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ์ €์žฅํ•˜๋Š” ๋Œ€์‹  ์ ์ ˆํ•œ ๋‚ ์งœ/์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์œ ํ˜•( timestamp , date , time ๋“ฑ)์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
  • ์ •์ˆ˜๋‚˜ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์ฐธ/๊ฑฐ์ง“ ๊ฐ’์ด ์žˆ๋Š” ์—ด์— ๋Œ€ํ•ด boolean ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ํŒŒํ‹ฐ์…”๋‹

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

  • ํŒŒํ‹ฐ์…˜ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ๋ฅด๊ฒŒ ๋ถ„์‚ฐํ•˜๊ณ  ์ฟผ๋ฆฌ ํŒจํ„ด์— ๋งž๋Š” ๋ถ„ํ•  ํ‚ค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  • ์•Œ๋ ค์ง„ ๊ณ ์œ  ๊ฐ’ ์ง‘ํ•ฉ ๋˜๋Š” ์—ฐ์† ๋ฒ”์œ„(์˜ˆ: ๋‚ ์งœ, ์ƒํƒœ ์ฝ”๋“œ)๊ฐ€ ์žˆ๋Š” ์—ด์— ๋Œ€ํ•ด ๋ฒ”์œ„ ๋˜๋Š” ๋ชฉ๋ก ๋ถ„ํ• ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณ ์œ ํ•œ ๊ฐ’์ด ๋งŽ๊ฑฐ๋‚˜ ์•ก์„ธ์Šค ํŒจํ„ด์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ์—ด์— ๋Œ€ํ•ด ํ•ด์‹œ ๋ถ„ํ• ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ณ  ์ฟผ๋ฆฌ ํŒจํ„ด์ด ๋ณ€๊ฒฝ๋จ์— ๋”ฐ๋ผ ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ํŒŒํ‹ฐ์…”๋‹ ์ฒด๊ณ„๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ณด์•ˆ

์…€ํ”„ ํ˜ธ์ŠคํŒ… ์˜ต์…˜ ์œ ์ง€
ํŒ€์ด ์™„์ „ํ•œ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์ง์ ‘ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์ œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜์„ธ์š”.
์ฝ”๋“œ ๋‚ด๋ณด๋‚ด๊ธฐ

๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ๋ฌด๋‹จ ์•ก์„ธ์Šค๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณด์•ˆ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ณด์•ˆ์„ ๋ณด์žฅํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.

  • ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ๊ฐ•๋ ฅํ•˜๊ณ  ๊ณ ์œ ํ•œ ์•”ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ •๊ธฐ์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค.
  • ์ตœ์†Œ ๊ถŒํ•œ ์›์น™์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์„ ์ž‘์—…์— ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์œผ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
  • ์ตœ์‹  ๋ณด์•ˆ ํŒจ์น˜ ๋ฐ ์—…๋ฐ์ดํŠธ๋กœ PostgreSQL ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜์‹ญ์‹œ์˜ค.
  • SSL/TLS ๋ฐ ์—ด ์ˆ˜์ค€ ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ์‚ฌ์šฉ ๋ฐ ์ „์†ก ์ค‘์ธ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ ๋ฐฑ์—…ํ•˜๊ณ  ๋ณต์› ํ”„๋กœ์„ธ์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ ๊ฐ€๋Šฅ์„ฑ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™œ๋™์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๊ฐ์‚ฌํ•˜์—ฌ ๋ณด์•ˆ ์‚ฌ๊ณ ๋ฅผ ์ฆ‰์‹œ ๊ฐ์ง€ํ•˜๊ณ  ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค.

์„ฑ๋Šฅ ํŠœ๋‹

์•ˆ์ „ํ•œ ์ ‘๊ทผ์„ ๋น ๋ฅด๊ฒŒ ์ถ”๊ฐ€
์‚ฌ์ „ ๊ตฌ์„ฑ๋œ ์ธ์ฆ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ์„ ๋” ์•ˆ์ „ํ•œ ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”.
์ธ์ฆ ์ถ”๊ฐ€

PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์–‘ํ•œ ์„ค์ • ๋ฐ ๊ตฌ์„ฑ์„ ๋ชจ๋‹ˆํ„ฐ๋ง, ๋ถ„์„ ๋ฐ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ์ง€์†์ ์ธ ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ์กฐ์ •์„ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋А๋ฆฌ๊ฑฐ๋‚˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ์— ํŠนํžˆ ์ฃผ์˜ํ•˜๋ฉด์„œ ์ฟผ๋ฆฌ๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ ๋ถ„์„ํ•˜๊ณ  ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ๋””์Šคํฌ ๊ณต๊ฐ„ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์šฉ๋Ÿ‰ ์ฆ๊ฐ€๋ฅผ ๊ณ„ํšํ•˜์‹ญ์‹œ์˜ค.
  • shared_buffers , work_mem ๋ฐ checkpoint_segments ์™€ ๊ฐ™์€ PostgreSQL ๊ตฌ์„ฑ ์„ค์ •์„ ์กฐ์ •ํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ๋ฐ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • pg_stat_activity ๋ฐ pg_stat_statements ์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™œ๋™ ๋ฐ ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์— AppMaster ์‚ฌ์šฉ

AppMaster.io PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ๋ฐ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ no-code ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. AppMaster.io ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์‹œ๊ฐ์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ , ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๊ณ , ์ œ์•ฝ ์กฐ๊ฑด์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ AppMaster.io PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์›ํ™œํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•˜์—ฌ ์ธ๋ฑ์‹ฑ, ํŒŒํ‹ฐ์…”๋‹ ๋ฐ ์„ฑ๋Šฅ ํŠœ๋‹๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

AppMaster.io ์˜ ์‹œ๊ฐ์  ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋ฉด ํ”Œ๋žซํผ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ๋ฐ ๋ฐฑ์—”๋“œ ์ธํ”„๋ผ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋™์•ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋…ผ๋ฆฌ ๋ฐ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‹œ๊ฐ„๊ณผ ๋ฆฌ์†Œ์Šค๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋ชจ๋ฒ” ์‚ฌ๋ก€์™€ ์—…๊ณ„ ํ‘œ์ค€์„ ๋”ฐ๋ฅด๋„๋ก ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋””์ž์ธ ์™ธ์—๋„ AppMaster.iono-code ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ํฌ๊ด„์ ์ธ ๋„๊ตฌ ๋ชจ์Œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. drag-and-drop ์ธํ„ฐํŽ˜์ด์Šค, ์‹œ๊ฐ์  ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค ๋””์ž์ด๋„ˆ ๋ฐ ์‚ฌ์ „ ๊ตฌ์ถ•๋œ ๊ตฌ์„ฑ ์š”์†Œ์˜ ๊ด‘๋ฒ”์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•œ ์ค„์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ์™„์ „ํ•œ ๋Œ€ํ™”ํ˜• ๋ฐ ๋ฐ˜์‘ํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

G2์—์„œ 60,000๋ช…์ด ๋„˜๋Š” ์‚ฌ์šฉ์ž์™€ ์ˆ˜๋งŽ์€ ๊ณ ์„ฑ๋Šฅ ํ‰๊ฐ€๋ฅผ ๋ฐ›์€ AppMaster.io ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ํšจ์œจ์ ์ด๋ฉฐ ์•ˆ์ „ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๋ ค๋Š” ๋ชจ๋“  ๊ทœ๋ชจ์˜ ๊ธฐ์—…์„ ์œ„ํ•œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ

PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์—๋Š” ์ •๊ทœํ™”, ์ธ๋ฑ์‹ฑ, ์ œ์•ฝ ์กฐ๊ฑด, ๋ช…๋ช… ๊ทœ์น™, ๋ฐ์ดํ„ฐ ์œ ํ˜•, ํŒŒํ‹ฐ์…”๋‹, ๋ณด์•ˆ ๋ฐ ์„ฑ๋Šฅ ํŠœ๋‹์„ ์œ„ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ง€์นจ์„ ์ค€์ˆ˜ํ•˜๊ณ  AppMaster.io ์™€ ๊ฐ™์€ ๊ฐ•๋ ฅํ•œ no-code ํ”Œ๋žซํผ์„ ํ™œ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐฑ๋ณธ์„ ํ˜•์„ฑํ•˜๋Š” ํšจ์œจ์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์•ˆ์ „ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ๊ธฐ์—… ์†Œ์œ ์ฃผ์ด๋“  ๋Œ€๊ธฐ์—… ์ˆ˜์ค€์˜ ์กฐ์ง์ด๋“  ์ด๋Ÿฌํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์ ์šฉํ•˜๊ณ  AppMaster.io ํ™œ์šฉํ•˜๋ฉด ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ๊ฐœ๋ฐœ ๋น„์šฉ์„ ์ ˆ๊ฐํ•˜๋ฉฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ตœ๊ณ ์˜ ํ‘œ์ค€์„ ์ถฉ์กฑํ•˜๋„๋ก ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‰ฌ์šด ์‹œ์ž‘
๋ฉ‹์ง„๋งŒ๋“ค๊ธฐ

๋ฌด๋ฃŒ ์š”๊ธˆ์ œ๋กœ AppMaster๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.
์ค€๋น„๊ฐ€ ๋˜๋ฉด ์ ์ ˆํ•œ ๊ตฌ๋…์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋‹ค
PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ๋ฐ AppMaster๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ• | AppMaster