DBMS libmdbx 0.11.7 ๋ฆด๋ฆฌ์Šค. GitHub์—์„œ ์ž ๊ธˆ ํ›„ GitFlic์œผ๋กœ ๊ฐœ๋ฐœ ์ด๋™

libmdbx 0.11.7(MDBX) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ณ ์„ฑ๋Šฅ ์†Œํ˜• ์ž„๋ฒ ๋””๋“œ ํ‚ค-๊ฐ’ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌํ˜„๊ณผ ํ•จ๊ป˜ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. libmdbx ์ฝ”๋“œ๋Š” OpenLDAP Public License์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํ˜„์žฌ ์šด์˜ ์ฒด์ œ ๋ฐ ์•„ํ‚คํ…์ฒ˜๋Š” ๋ฌผ๋ก  Russian Elbrus 2000์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฆด๋ฆฌ์Šค๋Š” GitHub ๊ด€๋ฆฌ์ž๊ฐ€ ๊ฒฝ๊ณ ๋‚˜ ์„ค๋ช… ์—†์ด 15๋…„ 2022์›” 404์ผ์— ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ์™€ ํ•จ๊ป˜ libmdbx๋ฅผ ์ œ๊ฑฐํ•œ ํ›„ ํ”„๋กœ์ ํŠธ๋ฅผ GitFlic ์„œ๋น„์Šค๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•œ ๊ฒƒ์œผ๋กœ ์œ ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ์ถ”๋ฝํ•œ ํšŒ์‚ฌ์™€ ๊ด€๋ จ๋œ ๋งŽ์€ ๊ฐœ๋ฐœ์ž์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ฐจ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฏธ๊ตญ์˜ ์ œ์žฌํ•˜์—. ์‚ฌ์šฉ์ž์˜ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ํŽ˜์ด์ง€, ์ €์žฅ์†Œ ๋ฐ ํฌํฌ๊ฐ€ ๊ฐ‘์ž๊ธฐ "XNUMX" ํŽ˜์ด์ง€๋กœ ๋ฐ”๋€Œ์–ด ํ†ต์‹ ํ•  ์ˆ˜ ์—†๊ณ  ์ด์œ ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ๊ฑฐ์˜ ๋ชจ๋“  ๋ฌธ์ œ๊ฐ€ ์†์‹ค๋˜์—ˆ์œผ๋ฉฐ ์ž์„ธํ•œ ๋‹ต๋ณ€์ด ํฌํ•จ๋œ ๋งŽ์€ ์งˆ๋ฌธ๊ณผ ๋งŽ์€ ํ† ๋ก ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ •๋ณด์˜ ์†์‹ค์€ GitHub ๊ด€๋ฆฌ๊ฐ€ ํ”„๋กœ์ ํŠธ์— ๊ฐ€ํ•œ ์œ ์ผํ•œ ๊ฐ๊ด€์ ์ธ ์†์ƒ์ž…๋‹ˆ๋‹ค. ํ† ๋ก ์˜ ์ผ๋ถ€ ์‚ฌ๋ณธ์€ archive.org ์•„์นด์ด๋ธŒ์—์„œ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด์žฅ๋œ CI ์Šคํฌ๋ฆฝํŠธ ๋ฐ ์ธํ”„๋ผ(OpenSource ํ”„๋กœ์ ํŠธ์— ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)์˜ ์†์‹ค๋กœ ์ธํ•ด ์•ฝ๊ฐ„์˜ ๊ธฐ์ˆ ์  ๋ถ€์ฑ„๋ฅผ ์ˆ˜์ •, ํ†ตํ•ฉ ๋ฐ ์ œ๊ฑฐํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ CI๋Š” ๋ชจ๋“  BSD ๋ฐ Solaris ๋ณ€ํ˜•์— ๋Œ€ํ•œ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ ์‹คํ–‰์„ ์ œ์™ธํ•˜๊ณ  ๊ฑฐ์˜ ๋™์ผํ•œ ์ •๋„๋กœ ๋ณต์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋†€๋ž๊ฒŒ๋„ GitHub์˜ ์กฐ์น˜ ํ›„์— ์ง€๋ถˆ์˜ ํ•„์š”์„ฑ์„ ์ƒ๊ธฐ์‹œํ‚ค๊ณ  ๋ˆ์„ ํƒ•๊ฐํ•˜๋ ค๋Š” ์‹œ๋„๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์–ด๋– ํ•œ ์„ค๋ช…์ด๋‚˜ ์•Œ๋ฆผ๋„ ์ˆ˜์‹ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

libmdbx v0.11.3 ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ๋งˆ์ง€๋ง‰ ๋‰ด์Šค ์ดํ›„ GitHub ์ž‘์—…์—์„œ ๋ณต๊ตฌํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ ๋‹ค์Œ ๊ฐœ์„  ์‚ฌํ•ญ ๋ฐ ์ˆ˜์ • ์‚ฌํ•ญ์— ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Linux ์ปค๋„์˜ ๊ฒฐํ•ฉ๋œ ํŽ˜์ด์ง€ ๋ฐ ๋ฒ„ํผ ์บ์‹œ์—์„œ ๊ฐ์ง€๋œ ๋น„์ผ๊ด€์„ฑ ํšจ๊ณผ/๊ฒฐํ•จ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ์บ์‹œ์™€ ๋ฒ„ํผ ์บ์‹œ๊ฐ€ ์™„์ „ํžˆ ํ†ตํ•ฉ๋œ ์‹œ์Šคํ…œ์—์„œ ์ปค๋„์ด ์ด๋ฏธ ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘๋œ ํŒŒ์ผ์— ์“ธ ๋•Œ ๋‘ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ๋ณธ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚ญ๋น„ํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ๋ก ์ค‘์ธ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์ง ๋””์Šคํฌ์— ๊ธฐ๋ก๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ write() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „์— ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘์„ ํ†ตํ•ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

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

    ์ด์ œ ์šฐ๋ฆฌ๋Š” ์žฌ์ƒ ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ๋ณต์žก์„ฑ๊ณผ ํŠน์ˆ˜์„ฑ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ์•ˆ์ •์ ์œผ๋กœ ์‹๋ณ„๋˜๊ณ  ํ˜„์ง€ํ™”๋˜์—ˆ์œผ๋ฉฐ ์•ˆ์ •์ ์œผ๋กœ ์ œ๊ฑฐ๋˜์—ˆ๋‹ค๊ณ  ์ž์‹  ์žˆ๊ฒŒ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐ”์ดํŒจ์Šค ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์ž‘์—…์€ Erigon(Ethereum)์˜ ๊ฐœ๋ฐœ์ž ์ค‘ ํ•œ ๋ช…์— ์˜ํ•ด ํ™•์ธ๋˜์—ˆ์œผ๋ฉฐ, ๊ทธ์˜ ๊ฒฝ์šฐ ๋””๋ฒ„๊ทธ ๋นŒ๋“œ์—์„œ ์ถ”๊ฐ€ ์–ด์„ค์…˜ ๊ฒ€์‚ฌ๋กœ ์ธํ•ด ๋ณดํ˜ธ๊ฐ€ ํšŒ๊ท€๋กœ ํŠธ๋ฆฌ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    ์ž‘์—… ์ค‘์ธ ํ”„๋กœ์ ํŠธ์—์„œ libmdbx๋ฅผ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๋งฅ๋ฝ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘๋™์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•˜๋ฉฐ "์ด๊ฒƒ์ด ๋ฒ„๊ทธ์ธ์ง€ ๊ธฐ๋Šฅ์ธ์ง€"์™€ ๊ทธ๋Ÿฌํ•œ ์ผ๊ด€์„ฑ์ด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. , ํŠนํžˆ Linux ์ปค๋„ ๋‚ด์—์„œ ๋ถˆ์ผ์น˜์˜ ์›์ธ์„ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์„œ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • API์™€ mdbx_copy ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ์••์ถ•ํ•˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ•ซ ๋ณต์‚ฌํ•  ๋•Œ EXDEV(๊ต์ฐจ ์žฅ์น˜ ๋งํฌ) ์˜ค๋ฅ˜ ํšŒ๊ท€๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Kris Zyp๋Š” Deno์—์„œ libmdbx์— ๋Œ€ํ•œ ์ง€์›์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. Kai Wetlesen์€ Fedora์šฉ RPM์„ ํŒจํ‚ค์ง•ํ–ˆ์Šต๋‹ˆ๋‹ค. David Bouyssiรฉ๋Š” Scala์šฉ ๋ฐ”์ธ๋”ฉ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋žœ์žญ์…˜์„ ์ฒ˜๋ฆฌํ•  ๋•Œ MDBX_opt_rp_augment_limit ์˜ต์…˜์œผ๋กœ ์„ค์ •๋œ ๊ฐ’์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ๋ฒ„๊ทธ๋กœ ์ธํ•ด ๋ถˆํ•„์š”ํ•œ ์ž‘์—…์ด ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉฐ, ์ด๋Š” ๋•Œ๋•Œ๋กœ ์ด๋”๋ฆฌ์›€ ๊ตฌํ˜„(Erigon/Akula/Silkworm) ๋ฐ ๋ฐ”์ด๋‚ธ์Šค ์ฒด์ธ ํ”„๋กœ์ ํŠธ์˜ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์ณค์Šต๋‹ˆ๋‹ค.
  • C++ API๋ฅผ ํฌํ•จํ•˜์—ฌ ๋งŽ์€ ๋ฒ„๊ทธ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํฌ๊ท€ํ•˜๊ณ  ์ด๊ตญ์ ์ธ ๊ตฌ์„ฑ์—์„œ ๋งŽ์€ ๋นŒ๋“œ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ค‘์š”ํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์˜ ์ „์ฒด ๋ชฉ๋ก์€ ChangeLog์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 185๊ฐœ ํŒŒ์ผ์— ์ด 89๊ฐœ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋˜์—ˆ์œผ๋ฉฐ ์•ฝ 3300์ค„์ด ์ถ”๊ฐ€๋˜์—ˆ๊ณ  ์•ฝ 4100์ค„์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. GitHub ๋ฐ ์ข…์† ์„œ๋น„์Šค์™€ ๊ด€๋ จ๋œ ์ด๋ฏธ ์“ธ๋ชจ ์—†๋Š” ๊ธฐ์ˆ  ํŒŒ์ผ์ด ์ œ๊ฑฐ๋˜์–ด ๋” ๋งŽ์ด ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์—ญ์‚ฌ์ ์œผ๋กœ libmdbx๋Š” LMDB DBMS๋ฅผ ์‹ฌ์ธต์ ์œผ๋กœ ์žฌ์„ค๊ณ„ํ–ˆ์œผ๋ฉฐ ์•ˆ์ •์„ฑ, ๊ธฐ๋Šฅ ์„ธํŠธ ๋ฐ ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ ์ด์ „ ์ œํ’ˆ์„ ๋Šฅ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. LMDB์™€ ๋น„๊ตํ•˜์—ฌ libmdbx๋Š” ์ฝ”๋“œ ํ’ˆ์งˆ, API ์•ˆ์ •์„ฑ, ํ…Œ์ŠคํŠธ ๋ฐ ์ž๋™ํ™”๋œ ๊ฒ€์‚ฌ์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ์ผ๋ถ€ ๋ณต๊ตฌ ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์ ์œผ๋กœ libmdbx๋Š” ACID, ์—„๊ฒฉํ•œ ๋ณ€๊ฒฝ ์ง๋ ฌํ™” ๋ฐ CPU ์ฝ”์–ด์—์„œ ์„ ํ˜• ํ™•์žฅ์„ ํ†ตํ•œ ๋น„์ฐจ๋‹จ ์ฝ๊ธฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ž๋™ ์••์ถ•, ์ž๋™ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌ๊ธฐ ๊ด€๋ฆฌ ๋ฐ ๋ฒ”์œ„ ์ฟผ๋ฆฌ ์ถ”์ •์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค. 2016๋…„๋ถ€ํ„ฐ ์ด ํ”„๋กœ์ ํŠธ๋Š” Positive Technologies์˜ ์ž๊ธˆ ์ง€์›์„ ๋ฐ›์•„ 2017๋…„๋ถ€ํ„ฐ ์ œํ’ˆ์— ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

libmdbx๋Š” Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala์— ๋Œ€ํ•œ ๋งค๋‹ˆ์•„ ์ง€์› ๋ฐ”์ธ๋”ฉ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐœ๋ฐœ๋œ C++ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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