SQLite ๊ธฐ๋ฐ˜ ๋ถ„์‚ฐ ๋‚ด๊ฒฐํ•จ์„ฑ DBMS์ธ rqlite 6.0 ์ถœ์‹œ

SQLite๋ฅผ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ๋™๊ธฐํ™”๋œ ์Šคํ† ๋ฆฌ์ง€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ž‘์—…์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ„์‚ฐ DBMS rqlite 6.0์˜ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. rqlite์˜ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” etcd ๋ฐ Consul๊ณผ ๋‹ค์†Œ ์œ ์‚ฌํ•˜์ง€๋งŒ ํ‚ค/๊ฐ’ ํ˜•์‹ ๋Œ€์‹  ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ถ„์‚ฐ ๋‚ด๊ฒฐํ•จ์„ฑ ์Šคํ† ๋ฆฌ์ง€์˜ ์„ค์น˜, ๋ฐฐํฌ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์‰ฝ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋Š” Go๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ MIT ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋™๊ธฐํ™”๋œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Raft ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Rqlite๋Š” ์›๋ณธ SQLite ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ‘œ์ค€ go-sqlite3 ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ๊ทธ ์œ„์— ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ๋ณต์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ์„ ๋‘ ๋…ธ๋“œ ์„ ํƒ์— ๋Œ€ํ•œ ํ•ฉ์˜ ๋‹ฌ์„ฑ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ ˆ์ด์–ด๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณ€๊ฒฝ์€ ๋ฆฌ๋”๋กœ ์„ ํƒ๋œ ๋…ธ๋“œ์— ์˜ํ•ด์„œ๋งŒ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ์“ฐ๊ธฐ ์ž‘์—…์ด ํฌํ•จ๋œ ์—ฐ๊ฒฐ์€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ์ „์†ก๋  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์š”์ฒญ์„ ๋ฐ˜๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌ๋”์˜ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค(๋‹ค์Œ ๋ฒ„์ „์—์„œ๋Š” ๋ฆฌ๋”์—๊ฒŒ ์š”์ฒญ ์ž๋™ ์ „๋‹ฌ์„ ์ถ”๊ฐ€ํ•˜๊ฒ ๋‹ค๊ณ  ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค). ๋‚ด๊ฒฐํ•จ์„ฑ์— ์ค‘์ ์„ ๋‘๋ฏ€๋กœ DBMS๋Š” ์ฝ๊ธฐ ์ž‘์—…์œผ๋กœ๋งŒ ํ™•์žฅ๋˜๊ณ  ์“ฐ๊ธฐ ์ž‘์—…์€ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ๋…ธ๋“œ์—์„œ rqlite ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‚ด๊ฒฐํ•จ์„ฑ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ  HTTP๋ฅผ ํ†ตํ•ด SQLite์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ ๋…ธ๋“œ์˜ SQLite ๋ฐ์ดํ„ฐ๋Š” ํŒŒ์ผ์ด ์•„๋‹Œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. Raft ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ ˆ์ด์–ด ์ˆ˜์ค€์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณ€๊ฒฝ์„ ์ดˆ๋ž˜ํ•˜๋Š” ๋ชจ๋“  SQLite ๋ช…๋ น์˜ ๋กœ๊ทธ๊ฐ€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด ๋กœ๊ทธ๋Š” ๋ณต์ œ(๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ์š”์ฒญ์„ ์žฌ์ƒ์‚ฐํ•˜๋Š” ์ˆ˜์ค€์˜ ๋ณต์ œ), ์ƒˆ ๋…ธ๋“œ ์‹œ์ž‘ ๋˜๋Š” ์—ฐ๊ฒฐ ๋Š๊น€ ๋ณต๊ตฌ ์ค‘์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ž๋™ ํŒจํ‚ค์ง•์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ํŒจํ‚ค์ง•์€ ์ง€์ •๋œ ์ˆ˜์˜ ๋ณ€๊ฒฝ ํ›„์— ์‹œ์ž‘๋˜์–ด ๋””์Šคํฌ์— ์Šค๋ƒ…์ƒท์ด ๊ณ ์ •๋˜๊ณ  ์ƒˆ ๋กœ๊ทธ๊ฐ€ ์œ ์ง€๋˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค(๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ). ์Šค๋ƒ…์ƒท + ๋ˆ„์  ๋ณ€๊ฒฝ ๋กœ๊ทธ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.)

rqlite์˜ ํŠน์ง•:

  • ๋ณ„๋„์˜ SQLite ์„ค์น˜ ์—†์ด ํด๋Ÿฌ์Šคํ„ฐ ๋ฐฐํฌ๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค.
  • ๋ณต์ œ๋œ SQL ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋น ๋ฅด๊ฒŒ ํ™•๋ณดํ•˜๋Š” ๊ธฐ๋Šฅ.
  • ์ž‘์—… ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(ํ”„๋กœ๋•์…˜ ๋“ฑ๊ธ‰).
  • ์ผ๊ด„ ๋ชจ๋“œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ์˜ ์„ ๋‘ ๋…ธ๋“œ๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” HTTP(S) API๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค์™€ SQLite์šฉ์œผ๋กœ ๊ตฌ์ถ•๋œ ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ๋…ธ๋“œ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋…ธ๋“œ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ์•”ํ˜ธํ™”๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฝ์„ ๋•Œ ๋ฐ์ดํ„ฐ์˜ ๊ด€๋ จ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ํ™•์ธํ•˜๋Š” ์ˆ˜์ค€์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
  • ํ•ฉ์˜ ๊ฒฐ์ •์— ์ฐธ์—ฌํ•˜์ง€ ์•Š๊ณ  ์ฝ๊ธฐ ์ž‘์—…์„ ์œ„ํ•œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ํ™•์žฅ์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ฝ๊ธฐ ์ „์šฉ ๋ชจ๋“œ์—์„œ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์„ ํƒ์  ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ์š”์ฒญ์— ๋ช…๋ น์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ณ ์œ ํ•œ ํ˜•ํƒœ์˜ ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(BEGIN, COMMIT, ROLLBACK, SAVEPOINT ๋ฐ RELEASE ๊ธฐ๋ฐ˜ ํŠธ๋žœ์žญ์…˜์€ ์ง€์›๋˜์ง€ ์•Š์Œ).
  • ํ•ซ ๋ฐฑ์—… ์ƒ์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ๋ฆด๋ฆฌ์Šค์—๋Š” ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ์š”์ฒญ์„ ์˜ฌ๋ฐ”๋ฅธ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐœ์„ ํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ์•ˆ์ •์„ฑ์„ ๋†’์ด๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ์ค‘์š”ํ•œ ์•„ํ‚คํ…์ฒ˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. rqlite ๋…ธ๋“œ๋Š” ์ด์ œ Raft ํ”„๋กœํ† ์ฝœ์— ์˜ํ•ด ๋…ธ๋“œ ๊ฐ„์— ์„ค์ •๋œ TCP ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ์„ ๋‹ค์ค‘ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ์— ๋ฆฌ๋” ๊ถŒํ•œ์ด ํ•„์š”ํ•˜์ง€๋งŒ ๋ณด์กฐ ๋…ธ๋“œ๋กœ ์ „์†ก๋˜๋Š” ๊ฒฝ์šฐ ๋ณด์กฐ ๋…ธ๋“œ๋Š” Raft ํ•ฉ์˜ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฆฌ๋”์˜ ์ฃผ์†Œ๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  ์ด๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ๋ณ„๋„์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ํ•„์š” ์—†๊ณ  Raft ์ƒํƒœ์™€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ณด์กฐ ๋…ธ๋“œ๋Š” ๋ฆฌ๋” ๋…ธ๋“œ์˜ ์ฃผ์†Œ๋ฅผ ์ฐพ์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ฆฌ๋” ๋…ธ๋“œ์— ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. API๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ์žˆ๋Š” ๋‹ค๋ฅธ ๋…ธ๋“œ์˜ ์ƒํƒœ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ".sysdump" ๋ช…๋ น์ด ๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€