Qhov kev tso tawm ntawm libmdbx 0.13.2 (MDBX) tau raug luam tawm, siv qhov kev ua haujlwm siab ua haujlwm sib koom ua ke cov ntaub ntawv tseem ceeb-tus nqi. Lub libmdbx code yog muab faib raws li Apache 2.0 daim ntawv tso cai. Tag nrho cov kev khiav hauj lwm tam sim no thiab architectures tau txais kev txhawb nqa, nrog rau Lavxias Elbrus 2000. libmdbx muaj qhov tsim API rau C ++, nrog rau cov neeg nyiam kev txhawb nqa khi rau cov lus Rust, Haskell, Python, NodeJS, Ruby, Mus, Nim , Deno, Scala.
Keeb kwm, libmdbx yog qhov sib sib zog nqus rov ua haujlwm ntawm LMDB DBMS thiab zoo dua rau nws cov poj koob yawm txwv hauv kev ntseeg tau, teeb tsa thiab kev ua haujlwm. Piv rau LMDB, libmdbx muab ntau qhov tseem ceeb ntawm cov lej zoo, API ruaj khov, kev sim, thiab kev kuaj xyuas tsis siv neeg. Ib qho txiaj ntsig rau kev tshuaj xyuas qhov ncaj ncees ntawm cov qauv database nrog qee lub peev xwm rov qab tau muab. Technology-wise, libmdbx muaj ACID, muaj zog hloov serialization, thiab tsis-blocking nyeem nrog linear scaling hla CPU cores. Nws pib-compactification, tsis siv neeg database loj tswj, thiab ntau cov lus nug kwv yees tau txais kev txhawb nqa.
Cov kev hloov loj:
- Ua kom ceev GC hloov tshiab thaum rov qab / tso cov nplooj ntawv hauv cov xwm txheej nyuaj. Cov kev sim ua tsis taus yav dhau los kho cov lus tawm tswv yim hom tau raug txhim kho thiab qhib. Qhov no tau txhim kho kev sib koom ua ke (txo cov lej rov qab), thiab tseem tshem tawm qhov tsis xws luag ua rau "looping" thaum ua kev lag luam (nrog qhov rov qab los ntawm MDBX_PROBLEM yuam kev) hauv cov xwm txheej tsis tshua muaj.
- CMake tsim cov ntawv sau suav nrog C23 tus qauv.
- Ntxiv T-macro rau ua ke char/wchar_t ua haujlwm.
- Ntxiv kev txhawb nqa rau nested sau muas rau C ++ API.
- Kev hloov pauv mus rau qhov thib ob tsab ntawm cov lus qhia tshwj xeeb ("Semantic Versioning 2") tau ua tiav thiab cov ntaub ntawv xa tawm mus rau VERSION.json tau ua tiav.
- Txhawm rau tsim kev tsim tawm, ntxiv kev txhawb nqa rau SOURCE_DATE_EPOCH ib puag ncig hloov pauv. MDBX_BUILD_TIMESTAMP kev txhawb nqa tau khaws cia thiab qhov kev hloov pauv no ua ntej.
- Ntxiv lub peev xwm los qhia cov ntaub ntawv ntxiv txog libmdbx tsim los ntawm MDBX_BUILD_METADATA kev xaiv. Tam sim no cov ntaub ntawv teev tseg tsuas yog suav nrog hauv lub tsev qiv ntawv raws li tus nqi mdbx_build.metadata, thiab yav tom ntej nws tseem yuav raug siv thaum tsim cov pob khoom, thiab lwm yam.
- Ntxiv logging ntawm qhov yuam kev rov qab los ntawm API. Tam sim no, ua qhov no, nws txaus los teeb tsa qib nkag MDBX_LOG_DEBUG (rau kev txiav txim siab tsis raug rho tawm MDBX_NOTFOUND) lossis MDBX_LOG_TRACE (rau kev txiav txhua qhov yuam kev, nrog rau MDBX_RESULT_TRUE).
- Kev hloov tus cwj pwm:
- Ntxiv mdbx::cursor::get_multiple_samelength() method thiab renamed mdbx::txn::put_multiple_samelength().
- Rau C ++ API qhov sib xws, MDBX_GET_MULTIPLE kev ua haujlwm tam sim no kuj rov qab tus nqi ntawm tus yuam sij nws tus kheej.
- Rau mdbx::env::geometry loj tas mus li, hom puag tau raug hloov los ntawm unsigned size_t rau kos npe intptr_t.
- Qhov kev xaiv los siv ntdll hloov CRT tam sim no tsuas yog ua thaum qhia meej txog kev siv C ++ API.
- Xyuas kom meej tias lub cim xeeb ntawm rho tawm / rho tawm nyeem cov kev hloov pauv mus rau mdbx_txn_commit() raug tso tawm. Lub rooj sib tham API xav kom cov kev hloov pauv no raug tso tawm siv mdbx_txn_abort(), uas ua rau mdbx_txn_commit() rov qab ua qhov yuam kev hauv cov xwm txheej zoo li no yam tsis muaj kev rho tawm lawv tus kheej. Qhov no ua rau lub cim xeeb xau vim muaj kab mob hauv cov ntawv thov, ua rau kev hloov pauv tus cwj pwm.
- Siv __deprecated_enum macro yog tias txhais.
- Thaum tsim nrog CMake, tus qauv C hom lus tam sim no raug xaiv raws li CMAKE_C_STANDARD.
Tau qhov twg los: opennet.ru
