๐Ÿ˜ PostgreSQL์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

OneTwoยท2026๋…„ 1์›” 15์ผ

๐Ÿค” ์™œ PostgreSQL์„ ์ •๋ฆฌํ•˜๊ฒŒ ๋๋‚˜

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


๐Ÿ“Œ PostgreSQL ํ•œ ์ค„ ์ •์˜

PostgreSQL์€ ์˜คํ”ˆ์†Œ์Šค ๊ฐ์ฒด-๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(ORDBMS)์ด๋‹ค.


๐Ÿงฉ PostgreSQL์ด๋ž€?

PostgreSQL์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDBMS)์ด๋ฉด์„œ,
๊ฐ์ฒด ๊ฐœ๋…๊นŒ์ง€ ํ™•์žฅํ•œ ๊ฐ์ฒด-๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(ORDBMS)์ด๋‹ค.

  • ์˜คํ”ˆ์†Œ์Šค
  • ๋ฌด๋ฃŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค์—์„œ๋„ ์•ˆ์ •์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๐Ÿ—๏ธ PostgreSQL์˜ ์ฃผ์š” ํŠน์ง•

1๏ธโƒฃ ์˜คํ”ˆ์†Œ์Šค & ๋ฌด๋ฃŒ

  • ๋ผ์ด์„ ์Šค ๋น„์šฉ ์—†์Œ
  • ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๊ฐ€๋Šฅ
  • ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ํ™œ๋ฐœํ•จ

2๏ธโƒฃ ํ‘œ์ค€ SQL์„ ์ž˜ ์ง€์›

PostgreSQL์€ SQL ํ‘œ์ค€์„ ์ถฉ์‹คํžˆ ๋”ฐ๋ฅด๋Š” DB ์ค‘ ํ•˜๋‚˜๋‹ค.

์˜ˆ์‹œ:

SELECT * FROM member WHERE id = 1;

๊ธฐ๋ณธ์ ์ธ SQL ๋ฌธ๋ฒ•์€ ๋‹ค๋ฅธ DB(MySQL, Oracle ๋“ฑ)์™€ ๊ฑฐ์˜ ๋™์ผํ•˜๋‹ค.


3๏ธโƒฃ ๊ฐ•๋ ฅํ•œ ํ™•์žฅ์„ฑ

PostgreSQL์€ ํ™•์žฅ ๊ธฐ๋Šฅ(extension)์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ์˜ˆ:

  • PostGIS: ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ(์ง€๋„, ์ขŒํ‘œ) ์ฒ˜๋ฆฌ
  • ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜, ํƒ€์ž… ์ถ”๊ฐ€ ๊ฐ€๋Šฅ

4๏ธโƒฃ ํŠธ๋žœ์žญ์…˜๊ณผ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ

PostgreSQL์€ ACID ํŠธ๋žœ์žญ์…˜์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ•œ๋‹ค.

  • ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๋ณด์žฅ
  • ์žฅ์•  ์ƒํ™ฉ์—์„œ๋„ ์•ˆ์ •์ ์ธ ๋ณต๊ตฌ ๊ฐ€๋Šฅ

5๏ธโƒฃ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ง€์›

๊ธฐ๋ณธ์ ์ธ ํƒ€์ž… ์™ธ์—๋„ ๋‹ค์–‘ํ•œ ํƒ€์ž…์„ ์ง€์›ํ•œ๋‹ค.

  • JSON / JSONB
  • ๋ฐฐ์—ด(Array)
  • UUID
  • ์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž…

๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์ข‹๋‹ค.


๐Ÿ†š PostgreSQL vs MySQL (๊ฐ„๋‹จ ๋น„๊ต)

ํ•ญ๋ชฉPostgreSQLMySQL
๋ผ์ด์„ ์Šค์˜คํ”ˆ์†Œ์Šค์˜คํ”ˆ์†Œ์Šค
SQL ํ‘œ์ค€๋งค์šฐ ์ถฉ์‹ค๋น„๊ต์  ๋‹จ์ˆœ
ํ™•์žฅ์„ฑ๋งค์šฐ ๊ฐ•๋ ฅ์ œํ•œ์ 
๋ณต์žกํ•œ ์ฟผ๋ฆฌ๊ฐ•์ ์ƒ๋Œ€์ ์œผ๋กœ ์•ฝํ•จ

๐Ÿ‘‰ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ, ํ™•์žฅ์„ฑ, ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด ์ค‘์š”ํ•˜๋ฉด PostgreSQL์ด ๋งŽ์ด ์„ ํƒ๋œ๋‹ค.


๐Ÿง  PostgreSQL์„ ์–ธ์ œ ์“ฐ๋ฉด ์ข‹์„๊นŒ?

  • ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด ์ค‘์š”ํ•œ ์„œ๋น„์Šค
  • ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋‚˜ ํ†ต๊ณ„ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ
  • JSON, ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
  • ์žฅ๊ธฐ์ ์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ

โš ๏ธ ์ฒ˜์Œ ์‚ฌ์šฉํ•  ๋•Œ ํ—ท๊ฐˆ๋ ธ๋˜ ์ 

  • schema ๊ฐœ๋…์ด ์ต์ˆ™ํ•˜์ง€ ์•Š์•˜๋‹ค
  • ๊ธฐ๋ณธ DB์ธ postgres์™€ ์‹ค์ œ ์‚ฌ์šฉํ•˜๋Š” DB์˜ ์ฐจ์ด๋ฅผ ๋ชฐ๋ž๋‹ค
  • ๊ถŒํ•œ ์„ค์ •์ด MySQL๋ณด๋‹ค ์กฐ๊ธˆ ๊นŒ๋‹ค๋กญ๊ฒŒ ๋А๊ปด์กŒ๋‹ค

๐Ÿ‘‰ ํ•˜์ง€๋งŒ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋‚˜๋‹ˆ ์˜คํžˆ๋ ค ๋ช…ํ™•ํ•˜๊ฒŒ ๋А๊ปด์กŒ๋‹ค.


โœ… ํ•œ ์ค„ ์š”์•ฝ

PostgreSQL์€ ์•ˆ์ •์„ฑ, ํ™•์žฅ์„ฑ, ํ‘œ์ค€ SQL ์ง€์›์ด ๊ฐ•๋ ฅํ•œ ์˜คํ”ˆ์†Œ์Šค ๊ฐ์ฒด-๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค.

profile
๋งค์ผ ์„ฑ์žฅํ•˜๋Š” ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€