Tarantool 2.8 DBMS ์ถœ์‹œ

์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฒ€์ƒ‰๋œ ์ •๋ณด์™€ ํ•จ๊ป˜ ์˜๊ตฌ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ์ œ๊ณตํ•˜๋Š” Tarantool 2.8 DBMS์˜ ์ƒˆ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DBMS๋Š” NoSQL ์‹œ์Šคํ…œ(์˜ˆ: Memcached ๋ฐ Redis)์˜ ๋น ๋ฅธ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ํŠน์„ฑ๊ณผ ๊ธฐ์กด DBMS(Oracle, MySQL ๋ฐ PostgreSQL)์˜ ์•ˆ์ •์„ฑ์„ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. Tarantool์€ C๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ Lua์—์„œ ์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” BSD ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

DBMS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ถ€ํ•˜๊ฐ€ ๋†’์€ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Tarantool์˜ ๊ธฐ๋Šฅ ์ค‘์—๋Š” Lua ์–ธ์–ด๋กœ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ(LuaJIT๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ์Œ), ํด๋ผ์ด์–ธํŠธ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ๋•Œ MessagePack ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ, ๋‘ ๊ฐœ์˜ ๋‚ด์žฅ ์—”์ง„์ด ์žˆ์Œ(์žฌ์„ค์ •์„ ํ†ตํ•ด RAM์— ์ €์žฅ) ์˜๊ตฌ ๋“œ๋ผ์ด๋ธŒ ๋ฐ LSM ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜ XNUMX๋ ˆ๋ฒจ ๋””์Šคํฌ ์Šคํ† ๋ฆฌ์ง€), ๋ณด์กฐ ํ‚ค ์ง€์›, XNUMX๊ฐ€์ง€ ์œ ํ˜•์˜ ์ธ๋ฑ์Šค(HASH, TREE, RTREE, BITSET), ๋งˆ์Šคํ„ฐ-๋งˆ์Šคํ„ฐ ๋ชจ๋“œ์˜ ๋™๊ธฐ ๋ฐ ๋น„๋™๊ธฐ ๋ณต์ œ ๋„๊ตฌ, ์—ฐ๊ฒฐ ์ธ์ฆ ๋ฐ ์•ก์„ธ์Šค ์ œ์–ด, SQL ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ.

์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ:

  • memtx ์ธ๋ฉ”๋ชจ๋ฆฌ ์—”์ง„์˜ MVCC(๋‹ค์ค‘ ๋ฒ„์ „ ๋™์‹œ์„ฑ ์ œ์–ด)๊ฐ€ ์•ˆ์ •ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • IPROTO ๋ฐ”์ด๋„ˆ๋ฆฌ ํ”„๋กœํ† ์ฝœ์˜ ํŠธ๋žœ์žญ์…˜ ์ง€์›. ์ด์ „์—๋Š” ํŠธ๋žœ์žญ์…˜์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด Lua์—์„œ ์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐœ๋ณ„ ํ…Œ์ด๋ธ”๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ž‘๋™ํ•˜๋Š” ๋™๊ธฐ ๋ณต์ œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • RAFT ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐฑ์—… ๋…ธ๋“œ(์žฅ์•  ์กฐ์น˜)๋กœ ์ž๋™ ์ „ํ™˜ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ์‹ WAL ๊ธฐ๋ฐ˜ ๋ณต์ œ๋Š” ์˜ค๋žซ๋™์•ˆ Tarantool์—์„œ ๊ตฌํ˜„๋˜์–ด ์™”์œผ๋ฉฐ ์ด์ œ๋Š” ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ƒค๋”ฉ์ด ํฌํ•จ๋œ ํ† ํด๋กœ์ง€์˜ ๊ฒฝ์šฐ ์ž๋™ ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ ์ „ํ™˜๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค(๊ฐ€์ƒ ๋ฒ„ํ‚ท์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐํฌํ•˜๋Š” vshard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋จ).
  • ๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ•  ๋•Œ Tarantool ์นดํŠธ๋ฆฌ์ง€ ํด๋Ÿฌ์Šคํ„ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค. Tarantool ์นดํŠธ๋ฆฌ์ง€๋Š” ์ด์ œ ๋ถ€ํ•˜๋ฅผ ๋” ์ž˜ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋Ÿฌ์Šคํ„ฐ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ Ansible ์—ญํ• ์˜ ์ž‘์—…์ด ์ตœ๋Œ€ 15~20๋ฐฐ ๊ฐ€์†ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋Œ€๊ทœ๋ชจ ํด๋Ÿฌ์Šคํ„ฐ ์ž‘์—…์ด ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.
  • ์ด์ „ ๋ฒ„์ „ >1.6 ๋ฐ <1.10์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋Š” ์‹œ์ž‘ ์‹œ ์ถ”๊ฐ€ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ์ž„์‹œ ๋ฒ„์ „ 1.10 ๋ฐฐํฌ๋ฅผ ํ†ตํ•ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ž‘์€ ํŠœํ”Œ์˜ ์ €์žฅ์ด ์ตœ์ ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์ œ SQL์€ UUID๋ฅผ ์ง€์›ํ•˜๊ณ  ์œ ํ˜• ๋ณ€ํ™˜์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „ 2.10๋ถ€ํ„ฐ ๋ฆด๋ฆฌ์Šค ์ƒ์„ฑ์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ์ •์ฑ…์œผ๋กœ ์ „ํ™˜๋œ๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์ด ์ค‘๋‹จ๋œ ์ค‘์š”ํ•œ ๋ฆด๋ฆฌ์Šค์˜ ๊ฒฝ์šฐ ๋ฒ„์ „์˜ ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ณ , ์ค‘๊ฐ„ ๋ฆด๋ฆฌ์Šค์˜ ๊ฒฝ์šฐ ๋‘ ๋ฒˆ์งธ ์ˆซ์ž, ์ˆ˜์ • ๋ฆด๋ฆฌ์Šค์˜ ๊ฒฝ์šฐ ์„ธ ๋ฒˆ์งธ ์ˆซ์ž(2.10 ์ดํ›„์—๋Š” ๋ฆด๋ฆฌ์Šค 3.0.0์ด ๋ฆด๋ฆฌ์Šค๋ฉ๋‹ˆ๋‹ค)๊ฐ€ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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