์ปดํŒฉํŠธ ์ž„๋ฒ ๋””๋“œ DBMS libmdbx 0.9.1 ์ถœ์‹œ

์ถœ์‹œ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „ 0.9.1 libmdbx (MDBX) ๊ณ ์„ฑ๋Šฅ ์†Œํ˜• ์ž„๋ฒ ๋””๋“œ ํ‚ค-๊ฐ’ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌํ˜„. libmdbx ์ฝ”๋“œ๋Š” ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. OpenLDAP ๊ณต๊ฐœ ๋ผ์ด์„ผ์Šค.

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

libmdbx ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‹จ์ˆœํ•œ "ํฌํฌ"๊ฐ€ ์•„๋‹ˆ๋ผ ๊ทผ๋ณธ์ ์œผ๋กœ ์žฌ์„ค๊ณ„๋œ ์ž์†์ž…๋‹ˆ๋‹ค. LMDB โ€” "ํ‚ค-๊ฐ’" ํด๋ž˜์Šค์˜ ํŠธ๋žœ์žญ์…˜ ๋‚ด์žฅํ˜• DBMS ํŠธ๋ฆฌB+ ะฑะตะท ์‚ฌ์ „ ์˜ˆ๋ฐฉ์  ๋กœ๊น…, ์ด๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ „์šฉ ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค ์—†์ด ๋กœ์ปฌ๋กœ ๊ณต์œ ๋œ(๋น„๋„คํŠธ์›Œํฌ) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฝ์Ÿ์ ์ด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. libmdbx๋Š” ๊ทผ๋ณธ์ ์œผ๋กœ ํŒฝ์ฐฝํ•˜๋‹ค ์กฐ์ƒ์˜ ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋™์‹œ์— ๋‹จ์ ์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ์™„ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ๊ฐœ๋ฐœ์ž์— ๋”ฐ๋ฅด๋ฉด libmdbx๋Š” LMDB๋ณด๋‹ค ์กฐ๊ธˆ ๋” ๋น ๋ฅด๊ณ  ํ›จ์”ฌ ๋” ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค.

libmdbx๋Š” ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค ACID, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ์—„๊ฒฉํ•œ ์ง๋ ฌํ™” ๋ฐ CPU ์ฝ”์–ด ์ „์ฒด์— ๊ฑธ์ณ ์„ ํ˜• ํ™•์žฅ์„ ํ†ตํ•œ ๋น„์ฐจ๋‹จ ์ฝ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ(1์Šค๋ ˆ๋“œ HyperThread ๋ชจ๋“œ์—์„œ 2๊ฐœ์˜ ๋ฌผ๋ฆฌ์  ์ฝ”์–ด๊ฐ€ ์žˆ๋Š” CPU i4-8U์˜ 7-4600-2-4 ์Šค๋ ˆ๋“œ์—์„œ ๋ณ‘๋ ฌ ์ฝ๊ธฐ/๊ฒ€์ƒ‰ ์š”์ฒญ ๋ณด๋‚ด๊ธฐ):

์ปดํŒฉํŠธ ์ž„๋ฒ ๋””๋“œ DBMS libmdbx 0.9.1 ์ถœ์‹œ

MDBX์™€ LMDB์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

์ดํ›„์˜ ์ฃผ์š” ํ˜์‹  ๋ฐ ๊ฐœ์„  ์‚ฌํ•ญ ์ด์ „ ๋‰ด์Šค 0.5๋…„ 2020์›” ๋ฒ„์ „ XNUMX ์ถœ์‹œ:

  • ์งˆ๋ฌธ์— ๋Œ€ํ•œ ์‹ ์†ํ•œ ์ง€์›๊ณผ ๋‹ต๋ณ€์„ ์œ„ํ•ด ๊ฐœ๋ฐฉํ˜• ์‹œ์Šคํ…œ์ด ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ „๋ณด ๊ทธ๋ฃน.
  • XNUMX๊ฐœ ์ด์ƒ์˜ ์˜ค๋ฅ˜์™€ ๋‹จ์ ์ด ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์ฐธ์กฐ: ๋ณ€๊ฒฝ ๋กœ๊ทธ).
  • ๋งŽ์€ ์˜คํƒ€์™€ ์ฒ ์ž ์˜ค๋ฅ˜๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์œผ๋ฉฐ, ์™ธ๊ด€์ƒ ๋งŽ์€ ๊ฐœ์„ ์ด ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • iOS, ์•ˆ๋“œ๋กœ์ด๋“œ ์ง€์›, ๋นŒ๋“œ ๋ฃจํŠธ, ๋จธ์Šฌ, ์œ ํด๋ฆฌ๋ธŒ, WSL1 ะธ ํฌ๋„์ฃผ.
  • C++ API ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ถœ์‹œ ํ—ค๋” ํŒŒ์ผ ํ•˜๋‚˜.
  • Doxygen ํ˜•์‹์˜ ๋‚ด์žฅ ๋ฌธ์„œ ๋ฐ ์ž๋™ ์ƒ์„ฑ ์˜จ๋ผ์ธ ๋ฌธ์„œ.
  • ์†Œ์Šค ํ…์ŠคํŠธ๊ฐ€ ์œตํ•ฉ๋œ ์•„์นด์ด๋ธŒ์˜ ์ž๋™ ์ƒ์„ฑ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜ ๋ฐ ์ปค์„œ ์ค€๋น„, ํŠธ๋žœ์žญ์…˜ ๋ฐ ์ปค์„œ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ปจํ…์ŠคํŠธ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • B+ํŠธ๋ฆฌ MVCC ์Šค๋ƒ…์ƒท์˜ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ๋ฐฉ๋ฒ•์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณต๊ตฌ๋ฅผ ์œ„ํ•ด ์ „ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ๋ชจ๋“  ๋ฉ”ํƒ€ ํŽ˜์ด์ง€๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ MVCC ์Šค๋ƒ…์ƒท ํ™•์ธ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ๋ชฉ์  ๋“ฑ์„ ์œ„ํ•ด ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹ค์‹œ ์—ฌ๋Š” ์ง€์›์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ด ๋•Œ MDBX_NOSUBDIR ์˜ต์…˜์˜ ์ž๋™ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ถ€๋™ ์†Œ์ˆ˜์  ๊ฐ’๊ณผ JavaScript "์œ ๋‹ˆ๋ฒ„์„ค" ์ˆซ์ž์—์„œ ์ •์ˆ˜ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด 430๊ฐœ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด 93๊ฐœ ํŒŒ์ผ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ  25์ค„ ์ด์ƒ์ด ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ 8.5์ค„ ์ด์ƒ์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

libmdbx์˜ ํ›„์† ๊ฐœ๋ฐœ์—์„œ๋Š” ์ตœ์ข… C++ API, ๊ธฐ๋ณธ ์ฝ”๋“œ์˜ ์ถ”๊ฐ€ ์•ˆ์ •ํ™”, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์œ ์šฉ์„ฑ ๊ฐœ์„ , ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” Linux ๋ฐฐํฌํŒ์šฉ ํŒจํ‚ค์ง•์— ์ค‘์ ์„ ๋‘˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ์•ˆ๋œ ๊ฐœ์„  ์‚ฌํ•ญ ์ค‘ ๋‹ค์Œ ํ˜•์‹์˜ ํ‚ค ์ง€์›์— ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€ํŒฉ.

์ถœ์ฒ˜ : opennet.ru

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