ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฐ˜์‘ํ˜•

๐Ÿ“Œ PostgreSQL๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ: ์ด๋ก ๊ณผ ์‹ค์Šต

1.1 PostgreSQL์ด๋ž€? (ํŠน์ง• ๋ฐ ์•„ํ‚คํ…์ฒ˜)

PostgreSQL์€ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ์„ ๊ฐ–์ถ˜ ์˜คํ”ˆ์†Œ์Šค ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(RDBMS)์ž…๋‹ˆ๋‹ค.
๋งŽ์€ ๊ธฐ์—…๊ณผ ๊ฐœ๋ฐœ์ž๋“ค์ด PostgreSQL์„ ์„ ํƒํ•˜๋Š” ์ด์œ ๋Š” ํ‘œ์ค€ SQL ์ค€์ˆ˜, ๋›ฐ์–ด๋‚œ ํ™•์žฅ์„ฑ, ACID ํŠธ๋žœ์žญ์…˜ ์ง€์›, JSON ๋ฐ NoSQL ๊ธฐ๋Šฅ ์ œ๊ณต, ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ์„ฑ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” PostgreSQL์˜ ๊ฐœ๋…๊ณผ ํŠน์ง•, ๊ธฐ๋ณธ์ ์ธ ์•„ํ‚คํ…์ฒ˜๋ฅผ PostgreSQL ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


1.1.1 PostgreSQL ๊ฐœ์š”

โœ… PostgreSQL์ด๋ž€?

PostgreSQL(ํฌ์ŠคํŠธ๊ทธ๋ ˆSQL)์€ ๊ฐ์ฒด-๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(ORDBMS, Object-Relational Database Management System) ์œผ๋กœ,
SQL ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•˜๋ฉด์„œ๋„ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ณ ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค.

1986๋…„ ์บ˜๋ฆฌํฌ๋‹ˆ์•„ ๋ฒ„ํด๋ฆฌ ๋Œ€ํ•™๊ต์—์„œ ์‹œ์ž‘๋œ POSTGRES ํ”„๋กœ์ ํŠธ์—์„œ ์œ ๋ž˜ํ–ˆ์œผ๋ฉฐ,
1996๋…„์— SQL์„ ์ง€์›ํ•˜๋ฉด์„œ ํ˜„์žฌ์˜ PostgreSQL์ด๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ–๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL์€ ์˜คํ”ˆ์†Œ์Šค์ด์ง€๋งŒ ์ƒ์šฉ DBMS(Oracle, MS SQL Server ๋“ฑ)์™€ ๋น„๊ตํ•ด๋„ ์†์ƒ‰์ด ์—†๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


1.1.2 PostgreSQL์˜ ์ฃผ์š” ํŠน์ง•

๋ฐ˜์‘ํ˜•

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

๐Ÿ”น 1๏ธโƒฃ ACID ํŠธ๋žœ์žญ์…˜ ์™„๋ฒฝ ์ง€์›

PostgreSQL์€ Atomicity(์›์ž์„ฑ), Consistency(์ผ๊ด€์„ฑ), Isolation(๊ณ ๋ฆฝ์„ฑ), Durability(์ง€์†์„ฑ) ์„ ๊ฐ–์ถ˜
์™„์ „ํ•œ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”น 2๏ธโƒฃ SQL ํ‘œ์ค€ ์ค€์ˆ˜

PostgreSQL์€ SQL:2008 ํ‘œ์ค€์„ ํฌํ•จํ•˜์—ฌ, ์ตœ์‹  SQL ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์ธ CRUD ์—ฐ์‚ฐ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์œˆ๋„์šฐ ํ•จ์ˆ˜(Window Functions), CTE(Common Table Expressions), ์„œ๋ธŒ์ฟผ๋ฆฌ, JSON ์ฒ˜๋ฆฌ ๋“ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”น 3๏ธโƒฃ ๊ฐ์ฒด-๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (ORDBMS) ๊ธฐ๋Šฅ

PostgreSQL์€ ์ผ๋ฐ˜์ ์ธ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDBMS)์˜ ํŠน์„ฑ์„ ๋„˜์–ด์„œ,
๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋…์ด ์ ์šฉ๋œ ๊ฐ์ฒด-๊ด€๊ณ„ํ˜• DBMS(ORDBMS) ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
โœ… ์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž…(Custom Data Types)
โœ… ๋ฐฐ์—ด(Array), JSONB, HStore(Key-Value Store) ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ง€์›
โœ… ํ…Œ์ด๋ธ” ์ƒ์†(Table Inheritance)

๐Ÿ”น 4๏ธโƒฃ JSON ๋ฐ NoSQL ๊ธฐ๋Šฅ ์ง€์›

PostgreSQL์€ JSONB(Binary JSON) ํƒ€์ž…์„ ์ œ๊ณตํ•˜์—ฌ NoSQL ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค.
โœ… JSON ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , SQL๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
โœ… Full-Text Search(์ „๋ฌธ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ) ์ œ๊ณต
โœ… Key-Value Store ๊ธฐ๋Šฅ (HStore)

๐Ÿ”น 5๏ธโƒฃ ๋‹ค์–‘ํ•œ ์ธ๋ฑ์Šค ๋ฐ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ์ œ๊ณต

PostgreSQL์€ B-TREE, HASH, GIN, GiST, BRIN ๋“ฑ ๋‹ค์–‘ํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ง€์›ํ•˜์—ฌ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ **Full-Text Search(์ „๋ฌธ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ)**์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜์—ฌ, ๋น ๋ฅธ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”น 6๏ธโƒฃ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์˜คํ”ˆ์†Œ์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

PostgreSQL์€ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ–์ถ˜ ์˜คํ”ˆ์†Œ์Šค DBMS๋กœ,
์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํ™•์žฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โœ… ํ™•์žฅ ๋ชจ๋“ˆ(Extensions) ์ถ”๊ฐ€ ๊ฐ€๋Šฅ (pg_stat_statements, PostGIS, TimescaleDB ๋“ฑ)
โœ… ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ €์žฅ ํ”„๋กœ์‹œ์ € ๋ฐ ํ•จ์ˆ˜(Custom Functions) ์ž‘์„ฑ ๊ฐ€๋Šฅ
โœ… PL/pgSQL, Python, JavaScript, Perl ๋“ฑ ๋‹ค์–‘ํ•œ ์–ธ์–ด ์ง€์›

๐Ÿ”น 7๏ธโƒฃ ๋›ฐ์–ด๋‚œ ๋ณด์•ˆ ๊ธฐ๋Šฅ ์ œ๊ณต

PostgreSQL์€ ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ๋ฐ ์ ‘๊ทผ ์ œ์–ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
โœ… ๋‹ค์–‘ํ•œ ์ธ์ฆ ๋ฐฉ์‹ ์ œ๊ณต (MD5, SCRAM-SHA-256, Kerberos, LDAP, PAM ๋“ฑ)
โœ… Row-Level Security(RLS) ์ง€์› (์‚ฌ์šฉ์ž๋ณ„ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์ œ์–ด ๊ฐ€๋Šฅ)
โœ… ์•”ํ˜ธํ™” ๋ฐ ๋ณด์•ˆ ์ •์ฑ… ๊ฐ•ํ™” ๊ฐ€๋Šฅ

๐Ÿ”น 8๏ธโƒฃ ๋ณต์ œ(Replication) ๋ฐ ๊ณ ๊ฐ€์šฉ์„ฑ(High Availability) ์ง€์›

PostgreSQL์€ ๊ณ ๊ฐ€์šฉ์„ฑ์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ณต์ œ ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ๋ง ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ ์ œ๊ณตํ•˜๋ฉฐ,
๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค์—์„œ๋„ ์•ˆ์ •์ ์ธ ์šด์˜์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
โœ… Streaming Replication (์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ณต์ œ)
โœ… Logical Replication (ํŠน์ • ํ…Œ์ด๋ธ”๋งŒ ๋ณต์ œ ๊ฐ€๋Šฅ)
โœ… Failover Clustering (๊ณ ๊ฐ€์šฉ์„ฑ ๋ณด์žฅ)


1.1.3 PostgreSQL ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์š”

PostgreSQL์˜ ๋‚ด๋ถ€ ์•„ํ‚คํ…์ฒ˜๋Š” ํฌ๊ฒŒ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์„ธ์Šค(Client Process) ์™€ ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค(Server Process) ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”น PostgreSQL์˜ ์ฃผ์š” ํ”„๋กœ์„ธ์Šค

1๏ธโƒฃ Postmaster (๋ฉ”์ธ ํ”„๋กœ์„ธ์Šค)

  • ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌํ•˜๊ณ , ์ƒˆ๋กœ์šด ๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ Backend Process (ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์„ธ์Šค)

  • ๊ฐ๊ฐ์˜ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐœ๋ณ„์ ์ธ ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค.

3๏ธโƒฃ Background Writer

  • ๋””์Šคํฌ I/O๋ฅผ ์ตœ์ ํ™”ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

4๏ธโƒฃ WAL Writer (Write-Ahead Logging)

  • ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋จผ์ € ๋กœ๊ทธ(WAL)์— ๊ธฐ๋กํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

5๏ธโƒฃ Autovacuum Daemon

  • ํ…Œ์ด๋ธ”๊ณผ ์ธ๋ฑ์Šค๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด VACUUM์„ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

6๏ธโƒฃ Checkpointer

  • ์ผ์ • ๊ฐ„๊ฒฉ๋งˆ๋‹ค ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”น PostgreSQL ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ตฌ์กฐ

PostgreSQL์€ ๋ฐ์ดํ„ฐ๋ฅผ ์Šคํ† ๋ฆฌ์ง€(Storage) ๊ณ„์ธต์—์„œ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

โœ… TOAST (The Oversized-Attribute Storage Technique)

  • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๊ธฐ์ˆ 
    โœ… WAL (Write-Ahead Logging)
  • ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๊ทธ์— ๋จผ์ € ๊ธฐ๋กํ•œ ํ›„, ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉ
    โœ… MVCC (Multi-Version Concurrency Control)
  • ํŠธ๋žœ์žญ์…˜์ด ์ถฉ๋Œ ์—†์ด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›

1.1.4 ๊ฒฐ๋ก : PostgreSQL์ด ๊ฐ•๋ ฅํ•œ ์ด์œ 

โœ… ์™„์ „ํ•œ ์˜คํ”ˆ์†Œ์Šค DBMS (๋ฌด๋ฃŒ & ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ๊ธฐ๋Šฅ)
โœ… SQL ํ‘œ์ค€ ์ค€์ˆ˜ + NoSQL(JSONB, HStore) ์ง€์›
โœ… ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์•„ํ‚คํ…์ฒ˜ + ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ๊ธฐ๋Šฅ
โœ… MVCC ๊ธฐ๋ฐ˜์˜ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ๊ณผ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ
โœ… ๊ณ ๊ฐ€์šฉ์„ฑ(HA), ๋ณต์ œ(Replication), ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ ์ง€์›

PostgreSQL์€ ๋‹จ์ˆœํ•œ ์˜คํ”ˆ์†Œ์Šค DBMS๊ฐ€ ์•„๋‹ˆ๋ผ, ๊ณ ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์†”๋ฃจ์…˜์œผ๋กœ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ๊ธ€์—์„œ๋Š” PostgreSQL์˜ ์„ค์น˜ ๋ฐ ๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ •์„ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค! ๐Ÿš€


๐Ÿ”Ž ๋‹ค์Œ ๊ธ€ ์˜ˆ๊ณ : PostgreSQL ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ ์„ค์ •

๋‹ค์Œ ๊ธ€์—์„œ๋Š” PostgreSQL์„ Windows, macOS, Linux ํ™˜๊ฒฝ์—์„œ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ธฐ๋ณธ ์„ค์ •์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

๐Ÿ“Œ ๋‹ค์Œ ํŽธ: 1.2 PostgreSQL ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ ์„ค์ •

 

๋ฐ˜์‘ํ˜•
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2025/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
๊ธ€ ๋ณด๊ด€ํ•จ
๋ฐ˜์‘ํ˜•