์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ๊ฐ์[ํธ์ง]
SQLite๋ ํด๋ผ์ด์ธํธ ์์ฉ ํ๋ก๊ทธ๋จ์ ์๋ฒ ๋๋๋์ด ๋์ํ๋ ์คํ ์์ค DBMS์ ์ผ์ข
์ด๋ค. ์๋๋ก์ด๋, iOS, macOS์ ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจ๋์ด ์๋ค. ๊ณต์์ ์ธ ์ฝ์นญ์ ์๋์ง๋ง ์ฝ์นญ์ SQL + Lite(Light).[1]
๊ทธ๋์ SQL์์ ํ๋ ๊ธฐ๋ฅ์ด SQLite์์ '๊ฒฝ๋ํ'์ ์ด์ ๋ก ์ ํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์๋ฅผ ๋ค์๋ฉด, ํ๋กํ ์ฝ ์กฐ์์ ํตํด ๋คํธ์ํฌ์ ์ ๊ทผํ ์๋ ์์ง๋ง, ๋์ ์ ๊ทผ์ ์ ํ๋๋ค. ๋ํ ๋ณต์กํ๊ฑฐ๋ ํฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ๋ ๋ฐ์๋ ์ ์ ํ์ง ์๋ค. ์ธ์ฝ๋ฉ ์ญ์ ์ ๋์ฝ๋๋ง ์ฌ์ฉํ ์ ์์ด, ์ฌ์ฉ ์ธ์ฝ๋ฉ์ด ์ ๋์ฝ๋๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๅ ์์์ ์๋ฉ ๋ง๋ณผ ์ ์๋ค. ์ฌ์ค ๊ฐ๋ฐ ๋น์๋ถํฐ ์ด์ง์คํจ์์ ๊ตฌ๋๋๋ ํ[2]์ ์์ง๊ตฌ๋ ํ ๊ธฐ๋ฅ์ ์๋๋ถํฐ ์ ๊ฑฐ๋์ด ์์๋ค. ๊ทธ๋์ ๊ทธ๋ฐ์ง ํ์ฌ๋ ํผ๋ธ๋ฆญ ๋๋ฉ์ธ์ผ๋ก ํ๋ฆฐ ์ํ.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฒด๋ฅผ ํ์ผ ํ๋์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์, ํ์ผ์ ํต์งธ๋ก ๋ณต์ฌํ๋ฉด ๋ฐฑ์ ์ด ๋๋๋ค. ๋ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์์ ๊ตฌ๋ํ ์ ์๊ธฐ ๋๋ฌธ์, ๋ฐ๋ก ๋ฏธ๋ค์จ์ด๋ฅผ ์ฐ์ง ์์๋ ํ๋ก๊ทธ๋จ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ํฌํจ์์ผ ์ฌ์ฉํ ์ ์๋ค. ํ์ค SQL ๋ฌธ๋ฒ์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ํ์ตํด์ผ ํ๋ ๊ฒ๋ ๋ณ๋ก ์๋ค. ๋ค๋ง ์ฑ๋ฅ์ '๋ผ์ดํธ'์ ๋ง๊ฒ ์ดํ๋์์ผ๋ฏ๋ก, ๊ทธ๋ฆฌ ํฐ ๊ธฐ๋๋ ํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
ํ ๋ฒ์ ํ ๋ช ์ ์ฌ์ฉ์๋ง์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์์ด์ ๋ฉํฐ ์ ์ ๋ฅผ ์ง์ํ๋ ค๋ฉด ํ๋ก์ ๊ณ์ธต์ ๋์ ํด์ผ ํ๋ค. ๋ฉํฐํ ๋ํธ ๋ถ์ฐ๋ ์ง์ํ์ง ์๊ณ ๊ธฐ๊ฐ ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ์๋ ์ ์ข์ง ์๋ค. ์ด ์ ๋๋ก ํฌ๊ณ ๋ฌด๊ฑฐ์ด ํ๊ฒฝ์๋ ๋ค๋ฅธ DBMS ์ ํ(MariaDB ๋ฑ)์ ์ ํํด์ผ ํ๋ค. SQLite๋ '์๋ฒ ๋๋ SQL ์ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค'์ ํนํ๋ผ์๋ค. ๊ฐ๋จํ ๋ฃฉ์ ํ ์ด๋ธ ๊ตฌํ์ผ๋ก ๋ฒํฐ๊ธฐ์๋ ๋ฌด๋ฆฌ๊ฐ ์์ง๋ง ๊ทธ๋ ๋ค๊ณ ๋ฏธ๋ค์จ์ด๋ฅผ ๋์ ํด์ผ ํ ์ ๋๋ก ๊ฑฐ๋ํ์ง๋ ์์, ์ด์ค๊ฐํ๊ฒ ํฐ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ์ ์ฐ๊ธฐ ์ข๋ค. ๋ง์ฝ ํ ์ด๋ธ ์กฐ์ธ(Join)์ ์์ฃผ ์จ์ผ ํ๋ค๊ฑฐ๋ ๋ ๊ฐ ์ด์์ ํ๋์ ๋ํด ๋น ๋ฅธ ๊ฒ์์ด ํ์ํ๋ฉด ๋ฃฉ์ ํ ์ด๋ธ ๊ตฌํ[3]์ผ๋ก ๊ณจ์น์ฉ์ง ๋ง๊ณ SQLite๋ฅผ ๋์ ํ๋ ๊ฒ ๋์ ์๋ ์๋ค.
๋ค๋ง ๋ฃฉ์ ํ ์ด๋ธ ๊ตฌํ๋ณด๋ค ์ฑ๋ฅ์ด ๋ง์ด ์ ํ๋๋๋ฐ SQLํ์๊ฐ ๊น๋จน๋ ์ฑ๋ฅ์ด ์ ๋ฒ ๋๋ค. ์ธ๋ฑ์ค ๊ฒ์ ์๋ ์ญ์ ๋ฃฉ์ ํ ์ด๋ธ์ ๋ณดํต ํด์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ O(1)์ด์ง๋ง SQLite์ ์ธ๋ฑ์ค๋ B-Tree ํ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ O(log n)์ ์ฑ๋ฅ์ผ๋ก ๋จ์ด์ง๋ค.[4] ๋ํ ๋ฃฉ์ ํ ์ด๋ธ์ ์ ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ์๋ ๋ฐ๋ฉด์ SQLite๋ ํ์ผ ์์ ์ด ๋ค์ด๊ฐ๋ฏ๋ก ์ฌ๊ธฐ์ ์ฑ๋ฅ์ ๋ ๋ํญ ๊น๋จน๋๋ค. ๋ฐ๋ผ์ ๋๊ท๋ชจ ๋ฐฐ์น ์ก(Batch job)์ SQLite๋ ์ข์ ์ ํ์ด ์๋๋ค.[5]
๊ตฌํ ์์ฒด๋ C/C++๋ก ๋์ด ์์ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋ฏธ ์๋ง์ ์ธ์ด๋ก ๋์๊ธฐ ๋๋ฌธ์, C# ๋ฑ ์ธ์ง๋๊ฐ ์๋ ์ธ์ด๋ก ๊ตฌํํ ๋์๋ ์๋ํํฐ๋ฅผ ํตํด ์ฌ์ฉํ ์ ์๋ค.
๊ฒฝ๋ ๊ตฌํ์ธ ํ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์กด๋๊ฐ ๋ฎ์ ๊ฑฐ์ C ์ปดํ์ผ๋ฌ๋ง ์์ผ๋ฉด ๋น๋๊ฐ ๊ฐ๋ฅํ ์์ค์ด๋ค.[6] ๋ํ SQLite ํํ์ด์ง์ ๊ฐ๋ฉด ์๋ง๊ฐ๋ฒ์ ์ด ์๋๋ฐ ๋ค์ด๋ฐ์ ์ด์ด๋ณด๋ฉด ์์ค ์ฝ๋ 2๊ฐ์ ํค๋ ํ์ผ 2๊ฐ๋ง ๋ฌ๋ ์๋ ์ฌํํ ๊ตฌ์ฑ์ ์๋ํ๋ค. ๊ทธ ์ค ํ๋๋ ์ ์ฝ๋์ด๋ฏ๋ก ์ฝ์ด ํ์ผ๋ง ํ์ํ๋ฉด sqlite3.c ์ sqlite3.h ํ์ผ ๋ ๊ฐ๋ง ํ๋ก์ ํธ์ ๋ณต์ฌํด ๋์ผ๋ฉด ๋์ด๋ค. ๋ฌผ๋ก ์๋ง๊ฐ ๋ฒ์ ์ ์ฝ๋๋ฅผ ๋ฒ๋ค๋งํด๋์ ๊ฒ์ด๊ณ ์ค์ ๊ฐ๋ฐ์ฉ ์์ค ์ฝ๋๋ ๋ง์ ์์ ํ์ผ๋ก ๋์ด ์๋ค.[7] ๋คํํ ๋ฒ๋ค๋งํ๋ฉด์ ๋๋ ํ๋ฅผ ํ์ง๋ ์์๊ธฐ ๋๋ฌธ์ ์ฃผ์๋ ์ ๋๋ก ๋ฌ๋ ค ์๊ณ ๋ค์ฌ์ฐ๊ธฐ๋ ์ ์์ ์ผ๋ก ๋์ด ์๋ค.
์ํธํ ๋ชจ๋์ธ SEE(SQLite Encryption Extension)๊ฐ ๊ณต์ SQLite ์ํธํ ๋ชจ๋์ธ๋ฐ ์ด๊ฒ์ ์์ฉ ํ๋ก๊ทธ๋จ์ด๋ผ ๋ฌด๋ฃ ์๋ํํฐ ์ํธํ ๋ชจ๋์ด ๋์ ์๋ค. ๋ค๋ง ์ํธํ๋ฅผ ์ ์ฉํ ์ฝ๋๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ์ ๋ผ์ด์ผ์ค ์๋ฐ์ด๋ฏ๋ก ํด๋น ์ํธํ ๋ชจ๋์ ํํ์ด์ง์๋ ์ฝ๋ ํจ์น ๋ฐ ๋น๋ ๋ฐฉ๋ฒ์ ๋ฌธ์๋ก ์๋ดํ๊ณ ์๋ค. ์ต์ข ์ฌ์ฉ์๊ฐ ์ง์ ์ฝ๋๋ฅผ ํจ์นํด์ ๋น๋ํ๋ ๊ฒ์ ํฉ๋ฒ์ด๋ค. ํจ์น ๋ฐฉ๋ฒ๋ ๊ฐ๋จํ ํธ์ธ๋ฐ sqlite3์ ์์ค ์ฝ๋์ ์ํธํ ๋ชจ๋์ ์ํ ์ธํฐํ์ด์ค๊ฐ ๋ ธ์ถ๋ผ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ฐ๋จํ ์ํธํ ๋ชจ๋์ ์ฌ์ฉํ๋ค๋ ์ค์์น๋ฅผ ์ผ ์ฃผ๊ณ ํ์ํ ํจ์๋ค(5๊ฐ ์ ๋)์ ๊ตฌํํด ์ฃผ๋ฉด ์ํธํ๊ฐ ์ ์ฉ๋๋ค. ๋ค์ฏ ๊ฐ ํจ์๋ฅผ ๊ตฌํํ๋ฉด ๋๋ค๊ณ ํ์ง ๊ทธ ๋ค์ฏ ๊ฐ ํจ์๋ฅผ ๊ตฌํํ๋ ๊ฒ ์ฝ๋ค๊ณ ๋ ์ ํ๋ค
๊ทธ๋์ SQL์์ ํ๋ ๊ธฐ๋ฅ์ด SQLite์์ '๊ฒฝ๋ํ'์ ์ด์ ๋ก ์ ํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์๋ฅผ ๋ค์๋ฉด, ํ๋กํ ์ฝ ์กฐ์์ ํตํด ๋คํธ์ํฌ์ ์ ๊ทผํ ์๋ ์์ง๋ง, ๋์ ์ ๊ทผ์ ์ ํ๋๋ค. ๋ํ ๋ณต์กํ๊ฑฐ๋ ํฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ๋ ๋ฐ์๋ ์ ์ ํ์ง ์๋ค. ์ธ์ฝ๋ฉ ์ญ์ ์ ๋์ฝ๋๋ง ์ฌ์ฉํ ์ ์์ด, ์ฌ์ฉ ์ธ์ฝ๋ฉ์ด ์ ๋์ฝ๋๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๅ ์์์ ์๋ฉ ๋ง๋ณผ ์ ์๋ค. ์ฌ์ค ๊ฐ๋ฐ ๋น์๋ถํฐ ์ด์ง์คํจ์์ ๊ตฌ๋๋๋ ํ[2]์ ์์ง๊ตฌ๋ ํ ๊ธฐ๋ฅ์ ์๋๋ถํฐ ์ ๊ฑฐ๋์ด ์์๋ค. ๊ทธ๋์ ๊ทธ๋ฐ์ง ํ์ฌ๋ ํผ๋ธ๋ฆญ ๋๋ฉ์ธ์ผ๋ก ํ๋ฆฐ ์ํ.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฒด๋ฅผ ํ์ผ ํ๋์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์, ํ์ผ์ ํต์งธ๋ก ๋ณต์ฌํ๋ฉด ๋ฐฑ์ ์ด ๋๋๋ค. ๋ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์์ ๊ตฌ๋ํ ์ ์๊ธฐ ๋๋ฌธ์, ๋ฐ๋ก ๋ฏธ๋ค์จ์ด๋ฅผ ์ฐ์ง ์์๋ ํ๋ก๊ทธ๋จ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ํฌํจ์์ผ ์ฌ์ฉํ ์ ์๋ค. ํ์ค SQL ๋ฌธ๋ฒ์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ํ์ตํด์ผ ํ๋ ๊ฒ๋ ๋ณ๋ก ์๋ค. ๋ค๋ง ์ฑ๋ฅ์ '๋ผ์ดํธ'์ ๋ง๊ฒ ์ดํ๋์์ผ๋ฏ๋ก, ๊ทธ๋ฆฌ ํฐ ๊ธฐ๋๋ ํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
ํ ๋ฒ์ ํ ๋ช ์ ์ฌ์ฉ์๋ง์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์์ด์ ๋ฉํฐ ์ ์ ๋ฅผ ์ง์ํ๋ ค๋ฉด ํ๋ก์ ๊ณ์ธต์ ๋์ ํด์ผ ํ๋ค. ๋ฉํฐํ ๋ํธ ๋ถ์ฐ๋ ์ง์ํ์ง ์๊ณ ๊ธฐ๊ฐ ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ์๋ ์ ์ข์ง ์๋ค. ์ด ์ ๋๋ก ํฌ๊ณ ๋ฌด๊ฑฐ์ด ํ๊ฒฝ์๋ ๋ค๋ฅธ DBMS ์ ํ(MariaDB ๋ฑ)์ ์ ํํด์ผ ํ๋ค. SQLite๋ '์๋ฒ ๋๋ SQL ์ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค'์ ํนํ๋ผ์๋ค. ๊ฐ๋จํ ๋ฃฉ์ ํ ์ด๋ธ ๊ตฌํ์ผ๋ก ๋ฒํฐ๊ธฐ์๋ ๋ฌด๋ฆฌ๊ฐ ์์ง๋ง ๊ทธ๋ ๋ค๊ณ ๋ฏธ๋ค์จ์ด๋ฅผ ๋์ ํด์ผ ํ ์ ๋๋ก ๊ฑฐ๋ํ์ง๋ ์์, ์ด์ค๊ฐํ๊ฒ ํฐ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ์ ์ฐ๊ธฐ ์ข๋ค. ๋ง์ฝ ํ ์ด๋ธ ์กฐ์ธ(Join)์ ์์ฃผ ์จ์ผ ํ๋ค๊ฑฐ๋ ๋ ๊ฐ ์ด์์ ํ๋์ ๋ํด ๋น ๋ฅธ ๊ฒ์์ด ํ์ํ๋ฉด ๋ฃฉ์ ํ ์ด๋ธ ๊ตฌํ[3]์ผ๋ก ๊ณจ์น์ฉ์ง ๋ง๊ณ SQLite๋ฅผ ๋์ ํ๋ ๊ฒ ๋์ ์๋ ์๋ค.
๋ค๋ง ๋ฃฉ์ ํ ์ด๋ธ ๊ตฌํ๋ณด๋ค ์ฑ๋ฅ์ด ๋ง์ด ์ ํ๋๋๋ฐ SQLํ์๊ฐ ๊น๋จน๋ ์ฑ๋ฅ์ด ์ ๋ฒ ๋๋ค. ์ธ๋ฑ์ค ๊ฒ์ ์๋ ์ญ์ ๋ฃฉ์ ํ ์ด๋ธ์ ๋ณดํต ํด์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ O(1)์ด์ง๋ง SQLite์ ์ธ๋ฑ์ค๋ B-Tree ํ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ O(log n)์ ์ฑ๋ฅ์ผ๋ก ๋จ์ด์ง๋ค.[4] ๋ํ ๋ฃฉ์ ํ ์ด๋ธ์ ์ ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ์๋ ๋ฐ๋ฉด์ SQLite๋ ํ์ผ ์์ ์ด ๋ค์ด๊ฐ๋ฏ๋ก ์ฌ๊ธฐ์ ์ฑ๋ฅ์ ๋ ๋ํญ ๊น๋จน๋๋ค. ๋ฐ๋ผ์ ๋๊ท๋ชจ ๋ฐฐ์น ์ก(Batch job)์ SQLite๋ ์ข์ ์ ํ์ด ์๋๋ค.[5]
๊ตฌํ ์์ฒด๋ C/C++๋ก ๋์ด ์์ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋ฏธ ์๋ง์ ์ธ์ด๋ก ๋์๊ธฐ ๋๋ฌธ์, C# ๋ฑ ์ธ์ง๋๊ฐ ์๋ ์ธ์ด๋ก ๊ตฌํํ ๋์๋ ์๋ํํฐ๋ฅผ ํตํด ์ฌ์ฉํ ์ ์๋ค.
๊ฒฝ๋ ๊ตฌํ์ธ ํ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์กด๋๊ฐ ๋ฎ์ ๊ฑฐ์ C ์ปดํ์ผ๋ฌ๋ง ์์ผ๋ฉด ๋น๋๊ฐ ๊ฐ๋ฅํ ์์ค์ด๋ค.[6] ๋ํ SQLite ํํ์ด์ง์ ๊ฐ๋ฉด ์๋ง๊ฐ๋ฒ์ ์ด ์๋๋ฐ ๋ค์ด๋ฐ์ ์ด์ด๋ณด๋ฉด ์์ค ์ฝ๋ 2๊ฐ์ ํค๋ ํ์ผ 2๊ฐ๋ง ๋ฌ๋ ์๋ ์ฌํํ ๊ตฌ์ฑ์ ์๋ํ๋ค. ๊ทธ ์ค ํ๋๋ ์ ์ฝ๋์ด๋ฏ๋ก ์ฝ์ด ํ์ผ๋ง ํ์ํ๋ฉด sqlite3.c ์ sqlite3.h ํ์ผ ๋ ๊ฐ๋ง ํ๋ก์ ํธ์ ๋ณต์ฌํด ๋์ผ๋ฉด ๋์ด๋ค. ๋ฌผ๋ก ์๋ง๊ฐ ๋ฒ์ ์ ์ฝ๋๋ฅผ ๋ฒ๋ค๋งํด๋์ ๊ฒ์ด๊ณ ์ค์ ๊ฐ๋ฐ์ฉ ์์ค ์ฝ๋๋ ๋ง์ ์์ ํ์ผ๋ก ๋์ด ์๋ค.[7] ๋คํํ ๋ฒ๋ค๋งํ๋ฉด์ ๋๋ ํ๋ฅผ ํ์ง๋ ์์๊ธฐ ๋๋ฌธ์ ์ฃผ์๋ ์ ๋๋ก ๋ฌ๋ ค ์๊ณ ๋ค์ฌ์ฐ๊ธฐ๋ ์ ์์ ์ผ๋ก ๋์ด ์๋ค.
์ํธํ ๋ชจ๋์ธ SEE(SQLite Encryption Extension)๊ฐ ๊ณต์ SQLite ์ํธํ ๋ชจ๋์ธ๋ฐ ์ด๊ฒ์ ์์ฉ ํ๋ก๊ทธ๋จ์ด๋ผ ๋ฌด๋ฃ ์๋ํํฐ ์ํธํ ๋ชจ๋์ด ๋์ ์๋ค. ๋ค๋ง ์ํธํ๋ฅผ ์ ์ฉํ ์ฝ๋๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ์ ๋ผ์ด์ผ์ค ์๋ฐ์ด๋ฏ๋ก ํด๋น ์ํธํ ๋ชจ๋์ ํํ์ด์ง์๋ ์ฝ๋ ํจ์น ๋ฐ ๋น๋ ๋ฐฉ๋ฒ์ ๋ฌธ์๋ก ์๋ดํ๊ณ ์๋ค. ์ต์ข ์ฌ์ฉ์๊ฐ ์ง์ ์ฝ๋๋ฅผ ํจ์นํด์ ๋น๋ํ๋ ๊ฒ์ ํฉ๋ฒ์ด๋ค. ํจ์น ๋ฐฉ๋ฒ๋ ๊ฐ๋จํ ํธ์ธ๋ฐ sqlite3์ ์์ค ์ฝ๋์ ์ํธํ ๋ชจ๋์ ์ํ ์ธํฐํ์ด์ค๊ฐ ๋ ธ์ถ๋ผ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ฐ๋จํ ์ํธํ ๋ชจ๋์ ์ฌ์ฉํ๋ค๋ ์ค์์น๋ฅผ ์ผ ์ฃผ๊ณ ํ์ํ ํจ์๋ค(5๊ฐ ์ ๋)์ ๊ตฌํํด ์ฃผ๋ฉด ์ํธํ๊ฐ ์ ์ฉ๋๋ค.
2. ๋น์ทํ ๋ชฉ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค[ํธ์ง]
- Microsoft SQL Server Compact Edition, Local DB: MFC ๋ฐ .NET ๊ณ์ด์์ ์ฃผ๋ก ์ฌ์ฉ
- Firebird Embedded Server: Delphi ๋ฑ ํ์ค์นผ ๊ณ์ด์ ์ธ์ด์์ ์ฃผ๋ก ์ฌ์ฉ
- H2, HSQL, Apache Derby: JVM ํ๊ฒฝ์์ ์ฌ์ฉ๊ฐ๋ฅํ ๋จ์ผ ํ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค
3. ํ์ ํ๋ก์ ํธ[ํธ์ง]
[1] ๊ทธ๋์ ๋ณดํต ์์คํ์+๋ผ์ดํธ ๋ผ๊ณ ์ฝ๋๋ค.
[2] General Dynamics์์ ๊ทผ๋ฌดํ๋ฉด์ ๋ฏธ์ฌ์ผ ๊ตฌ์ถํจ์์ ์ฌ์ฉํ ๋ฏธ ํด๊ตฐ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ ํธ์ ์ฐธ์ฌํ ๋ฆฌ์ฐจ๋ ํ(Richard Hipp) ๋ฐ์ฌ๊ฐ ์ต์ด๋ก ๊ฐ๋ฐํ์๋ค.
[3] ์๋ฐ์ HashMap, ํ์ด์ฌ์ ๋์
๋๋ฆฌ ๋ฑ
[4] ๋ฃฉ์
ํ
์ด๋ธ ๊ตฌํ์ด ๋ฏธ์ํด์ ์ ํ ํ์(๋ฆฌ๋์ด ์์น) ์๊ณ ๋ฆฌ์ฆ์ ์ฐ๊ณ ์๋ค๋ฉด O(n)์ด๋ผ๋ ์ฒ์ฐธํ ์ฑ๋ฅ์ด ๋์ค๋ฏ๋ก ์ด ๊ฒฝ์ฐ์๋ SQLite๊ฐ ํจ์ฌ ๋น ๋ฅด๋ค.
[5] ๋น
๋ฐ์ดํฐ ํ๋ก์ธ์ฑ์ฉ ํ
์ด๋ธ ๋ฃฉ์
์์
์๋ Redis/Memcached๋ฅผ ๊ณ ๋ คํ์.
[6] pthread์ dl๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๊ตฌํ๋๋ฐ ์ด ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฉํฐ์ค๋ ๋ ๊ตฌํ, ๋ค์ด๋๋ฏน ๋ง์ปค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก์ ์ด์์ฒด์ ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
[7] ์๋ง๊ฐ ๋ฒ์ ์ sqlite3.c ํ์ผ์ ๋ฌด๋ ค 211,864๋ผ์ธ์ด๋ ๋๋ค. ์์์ ์ผ๋ก ๊ฐ๋ฐ์๊ฐ ์ด๋ฐ ๋ฌด์ํ๊ฒ ํฐ ํ์ผ๋ก ๊ฐ๋ฐํ๊ธด ์ด๋ ต๋ค.