CBS ๋ฐ sqld ํ”„๋กœ์ ํŠธ๋Š” SQLite์˜ ํด๋ผ์šฐ๋“œ ๋ฐ ์„œ๋ฒ„ ๋ฒ„์ „์„ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

SQLite ๊ฐœ๋ฐœ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‚ด์šฉ์„ ๋กœ์ปฌ ํŒŒ์ผ์ด ์•„๋‹Œ ์™ธ๋ถ€ ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์‹คํ—˜์ ์ธ CBS(Cloud Backed SQLite) VFS ๋ชจ๋“ˆ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€์˜ ๊ฒฝ์šฐ ์™ธ๋ถ€ ์Šคํ† ๋ฆฌ์ง€์— ํŠน๋ณ„ํžˆ ์ตœ์ ํ™”๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ˜•์‹์ด ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ๋จผ์ € ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋กœ์ปฌ ์‹œ์Šคํ…œ์— ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ณ ๋„ ํ•„์š”์— ๋”ฐ๋ผ ์™ธ๋ถ€ ์Šคํ† ๋ฆฌ์ง€์—์„œ ๋™์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€ ์ค‘ Azure Blob Storage์™€ Google Cloud Storage๊ฐ€ ํ˜„์žฌ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ SQLite๋ฅผ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ CBS๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

VFS ๋ชจ๋“ˆ์€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ฐ ํ™œ์„ฑ ๋ชจ๋“œ์—์„œ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋Š” ์‹œ์Šคํ…œ์—์„œ ์ง€์†์ ์œผ๋กœ ์‹คํ–‰๋˜์–ด ์ฝ๊ธฐ ์ „์šฉ ๋ชจ๋“œ์—์„œ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต์œ  ์บ์‹œ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ํ™œ์„ฑ ๋ชจ๋“œ์—์„œ๋Š” ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ๊ฐ€ ํ—ˆ์šฉ๋˜์ง€๋งŒ ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค์˜ ๋กœ์ปฌ ์บ์‹œ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํด๋ผ์ด์–ธํŠธ๋งŒ ์“ธ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๋Š” ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ์š”์ฒญํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋ก๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์“ฐ๊ธฐ ์š”์ฒญ์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด WAL ๋กœ๊ทธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ SQLite ์ž ๊ธˆ ์‹œ์Šคํ…œ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋Š” ์™ธ๋ถ€ ์ €์žฅ์†Œ ์ƒ์„ฑ ๋ฐ ์ง€์šฐ๊ธฐ, ์™ธ๋ถ€ ์ €์žฅ์†Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋กœ๋“œ ๋ฐ ์–ธ๋กœ๋“œ, ์™ธ๋ถ€ ์ €์žฅ์†Œ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณต์‚ฌ๋ณธ ์ƒ์„ฑ, ๋ชฉ๋ก ๋ณด๊ธฐ์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์žฅ๋œ C API ๋ฐ ๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ธ”๋ก์„ ์‚ญ์ œํ•˜๋Š” ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค.

์ด์™€๋Š” ๋ณ„๋„๋กœ libSQL ํ”„๋กœ์ ํŠธ(SQLite์˜ ํ™•์žฅ ํฌํฌ) ๊ฐœ๋ฐœ์ž๋Š” SQLite์˜ ์„œ๋ฒ„ ๋ฒ„์ „์ธ sqld๋ฅผ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด PostgreSQL ๋˜๋Š” HTTP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์ธ ๊ณต์œ  DBMS์˜ ์ž‘์—…์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทœ์•ฝ. ์˜ˆ๋ฅผ ๋“ค์–ด sqld์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด PostgreSQL DBMS์šฉ์œผ๋กœ ์ƒ์„ฑ๋œ ๊ธฐ์กด ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋ฌด์—‡๋ณด๋‹ค๋„ psql CLI ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. sqld ์„œ๋ฒ„๋Š” HTTP ๊ธฐ๋ฐ˜ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šคํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. sqld ์ฝ”๋“œ๋Š” Rust๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ MIT ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

sqld๋Š” ๋ฐฑ์—…, ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์œผ๋กœ์˜ ๋ณต์ œ, ๊ทธ๋ฆฌ๊ณ  ์˜๊ตฌ ์ €์žฅ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๊ณ  ๋กœ์ปฌ ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ์—์„œ SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฆฌ์Šค ์‹œ์Šคํ…œ์—์„œ sqld๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์—์„œ ๋ณต์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ณ ๊ฐ€์šฉ์„ฑ๊ณผ ๋‚ด๊ฒฐํ•จ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด FoundationDB ์œ„์— ์‹คํ–‰๋˜๋Š” ๋ถ„์‚ฐํ˜• SQLite ๋ณ€ํ˜•์ธ mvSQLite์™€์˜ ํ†ตํ•ฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ์˜ ์ฃผ๊ธฐ์ ์ธ ์Šค๋ƒ…์ƒท ์ƒ์„ฑ๊ณผ WAL ๋กœ๊ทธ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ Amazon S3์™€ ํ˜ธํ™˜๋˜๋Š” ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€๋กœ ๋ณต์ œํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋Šฅ๋™ ๋ฐฑ์—… ๋ชจ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ LD_PRELOAD๋ฅผ ํ†ตํ•ด ๋กœ๋“œํ•˜์—ฌ ๋กœ์ปฌ ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์—์„œ sqld๋ฅผ ํ†ตํ•ด ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” SQLite ํ˜ธํ™˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. SQLite์— ๋Œ€ํ•œ ํ™•์žฅ์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” TypeScript, JavaScript, Rust, Go ๋ฐ Python์šฉ์œผ๋กœ ์ค€๋น„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ‘œ์ค€ SQLite ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์‹œ์— sqld์— ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. sqld๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋ณต์ œ ๋ฐ ๋ฐฑ์—…์— ๋Œ€ํ•œ ๋„คํŠธ์›Œํฌ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ์• ๋“œ์˜จ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: # SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค foo.db์šฉ ์„œ๋ฒ„ ์‹œ์ž‘: sqld -d foo.db -p 127.0.0.1:5432 --http-listen-addr=127.0.0.1:8000 # PostgreSQL ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์•ก์„ธ์Šค: psql -q postgres ://127.0.0.1 # SQLite ํˆดํ‚ท์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋กœ์ปฌ๋กœ ์—ฐ๊ฒฐ: sqlite3 foo.db # HTTP๋ฅผ ํ†ตํ•œ ์•ก์„ธ์Šค: curl -s -d "{\"statements\": [\"SELECT * from databases; \"] } ยป\http://127.0.0.1:8000

๊ฒฐ๋ก ์ ์œผ๋กœ Fly.io์—์„œ ๊ฐœ๋ฐœํ•œ LiteFS ํ”„๋กœ์ ํŠธ๋ฅผ ์–ธ๊ธ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. LiteFS๋Š” ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ์—์„œ ํ•˜๋‚˜์˜ ๊ณต์œ  SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ FUSE ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. LiteFS๋Š” ์ผ์ข…์˜ ํŠธ๋žœ์žญ์…˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ณ  LTX ํ˜•์‹์˜ ๋ณ„๋„ ํŒŒ์ผ์— ํŠธ๋žœ์žญ์…˜์„ ์ €์žฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํŒŒ์ผ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ์ž‘์—…์„ ๊ฐ€๋กœ์ฑ„๊ณ  ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์— ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•จ์œผ๋กœ์จ ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ๋ฅผ ๋ณต์ œํ•ฉ๋‹ˆ๋‹ค. LiteFS ์ฝ”๋“œ๋Š” Go๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ Apache 2.0 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster