Tso tawm ntawm kev ua haujlwm siab embedded DBMS libmdbx 0.10.4 thiab libfpta 0.3.9

Lub tsev qiv ntawv libmdbx 0.10.4 (MDBX) tau tso tawm nrog kev ua haujlwm ntawm kev ua haujlwm siab compact embedded key-value database, thiab cov tsev qiv ntawv cuam tshuam libfpta 0.3.9 (FPTA), uas siv ib qho kev sawv cev ntawm cov ntaub ntawv nrog cov kev ntsuas theem nrab thiab sib xyaw. nyob rau saum MDBX. Ob lub tsev qiv ntawv raug faib raws li OSI cov ntawv tso cai pom zoo. Tag nrho cov kev khiav hauj lwm tam sim no thiab architectures tau txais kev txhawb nqa, nrog rau Lavxias Elbrus 2000.

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. Txij li xyoo 2016, cov haujlwm tau txais nyiaj txiag los ntawm Cov Tshuab Zoo Zoo thiab txij li xyoo 2017 tau siv rau hauv nws cov khoom.

libmdbx muaj C ++ API, nrog rau kev txhawb nqa cov lus sib txuas rau Rust, Haskell, Python, NodeJS, Ruby, Go, thiab Nim. Rau libfpta, tsuas yog API cov lus piav qhia yog muaj nyob rau hauv daim ntawv ntawm C / C ++ header file.

Kev tsim kho tshiab, kev txhim kho thiab kev kho tshiab ntxiv txij li cov xov xwm dhau los rau lub Tsib Hlis 9:

  • Ua kom rov tsim dua tshiab.
  • Kho kab mob vim qhov uas, nyob rau hauv qhov tsis tshua muaj tshwm sim, lub voj / khov tuaj yeem tshwm sim thaum lub sijhawm ua lag luam. Qhov teeb meem tau txheeb xyuas los ntawm Positive Tecnologies cov kws tshaj lij thaum lub sij hawm kuaj sab hauv ntawm lawv tus kheej cov khoom.
  • Cov kev ntsuam xyuas tau raug txhim kho thiab cov xwm txheej sim tau nthuav dav los xyuas tag nrho cov tsis muaj isomorphic xeev ntawm nplooj ntoo thiab GC cov ntsiab lus hauv cov ntaub ntawv.
  • Hauv C ++ API, ib qho ntxiv "noexcept" tau raug kho, cov overloads ntxiv tau ntxiv rau "cursor::erase()" txoj kev, qhov kev siv ntawm buffers tau zam kev siv "std::string" los xyuas kom meej qhov kev sib tw. (tseem ceeb rau CLANG libstdc++).
  • Ib qho kev rov qab los ntawm nplooj ntawv qias neeg spilling algorithm (xaiv ejection ntawm cov nplooj ntawv hloov pauv) uas tau tshwm sim los ntawm qhov yuam kev tsis tshua xav txog MDBX_PROBLEM thaum hloov cov ntaub ntawv hauv kev lag luam loj tau raug tshem tawm.
  • Ib qho kev sim phasing tau ua tiav nrog qhov sib ntxiv ntawm ntau qhov kev kuaj xyuas kom muaj kev ruaj ntseg nyob rau hauv cov xwm txheej ntawm txhob txwm ua puas rau cov ntaub ntawv.
  • Kho cov lus ceeb toom me me UndefinedBehaviorSanitizer thiab Coverity Scan teeb meem.
  • Tsau xyuas qhov qub thiab tsis siv tus chij sab hauv "P_DIRTY" nyob rau hauv cov nplooj ntawv nested hauv database dluab tsim los ntawm cov laus versions ntawm lub tsev qiv ntawv.
  • Nyob rau hauv CMake scripts, kev tshawb fawb rau compiler Cheebtsam xav tau rau LTO (link-time optimization) tau txhim kho.
  • Qhov siab tshaj plaws ntawm cov neeg nyeem ib txhij tau nce mus rau 32767.
  • Txhim kho kev ua tau zoo thaum siv Valgrind thiab AddressSanitizer.
  • Ntawm Windows, kev siv rov ua dua ntawm SRW-xauv thaum ua haujlwm hauv MDBX_NOTLS hom (tsis siv xov hauv zos cia) tau raug tshem tawm, bootid tiam tau raug kho yog tias lub sijhawm hloov pauv, WSL1 thiab WSL2 nrhiav tau raug txhim kho, thiab muaj peev xwm ua tau. qhib lub database ntawm Plan 9 mounted ntawm DrvFS tau ntxiv.
  • Nyob rau hauv tag nrho, ntau tshaj 160 hloov tau ua rau 57 cov ntaub ntawv, ~ 5000 kab tau ntxiv, ~ 2500 raug tshem tawm.

Kuv xav ua tsaug rau Erigon qhov project team (Ethereum ecosystem) rau lawv cov kev pabcuam hauv kev sim hauv cov xwm txheej siv huab. Nws yog ib qho tseem ceeb uas nyob rau hauv tsib lub hlis txij li kev tso tawm ntawm libmdbx v0.10.0, nrog cov ntaub ntawv ntim ntawm 1-2 TB hauv txhua qhov kev teeb tsa Erigon (siv ntawm 7% ntawm Ethereum nodes), tsuas yog peb daim ntawv qhia txog kev noj nyiaj txiag database tau txais, tag nrho ntawm uas tshwm sim vim yog sab nraud, thiab tsis yog software yuam kev: nyob rau hauv ob qhov teeb meem yog vim li cas RAM tsis ua hauj lwm, nyob rau hauv lub thib peb qhov yuam kev nyob rau hauv reseting cov ntaub ntawv nyob rau hauv ib tug tshwj xeeb configuration ntawm lub subsystem cia siv BTRFS.

Tau qhov twg los: opennet.ru

Ntxiv ib saib