[DB] PostgreSQL

์ง€๊ตฌ๐ŸŒยท2021๋…„ 11์›” 17์ผ

DB

๋ชฉ๋ก ๋ณด๊ธฐ
1/1
post-thumbnail

PostgreSQL์ด๋ž€?

1. ์ •์˜

๐Ÿ’ก PostgreSQL์€ Enterprise๊ธ‰ DBMS์˜ ๊ธฐ๋Šฅ๊ณผ ์ฐจ์„ธ๋Œ€ DBMS์—์„œ๋‚˜ ๋ณผ ์ˆ˜ ์žˆ์„ ๋ฒ•ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ๊ฐ์ฒด-๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ(ORDBMS)์ด๋‹ค.

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

2. ์—ญ์‚ฌ


PostgreSQL์€ 1977๋…„ ๋ฏธ๊ตญ ๋ฒ„ํด๋ฆฌ๋Œ€ํ•™์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณ„์˜ ๊ฑฐ์žฅ Michael Stonebraker ๊ฐ€ ์‹œ์ž‘ํ•œ Ingres๋กœ ์‹œ์ž‘๋˜์—ˆ๋‹ค.

์ด ํ›„, Ingres๋ฅผ ์ž‡๋Š” Postgres(Post-Ingres) ๋ผ๋Š” ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹œ์ž‘๋˜๋ฉฐ ๊ณ„์Šน๋˜์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ Postgre ์‚ฌ์šฉ์ž์™€ ํ•™์ƒ๋“ค์ด ํ”„๋กœ์ ํŠธ ์ข…๋ฃŒ ์„ ์–ธ๊ณผ ๋ณ„๊ฐœ๋กœ Postgres์˜ ๊ฐœ๋ฐœ์„ ๊ณ„์† ์ง„ํ–‰ํ–ˆ๊ณ , SQL ์ง€์›๊ณผ ๊ตฌ์กฐ ๊ฐœ์„ ์„ ํ†ตํ•ด Postgres๋ณด๋‹ค 40% ์ •๋„ ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ฃผ๋Š” Postgres95๋ฅผ ๋งŒ๋“ค์–ด ๋ƒˆ๋‹ค.

Postgres๋Š” SQL์ด ์•„๋‹ˆ๋ผ QUEL์ด๋ผ๋Š” ์–ธ์–ด๋ฅผ ์ง€์›ํ–ˆ๋Š”๋ฐ 1996๋…„๋„ ๋ถ€ํ„ฐ SQL์„ ์ง€์›ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ๋ช…์นญ์„ PostgreSQL์œผ๋กœ ๋ฐ”๊ฟจ๋‹ค.

์ดํ›„์—๋„ PostgreSQL์€ ์˜คํ”ˆ ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์˜ํ•ด ์ตœ๊ทผ๊นŒ์ง€๋„ ํ™œ๋ฐœํžˆ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์œผ๋ฉฐ 2012๋…„ 10์›” ํ˜„์žฌ 9.2 ๋ฒ„์ „๊นŒ์ง€ ์ถœ์‹œ๋๋‹ค.

3. ๊ตฌ์กฐ


PostgreSQL์€ ํด๋ผ์ด์–ธํŠธ / ์„œ๋ฒ„ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค.

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

์„œ๋ฒ„๋Š” ๋‹ค์ค‘ ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ ์š”์ฒญ์ด ์˜ค๋ฉด ๊ฐ ์ปค๋„ฅ์…˜์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ forkํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํด๋ผ์ด์–ธํŠธ๋Š” ๊ธฐ์กด ์„œ๋ฒ„์™€์˜ ๊ฐ„์„ญ ์—†์ด ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค์™€ ํ†ต์‹ ํ•˜๊ฒŒ ๋œ๋‹ค.

4. ๊ธฐ๋Šฅ ๋ฐ ์ œํ•œ ์‚ฌํ•ญ

PostgreSQL์€ RDBMS์˜ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์ธ ํŠธ๋žœ์žญ์…˜๊ณผ ACID๋ฅผ ์ง€์›ํ•œ๋‹ค. ํ˜„์žฌ๋„ ๊ธฐ๋Šฅ์„ ๊ณ„์† ์ถ”๊ฐ€ํ•˜๊ณ  ์žˆ๋‹ค.

๊ธฐ๋Šฅ

  • Nested transactions (savepoints)
  • Point in time recovery
  • Online/hot backups, Parallel restore
  • Rules system (query rewrite system)
  • B-tree, R-tree, hash, GiST method indexes
  • Multi-Version Concurrency Control (MVCC)
  • Tablespaces
  • Procedural Language
  • Information Schema
  • I18N, L10N
  • Database & Column level collation
  • Array, XML, UUID type
  • Auto-increment (sequences),
  • Asynchronous replication
  • LIMIT/OFFSET
  • Full text search
  • SSL, IPv6
  • Key/Value storage
  • Table inheritance

์ œํ•œ ์‚ฌํ•ญ

ํ•ญ๋ชฉ์ œํ•œ ์‚ฌํ•ญ
์ตœ๋Œ€ DB ํฌ๊ธฐ(Database Size)๋ฌด์ œํ•œ
์ตœ๋Œ€ ํ…Œ์ด๋ธ” ํฌ๊ธฐ(Table Size)32TB
์ตœ๋Œ€ ๋ ˆ์ฝ”๋“œ ํฌ๊ธฐ(Row Size)1.6TB
์ตœ๋Œ€ ์ปฌ๋Ÿผ ํฌ๊ธฐ(Field Size)1 GB
ํ…Œ์ด๋ธ”๋‹น ์ตœ๋Œ€ ๋ ˆ์ฝ”๋“œ ๊ฐœ์ˆ˜(Rows per Table)๋ฌด์ œํ•œ
ํ…Œ์ด๋ธ”๋‹น ์ตœ๋Œ€ ์ปฌ๋Ÿผ ๊ฐœ์ˆ˜(Columns per Table)250~1600๊ฐœ
ํ…Œ์ด๋ธ”๋‹น ์ตœ๋Œ€ ์ธ๋ฑ์Šค ๊ฐœ์ˆ˜(Indexes per Table)๋ฌด์ œํ•œ

5. ํŠน์ง•

  1. ANSI C๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ๊ณ , Windows, Linux, MAC OS/X ๋“ฑ ๋‹ค์–‘ํ•œ ํ”Œ๋ ›ํผ์„ ์ง€์›ํ•œ๋‹ค.
  2. ํŠธ๋žœ์žญ์…˜ ๋ฐ ACID ๊ธฐ๋Šฅ์ด ์›”๋“ฑํ•˜๋‹ค.
  3. ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Table Partitioning ๊ณผ Tables Space ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  4. Streaming Replication ์„ ๊ธฐ๋ณธ์œผ๋กœ ๋™๊ธฐ์‹ / ๋น„๋™๊ธฐ์‹ Hot Standby ์„œ๋ฒ„ ๊ตฌ์ถ•์ด ๊ฐ€๋Šฅํ•˜๊ณ  WAL(Write-Ahead Logging) Log ์•„์นด์ด๋น™ ๋ฐ Hot Back up์„ ํ†ตํ•ด Point in time recovery ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  5. ์›น ๋˜๋Š” C/S ๊ธฐ๋ฐ˜์˜ GUI ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ด€๋ฆฌ๋Š” ๋ฌผ๋ก  ํŠœ๋‹๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๊ณ , ์‚ฌ์šฉ์ž ์ •์˜ Procedural๋กœ ๋‹ค์–‘ํ•œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ฅผ ์ง€์›ํ•œ๋‹ค.

์ฐธ์กฐ1
์ฐธ์กฐ2

profile
์ผ์ทจ์›”์žฅ ํ•˜๋ฉฐ ์„ฑ์žฅ! ์ค‘! ๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ๊ธฐ๋กํ•˜์ž๏ผˆ๏ผพโˆ€๏ผพโ—๏ผ‰๏พ‰๏ฝผ

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