DuckDB๋ ์ต๊ทผ ๋ฐ์ดํฐ ๋ถ์ ๋ฐ ์์ง๋์ด๋ง ์ ๊ณ์์ ๋์ ๊ด์ฌ์ ๋ฐ๊ณ ์๋ ์ธํ๋ก์ธ์ค(In-process) ๋ถ์์ฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก, ๊ธฐ์กด์ SQLite๊ฐ ํธ๋์ญ์ ์ฒ๋ฆฌ(OLTP)์ ํนํ๋์ด ์๋ค๋ฉด, DuckDB๋ **๋ฐ์ดํฐ ๋ถ์(OLAP)**์ ์ต์ ํ๋ '๋ถ์ํ SQLiteโ์ ๋๋ค.
1. ์ธํ๋ก์ธ์ค(In-process) ๊ตฌ์กฐ
๋๋ถ๋ถ์ DB(PostgreSQL, MySQL ๋ฑ)๋ ๋ณ๋์ ์๋ฒ ํ๋ก์ธ์ค๋ฅผ ๋์ฐ๊ณ ๋คํธ์ํฌ๋ฅผ ํตํด ํต์ ํด์ผ ํ์ง๋ง DuckDB๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ด๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํ๋ก ํฌํจํด์ ์๋์ด ๋๋ ๊ฒ์ ๋๋ค.
- ์ฐจ์ด์ : ์๋ฒ ์ค์น๋ ๋ณต์กํ ์ค์ ์ด ํ์ ์์ผ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ DB ๊ฐ์ ๋ฐ์ดํฐ ์ ์ก ์ค๋ฒํค๋๊ฐ ๊ฑฐ์ ์์ผ๋ฉฐ, Python์ด๋ R ํ๊ฒฝ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถํ๋ฏ ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
2. ์ปฌ๋ผ ์งํฅ ์ ์ฅ ๋ฐ ๋ฒกํฐํ ์คํ
์ผ๋ฐ์ ์ธ ์ด์์ฉ DB๋ ํ(Row) ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์ง๋ง, DuckDB๋ ์ด(Column) ๋จ์๋ก ์ฝ์ต๋๋ค.
- ์ฐจ์ด์ : ํน์ ์ด์ ํฉ๊ณ๋ ํ๊ท ์ ๊ตฌํ๋ ๋ถ์ ์ฟผ๋ฆฌ์์ ์๋นํ ๋น ๋ฆ ๋๋ค. ๋ํ ๋ฒกํฐํ ์ฟผ๋ฆฌ ์คํ(Vectorized Query Execution) ์์ง์ ์ฌ์ฉํ์ฌ ํ๋์ ์ธ CPU์ ๊ธฐ๋ฅ์ ์ต๋ํ ํ์ฉํฉ๋๋ค.
3. โ๋ฐ์ดํฐ ์ ์ฐฉ์ โ ์ญํ (Data Glue)
DuckDB๋ ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณณ์ ๋์ด, ์ธ๋ถ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์ฟผ๋ฆฌํ๋ ๋ฅ๋ ฅ์ด ๋ฐ์ด๋ฉ๋๋ค.
- ํ์ผ ์ง์ ์ฟผ๋ฆฌ: CSV, Parquet, JSON ํ์ผ์ DB๋ก ๋ก๋ํ์ง ์๊ณ ๋ SQL๋ก ์ง์ ์กฐํํ ์ ์์ต๋๋ค.
- ์ํธ์ด์ฉ์ฑ: Pandas, Polars, Arrow ๋ฐ์ดํฐ ํ๋ ์๊ณผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ (Zero-copy)ํ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์ด, ๋ฐ์ดํฐ ๋ถ์ ํ์ดํ๋ผ์ธ์ ํต์ฌ ์ฐ๊ฒฐ ๊ณ ๋ฆฌ ์ญํ ์ ํฉ๋๋ค.
| ๊ตฌ๋ถ | SQLite | DuckDB | PostgreSQL |
|---|---|---|---|
| ์ฃผ ์ฉ๋ | ๋จ์ ์ ์ฅ, ํธ๋์ญ์ | ๋ฐ์ดํฐ ๋ถ์ (OLAP) | ๋ฒ์ฉ ์๋ฒํ DB |
| ์ค์น | ๋ถํ์ (ํ์ผ ๊ธฐ๋ฐ) | ๋ถํ์ (ํ์ผ ๊ธฐ๋ฐ) | ํ์ (์๋ฒํ) |
| ๋ฐ์ดํฐ ๊ตฌ์กฐ | ํ(Row) ๊ธฐ๋ฐ | ์ด(Column) ๊ธฐ๋ฐ | ํ ๊ธฐ๋ฐ (๊ธฐ๋ณธ) |
| ์ฑ๋ฅ | ์ฐ๊ธฐ/์์ ์ ๊ฐํจ | ๋๋ ๋ถ์์ ์ต์ ํ | ๋์ ์ ์ ๋ฐ ํ์ฅ์ฑ |
| This is a space where knowledge is not merely consumed, but respected, sovereign, and connectedโshared together with cloud industry professionals (Bros).|
| ์ง์์ด ์๋น๋์ง ์๊ณ ์กด์คยท์ฃผ๊ถ๋ณด์ฅยท์ฐ๊ฒฐ๋๋ ๊ณต๊ฐ์ผ๋ก ํด๋ผ์ฐ๋ ํ์ ์ ๋ฌธ๊ฐ(Bro)์ ํจ๊ป ๊ณต์ ํ๊ณ ์์ต๋๋ค. |