libmdbx 0.11.3(MDBX) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ณ ์ฑ๋ฅ ์ปดํฉํธ ์๋ฒ ๋๋ ํค-๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌํ๊ณผ ํจ๊ป ์ถ์๋์์ต๋๋ค. libmdbx ์ฝ๋๋ OpenLDAP Public License์ ๋ฐ๋ผ ๋ผ์ด์ผ์ค๊ฐ ๋ถ์ฌ๋ฉ๋๋ค. ๋ชจ๋ ํ์ฌ ์ด์ ์ฒด์ ์ ์ํคํ ์ฒ๋ ๋ฌ์์ Elbrus 2000๋ฟ๋ง ์๋๋ผ ์ง์๋ฉ๋๋ค. 2021๋ ๋ง์ libmdbx๋ ๊ฐ์ฅ ๋น ๋ฅธ ๋ Ethereum ํด๋ผ์ด์ธํธ์ธ Erigon๊ณผ ์๋ก์ด "Shark"์์ ์คํ ๋ฆฌ์ง ๋ฐฑ์๋๋ก ์ฌ์ฉ๋ฉ๋๋ค. information์ ์ต๊ณ ์ฑ๋ฅ์ Ethereum ํด๋ผ์ด์ธํธ์ ๋๋ค.
์ญ์ฌ์ ์ผ๋ก libmdbx๋ LMDB DBMS๋ฅผ ์ฌ์ธต์ ์ผ๋ก ์ฌ์ค๊ณํ์ผ๋ฉฐ ์์ ์ฑ, ๊ธฐ๋ฅ ์ธํธ ๋ฐ ์ฑ๋ฅ ์ธก๋ฉด์์ ์ด์ ์ ํ์ ๋ฅ๊ฐํฉ๋๋ค. LMDB์ ๋น๊ตํ์ฌ libmdbx๋ ์ฝ๋ ํ์ง, API ์์ ์ฑ, ํ ์คํธ ๋ฐ ์๋ํ๋ ๊ฒ์ฌ์ ์ค์ ์ ๋ก๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ์ ๋ฌด๊ฒฐ์ฑ์ ๊ฒ์ฌํ๋ ์ ํธ๋ฆฌํฐ๋ ์ผ๋ถ ๋ณต๊ตฌ ์ต์ ๊ณผ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค.
๊ธฐ์ ์ธก๋ฉด์์ libmdbx๋ ACID, ๊ฐ๋ ฅํ ๋ณ๊ฒฝ ์ง๋ ฌํ ๋ฐ CPU ์ฝ์ด ์ ์ฒด์ ๊ฑธ์ณ ์ ํ ํ์ฅ์ ํตํ ๋น์ฐจ๋จ ์ฝ๊ธฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์๋ ์์ถ, ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํฌ๊ธฐ ๊ด๋ฆฌ, ๋ฒ์ ์ฟผ๋ฆฌ ์ถ์ ์ด ์ง์๋ฉ๋๋ค. 2016๋ ๋ถํฐ ์ด ํ๋ก์ ํธ๋ Positive Technologies์ ์๊ธ ์ง์์ ๋ฐ์์ผ๋ฉฐ 2017๋ ๋ถํฐ ํด๋น ์ ํ์ ์ฌ์ฉ๋์์ต๋๋ค.
libmdbx๋ C++ API๋ฟ๋ง ์๋๋ผ ๋งค๋์๊ฐ ์ง์ํ๋ Rust, Haskell, Python, NodeJS, Ruby, Go ๋ฐ Nim์ฉ ์ธ์ด ๋ฐ์ธ๋ฉ๋ ์ ๊ณตํฉ๋๋ค.
11์ XNUMX์ผ ์ด์ ๋ด์ค ์ดํ ์ถ๊ฐ๋ ์ฃผ์ ํ์ , ๊ฐ์ ๋ฐ ์์ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- C++ API๋ ์ฌ์ฉํ ์ค๋น๊ฐ ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
- ๋๊ท๋ชจ ํธ๋์ญ์ ์ ์ปค๋ฐํ ๋ GC ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ๊ฐ ํฌ๊ฒ ๊ฐ์ํ๋์์ผ๋ฉฐ ์ด๋ Ethereum ์ํ๊ณ์์ libmdbx๋ฅผ ์ฌ์ฉํ ๋ ํนํ ์ค์ํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์์ ๋ด๋ถ ์๋ช ์ด ์ฌ์ฉ์์๊ฒ ์์ ํ ํฌ๋ช ํ ์๋ ์ ๋ฐ์ดํธ๋ฅผ ์ง์ํ๋๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ค๋๋ ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ๋ฒ์ ์์ ๊ธฐ๋ก๋ ํธ๋์ญ์ ์ ์ฝ์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์์ ๋ํ ๊ฑฐ์ง ๊ธ์ ๋ฉ์์ง๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
- mdbx_env_get_syncbytes(), mdbx_env_get_sync๊ธฐ๊ฐ() ๋ฐ mdbx_env_get_syncbytes() ํจ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค. MDBX_SET_UPPERBOUND ์์ ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- C++ 11/14/17/20 ๋ชจ๋์์ ์ง์๋๋ ๋ชจ๋ ์ปดํ์ผ๋ฌ๋ก ๋น๋ํ ๋ ๋ฐ์ํ๋ ๋ชจ๋ ๊ฒฝ๊ณ ๊ฐ ์ ๊ฑฐ๋์์ต๋๋ค. CentOS/RHEL 3.9์ฉ cdevtoolset-4.8๋ฅผ ์ฌ์ฉํ ์ด์ ๋ธ๋ฆฌ๋ฅผ ํฌํจํ์ฌ 9๋ถํฐ clang, 7๋ถํฐ ์์ํ๋ gcc ๋ฑ ๋ ๊ฑฐ์ ์ปดํ์ผ๋ฌ์์ ํธํ์ฑ์ด ๋ณด์ฅ๋ฉ๋๋ค.
- mdbx_chk ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ๋ฉํํ์ด์ง๋ก ์๋ ์ ํํ ํ ๋ฉํํ์ด์ง ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ ์์ ํ์ต๋๋ค.
- ๋ ๊ฑฐ์ ๋ฉํ ํ์ด์ง๋ฅผ ๋ฎ์ด์ธ ๋ ๋ฐํ๋๋ ์๊ธฐ์น ์์ MDBX_PROBLEM ์ค๋ฅ๋ฅผ ์์ ํ์ต๋๋ค.
- MDBX_GET_BOTH ์์ฒญ์ ์ฒ๋ฆฌํ ๋ ๋ถ์ ํํ ์ผ์น๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ MDBX_NOTFOUND ๋ฐํ์ ์์ ํ์ต๋๋ค.
- ์ปค๋๊ณผ์ ์ธํฐํ์ด์ค์ ๋ํ ์ค๋ช ์ด ํฌํจ๋ ํค๋ ํ์ผ์ด ์์ ๋ Linux์์ ์ปดํ์ผ ์ค๋ฅ๊ฐ ์์ ๋์์ต๋๋ค.
- MDBX_SHRINK_ALLOWED ๋ด๋ถ ํ๋๊ทธ์ MDBX_ACCEDE ์ต์ ๊ฐ์ ์ถฉ๋์ ์์ ํ์ต๋๋ค.
- ๋ช ๊ฐ์ง ๋ถํ์ํ ์ด์ค์ ํ์ธ์ด ์ ๊ฑฐ๋์์ต๋๋ค.
- mdbx_env_set_option() ํจ์์์ MDBX_RESULT_TRUE์ ์๊ธฐ์น ์์ ๋ฐํ์ ์์ ํ์ต๋๋ค.
- ์ ์ฒด์ ์ผ๋ก 90๊ฐ ํ์ผ์ 25๊ฐ ์ด์์ ๋ณ๊ฒฝ์ด ์ด๋ฃจ์ด์ก์ผ๋ฉฐ ~1300์ค์ด ์ถ๊ฐ๋์๊ณ ~600์ค์ด ์ญ์ ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru