[DB] PostgreSQL ๊ณผ MariaDB ์ ํน์ง, ์ฐจ์ด์
๐ PostgreSQL ๊ณผ MariaDB ์ ํน์ง
โฝ PostgreSQL : ๊ฐ๋ ฅํ ์คํ ์์ค ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (RDBMS)
- ํ์ฅ์ฑ: PostgreSQL์ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ์ฌ์ฉ์ ์๊ตฌ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๋ฐ์ด๋ ํ์ฅ์ฑ์ ์ ๊ณตํ๋ค. ๋ณต์ , ํํฐ์ ๋, ํด๋ฌ์คํฐ๋ง ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ฑ๋ฅ๊ณผ ๊ฐ์ฉ์ฑ์ ๋์ผ ์ ์๋ค.
- ํธ๋์ญ์ ์ง์: PostgreSQL์ ACID(์์์ฑ, ์ผ๊ด์ฑ, ๊ณ ๋ฆฝ์ฑ, ์ง์์ฑ) ํน์ฑ์ ์ค์ํ์ฌ ๋ฐ์ดํฐ ์ผ๊ด์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋ค. ํธ๋์ญ์ ์ ์์์ฑ์ ์ ์งํ๊ณ , ๋ณํ์ฑ ์ ์ด๋ฅผ ํตํด ๋์์ฑ ๋ฌธ์ ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, ๋ฐ์ดํฐ ์์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด ํธ๋์ญ์ ๋ก๊ทธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- ์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด: PostgreSQL์ ์ธ๋ ํค(Foreign Key)๋ฅผ ์ง์ํ์ฌ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์๋ค. ์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด์ ์ค์ ํ์ฌ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๊ฐํํ๊ณ , ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ์ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ ์ ์๋ค.
- ๋ค์ํ ๋ฐ์ดํฐ ์ ํ: PostgreSQL์ ๋ค์ํ ๋ฐ์ดํฐ ์ ํ์ ์ง์ํฉ๋๋ค. ์ ์ํ, ๋ฌธ์์ด, ๋ ์ง/์๊ฐ, ๋ถ๋ ์์์ , ์ด์ง ๋ฐ์ดํฐ, ๋ฐฐ์ด, JSON, XML ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ ์ ํ์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ, ์ฌ์ฉ์ ์ ์ ๋ฐ์ดํฐ ์ ํ์ ์ ์ํ๊ณ ํ์ฉํ ์๋ ์๋ค.
- ๊ณ ๊ธ ์ฟผ๋ฆฌ ๊ธฐ๋ฅ: PostgreSQL์ SQL ํ์ค์ ์ค์ํ๋ฉด์๋ ๊ฐ๋ ฅํ ์ฟผ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์๋ธ์ฟผ๋ฆฌ, ์กฐ์ธ, ์ง๊ณ ํจ์, ์๋์ฐ ํจ์, ๊ณต๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ๋ณต์กํ ๋ฐ์ดํฐ ์กฐ์์ ์ํํ ์ ์๋ค.
- ํ๋ถํ ํ์ฅ์ฑ: PostgreSQL์ ๋ค์ํ ํ์ฅ ๋ชจ๋์ ์ง์ํ์ฌ ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์๋ค. ์ฌ์ฉ์ ์ ์ ํจ์, ์ธ๋ถ ์ธ์ด ๋ฐ์ธ๋ฉ, ํ ์คํธ ๊ฒ์, GIS(Geographic Information System) ๋ฑ์ ํ์ฅ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ํ๋ก์ ํธ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์ฅํ ์ ์๋ค.
- ์์ ์ฑ๊ณผ ์ ๋ขฐ์ฑ: PostgreSQL์ ์ฅ์ ๋ณต๊ตฌ ๊ธฐ๋ฅ๊ณผ ํธ๋์ญ์ ๋ก๊ทธ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๋ฐ์ดํฐ์ ์์ ์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋ค. ๋น์ ์์ ์ธ ์ข ๋ฃ๋ ์์คํ ์ค๋ฅ์๋ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ , ๋ฐ์ดํฐ ์์ค์ ์ต์ํํ ์ ์๋ค.
- ๋ค์ํ ํด๋ผ์ด์ธํธ ๋๊ตฌ: PostgreSQL์ ๋ค์ํ ํด๋ผ์ด์ธํธ ๋๊ตฌ์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค. ๋ช ๋ น์ค ๋๊ตฌ, ๊ทธ๋ํฝ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(GUI), ์น ๊ธฐ๋ฐ ๋๊ตฌ ๋ฑ์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ๋ฐ ๊ฐ๋ฐ ์์ ์ ํธ๋ฆฌํ๊ฒ ์ํํ ์ ์๋ค.
โฝ MariaDB
- ํธํ์ฑ: MariaDB๋ MySQL๊ณผ์ ํธํ์ฑ์ ์ ์งํ๋ฉด์ ๊ธฐ๋ฅ์ ๊ฐ์ ํ์๋ค. MySQL๊ณผ ๋น์ทํ SQL ๋ฌธ๋ฒ, ๋ฐ์ดํฐ ์ ํ ๋ฐ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ ๊ธฐ์กด MySQL ์ฌ์ฉ์๋ค์ด ์ฝ๊ฒ ์ด์ ํ ์ ์๋๋ก ๋๋๋ค.
- ์ฑ๋ฅ ๊ฐ์ : MariaDB๋ ๋ค์ํ ์ฑ๋ฅ ๊ฐ์ ์ ํตํด ๋ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํ๋ค. ์ฟผ๋ฆฌ ์คํ ๊ณํ ๊ฐ์ , ์ธ๋ฑ์ค ์๊ณ ๋ฆฌ์ฆ ๊ฐ์ , ์บ์ ๋ฐ ๋ฒํผ ๊ด๋ฆฌ ๊ฐ์ ๋ฑ์ ํตํด ์ฒ๋ฆฌ๋๊ณผ ์๋ต ์๊ฐ์ ํฅ์์ํฌ ์ ์๋ค.
- ๊ณ ๊ธ ์คํ ๋ฆฌ์ง ์์ง: MariaDB๋ ๋ค์ํ ์คํ ๋ฆฌ์ง ์์ง์ ์ ๊ณตํ์ฌ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ ์ฐํ๊ฒ ํ ์ ์๋ค. InnoDB, MyRocks, Aria, TokuDB ๋ฑ ๋ค์ํ ์์ง์ ์ ํํ ์ ์์ผ๋ฉฐ, ๊ฐ ์์ง์ ํน์ ํ ์ฉ๋์ ๋ง๊ฒ ์ต์ ํ๋์ด ์๋ค.
- ๋ณด์ ๊ธฐ๋ฅ: MariaDB๋ ๋ฐ์ดํฐ์ ๋ณด์์ ๊ฐํํ๊ธฐ ์ํ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํธํ, SSL/TLS ์ง์, ์ ๊ทผ ์ ์ด ๋ฐ ์ฌ์ฉ์ ๊ถํ ๊ด๋ฆฌ, ๋ณด์ ํจ์น ๋ฐ ์ ๋ฐ์ดํธ ์ง์ ๋ฑ์ ํตํด ๋ฐ์ดํฐ์ ๊ธฐ๋ฐ์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ณดํธํ๋ค.
- ํ์ฅ์ฑ: MariaDB๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ์ฌ์ฉ์ ์๊ตฌ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ํ์ฅ์ฑ์ ์ ๊ณตํ๋ค. ๋ง์คํฐ-์ฌ๋ ์ด๋ธ ๋ณต์ , ์ค๋ฉ, ๋ถ์ฐ ํธ๋์ญ์ ๋ฑ ๋ค์ํ ํ์ฅ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ฑ๋ฅ๊ณผ ๊ฐ์ฉ์ฑ์ ํฅ์์ํฌ ์ ์๋ค.
- ๊ฐ์ ๋ ๊ธฐ๋ฅ: MariaDB๋ ์ฌ๋ฌ ๊ฐ์ง ๊ธฐ๋ฅ ๊ฐ์ ์ ํตํด ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์์ผฐ๋ค. JSON ๋ฐ์ดํฐ ์ ํ์ ์ง์, CTE(Common Table Expressions) ์ฌ์ฉ, ์๋์ฐ ํจ์ ๋ฑ์ ๊ณ ๊ธ ์ฟผ๋ฆฌ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์๋ค.
- ํ๋ฐํ ์ปค๋ฎค๋ํฐ ๋ฐ ์ง์: MariaDB๋ ํ๋ฐํ ๊ฐ๋ฐ ๋ฐ ์ปค๋ฎค๋ํฐ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ฌ์ฉ์๋ค ์ฌ์ด์ ์ง์ ๊ณต์ ์ ํ์ ์ ์ด์งํ๋ฉฐ, ๋ฌธ์ํ, ๋ฒ๊ทธ ์์ , ๋ณด์ ํจ์น ๋ฑ์ ์ง์์ ์ธ ๊ฐ๋ฐ๊ณผ ์ ๋ฐ์ดํธ๊ฐ ์ด๋ฃจ์ด์ง๋ค.
- ์คํ ์์ค ๋ผ์ด์ ์ค: MariaDB๋ GNU ์ผ๋ฐ ๊ณต์ค ์ฌ์ฉ ํ๊ฐ์(GPL) ๋ฒ์ 2 ๋๋ ๊ทธ ์ด์์ ๋ผ์ด์ ์ค๋ก ๋ฐฐํฌ๋์ด, ๋ฌด๋ฃ๋ก ์ฌ์ฉํ๊ณ ์์ ํ๊ฑฐ๋ ์ฌ๋ฐฐํฌํ ์ ์๋ค.
PostgreSQL๊ณผ MariaDB๋ ๋ ๋ค ์ธ๊ธฐ ์๋ ์คํ ์์ค ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (RDBMS)์ด๋ค. ์ด ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๊ฐ๊ฐ์ ์ฅ์ ๊ณผ ๋ชฉ์ ์ ๋ฐ๋ผ ์ฌ์ฉ๋๋ฉฐ, ๋ช ๊ฐ์ง ์ฃผ์ํ ์ฐจ์ด์ ์ด ์๋ค.
๐ PostgreSQL ๊ณผ MariaDB ์ ์ฐจ์ด
1) ๋ผ์ด์ ์ค
- PostgreSQL : PostgreSQL์ BSD ๋ผ์ด์ ์ค์ ๋น์ทํ ์คํ ์์ค ๋ผ์ด์ ์ค์ธ PostgreSQL ๋ผ์ด์ ์ค๋ก ๋ฐฐํฌ๋๋ค. ๋ฐ๋ผ์ PostgreSQL์ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์์ ํ๊ฑฐ๋ ์ฌ๋ฐฐํฌํ ์ ์๋ค.
- MariaDB : MariaDB๋ GNU ์ผ๋ฐ ๊ณต์ค ์ฌ์ฉ ํ๊ฐ์(GPL) ๋ฒ์ 2 ๋๋ ๊ทธ ์ด์์ ๋ผ์ด์ ์ค๋ก ๋ฐฐํฌ๋๋ค. ์ด๋ MariaDB๊ฐ ์คํ ์์ค์ด๋ฉฐ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์์ ์ ์ธ ํ๊ฒฝ์์๋ ์ฌ์ฉํ ์ ์์์ ์๋ฏธํ๋ค.
2) ๊ฐ๋ฐ ๋ฐ ์ปค๋ฎค๋ํฐ
- PostgreSQL : PostgreSQL์ ๋ฏธ๊ตญ ์ปดํจํฐ์์ฉํํ(USENIX)์ ํ์ค ์ฌ์์ ๋ง๊ฒ ๊ฐ๋ฐ๋์๋ค. ์ด๋ ๋งค์ฐ ๊ฐ๋ ฅํ๊ณ ์์ ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ ๊ณตํ๋ฉฐ, ํ์ฅ ๊ฐ๋ฅํ ๊ธฐ๋ฅ ์ธํธ๋ฅผ ํฌํจํ๊ณ ์๋ค. PostgreSQL์ ํ๋ฐํ ๊ฐ๋ฐ ๋ฐ ์ปค๋ฎค๋ํฐ ์ง์์ ๋ฐ๊ณ ์์ผ๋ฉฐ, ๋์ ํ์ง์ ๋ฌธ์์ ๋ง์ ํ์ฅ ๋ชจ๋์ ์ ๊ณตํ๋ค.
- MariaDB : MariaDB๋ MySQL์ ํฌํฌ(fork)๋ก ์์๋์๋ค. MySQL์ ์ฐฝ์์๋ค ์ค ์ผ๋ถ๊ฐ MySQL์ ๋ผ์ด์ ์ค ๋ณ๊ฒฝ์ ๋ฐ๋ฐํ์ฌ MariaDB๋ฅผ ๊ฐ๋ฐํ์๋ค. MariaDB๋ MySQL๊ณผ ํธํ๋๋๋ก ์ค๊ณ๋์ด ์์ผ๋ฉฐ, MySQL๊ณผ ๋น์ทํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. MariaDB ์ญ์ ํ๋ฐํ ์ปค๋ฎค๋ํฐ์ ๊ฐ๋ฐ์ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
3) ๊ธฐ๋ฅ
- PostgreSQL : PostgreSQL์ ๊ธฐ๋ฅ์ ์ผ๋ก ๋งค์ฐ ํ๋ถํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ด๋ค. ํธ๋์ญ์ , ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด, ๋ณต์ , ํํฐ์ ๋, ์ธ๋ถ ํ๋ฌ๊ทธ์ธ ๋ฑ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ง์ํ๋ค. ๋ํ PostgreSQL์ ๋ค์ํ ๋ฐ์ดํฐ ์ ํ์ ์ฒ๋ฆฌํ ์ ์๋ ๊ฐ๋ ฅํ ์ฟผ๋ฆฌ ์ธ์ด์ ๋ณต์กํ ์ง๊ณ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- MariaDB : MariaDB๋ MySQL๊ณผ์ ํธํ์ฑ์ ์ ์งํ๋ฉด์ ๋ช ๊ฐ์ง ๊ธฐ๋ฅ ๊ฐ์ ์ ์ ๊ณตํ๋ค. JSON ๋ฐ์ดํฐ ์ ํ, ๊ณต๊ฐ ๋ฐ์ดํฐ ์ ํ, CTE(Common Table Expressions) ๋ฑ์ ๊ธฐ๋ฅ์ ์ง์ํ๋ฉฐ, ๋ ๋์ ์ฑ๋ฅ ๋ฐ ํ์ฅ์ฑ์ ์ํ ์ต์ ํ๋ ์ํ๋์๋ค.
4) ์ฑ๋ฅ
- PostgreSQL๊ณผ MariaDB๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํฌ๊ธฐ, ์์ ๋ถํ, ์ค์ ๋ฐ ์ธ๋ฑ์ฑ ๋ฑ๊ณผ ๊ฐ์ ๋ค์ํ ์์ธ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ฑ๋ฅ ํน์ฑ์ ๊ฐ์ง๋ค. ์ผ๋ฐ์ ์ผ๋ก PostgreSQL์ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณต์กํ ์ฟผ๋ฆฌ์ ๋ํด ๋์ ์ฑ๋ฅ์ ๋ณด์ด๋ฉฐ, MariaDB๋ ๋จ์ํ ์ฝ๊ธฐ/์ฐ๊ธฐ ์์ ์ ๋ํด ์ข์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ฑ๋ฅ ์ฐจ์ด๋ ๊ตฌ์ฒด์ ์ธ ์๋๋ฆฌ์ค์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ผ๋ฏ๋ก ํ ์คํธ์ ๋ฒค์น๋งํน์ด ํ์ํ๋ค.