ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ PostgreSQL๋ก ์์ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ: ์ด๋ก ๊ณผ ์ค์ต - PostgreSQL์ด๋? (ํน์ง ๋ฐ ์ํคํ ์ฒ)
octo54 2025. 3. 6. 15:34๐ 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 ์ค์น ๋ฐ ํ๊ฒฝ ์ค์
'study > postgresql' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
- Total
- Today
- Yesterday
- Webpack
- ๋ฐฑ์๋
- ํ๋ก ํธ์๋
- LangChain
- ๊ด๋ฆฌ์
- fastapi
- Python
- Page
- PostgreSQL
- AI์ฑ๋ด
- ์ฑ๋ด๊ฐ๋ฐ
- babel
- nextJS
- rag
- ํ์ด์ง
- nodejs
- ์น๊ฐ๋ฐ
- ๊ฐ๋ฐ๋ธ๋ก๊ทธ
- ๋ฆฌ์กํธ
- llm
- Ktor
- ๋ฐฑ์๋๊ฐ๋ฐ
- Docker
- Project
- REACT
- ๋ก์ปฌLLM
- github
- til
- kotlin
- Next.js
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |