SISU libmdbx 0.13 väljaanne

Välja on antud libmdbx 0.13.1 (MDBX) teegi versioon, mis sisaldab kõrgtehnoloogilist kompaktset sisseehitatud võtme-väärtuse andmebaasi. libmdbx kood on litsentseeritud Apache 2.0 all. Toetatakse kõiki aktiivseid operatsioonisüsteeme ja arhitektuure, sealhulgas Venemaa Elbrus 2000. libmdbx pakub arendatud API-d C++-le, samuti entusiastide poolt toetatavaid sidemeid Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno ja Scala keeltega.

Ajalooliselt on libmdbx LMDB andmebaasi sügav töötlemine, ületades oma eelkäijat usaldusväärsuse, võimaluste ja jõudluse poolest. LMDB-ga võrreldes pööratakse libmdbx-is suurt tähelepanu koodi kvaliteedile, API stabiilsele toimimisele, testimisele ja automaatsetele kontrollidele. Pakutakse andmebaasi struktuuri terviklikkuse kontrollimise utiliiti, millel on mõned taastamisvõimalused. Tehnoloogiliselt pakub libmdbx ACID-i, ranget muudatuste serialiseerimist ja blokeerimata lugemist, millega saab lineaarset koormuse hajutamist CPU tuumade vahel. Toetatakse automaatset kompaktsifitseerimist, automaatset andmebaasi suuruse haldamist ja valikute mahtude hindamist vahemike järgi (range query estimation).

Peamised muudatused:

  • Koodi litsentsi muutmine OpenLDAP Public License'ilt Apache 2.0-ile.
  • Kursorite API laiendamine mugavamate ja selgemate positsioneerimise toimingutega analoogehtedele <, <=, ==, >=, > nii võtmete kui ka võtme-väärtuse paaride jaoks. Lisatud funktsioonid mdbx_cursor_unbind() ja mdbx_txn_release_all_cursors() kursorite paindlikuks haldamiseks taaskasutamise stsenaariumides kulude vähendamiseks. Funktsioonid mdbx_cursor_scan() ja mdbx_cursor_scan_from() tabelite skaneerimiseks funktsionaalse predikaadi kasutamisega ning seotud kulude vähendamiseks.
  • Kursorite ümberkujundamine käitumise ühtlustamiseks, koodi regulaarsemaks muutmiseks, otsuste arvu vähendamiseks ja masinoperatsioonide vähendamiseks.
  • mdbx_chk utiliidi funktsionaalsuse viimine sisse raamatukogusse mdbx_env_chk() funktsiooni kujul andmebaasi struktuuri terviklikkuse kontrollimiseks, sealhulgas rakenduse loogika kaasamine.
  • M optsioon MDBX_opt_gc_time_limit paindlikumaks kontrollimiseks aega, mis kulutatakse järjestikuste vabade lehtede leidmisele GC-s.
  • Oluliselt vähenenud tehingute käivitamise kulu DBI-handle'itega seotud stsenaariumides, tänu viivitusele/laisale initsialiseerimisele teenuste tabelite elementides. Sealhulgas mehhanism hõredate DBI-handle'ite komplektide toetamiseks, mida juhib MDBX_ENABLE_DBI_SPARSE ehitusvalik, mis on vaikevalikuna lubatud.
  • Kulude vähenemine DBI-handle'ite avamisel. Sealhulgas viivitatud vabastamise mehhanism ja kiire avamise toetamine ilma lukustamiseta, mida juhib MDBX_ENABLE_DBI_LOCKFREE ehitusvalik, mis on vaikevalikuna lubatud.
  • Toetatakse loetlevate tehingute "parkimist" nende eemaldamise abil vana MVCC-pildistamise töötlemise jaoks ning probleemi vältimist, mis tulenevad prügikogumise töötlemise peatamisest. Parkimise ja eemaldamise mehhanism on nii täiendus kui ka lihtsam alternatiiv Handle-Slow-Readers funktsioonile. Mugavuse huvides on funktsioonidel mdbx_txn_park() ja mdbx_txn_unpark() täiendavad argumendid, mis võimaldavad taotleda parkitud tehingute automaatset "lahkumist" ja eemaldatud tehingute kordus käivitamist. Utiliidile mdbx_copy on lisatud vastavad valikud -d ja -p.
  • Toetatakse avatud andmebaasi töö keskkonna taastamist lapsprotsessis pärast protsessi hargnemist/jaotust mdbx_env_resurrect_after_fork() abil.
  • Toetatakse tabelite ümbernimetamise funktsioone mdbx_dbi_rename() ja mdbx_dbi_rename2(). Lisatud funktsioon mdbx_enumerate_tables(), et saada teavet nimetatud kasutaja tabelite kohta.
  • MDBX_NOSTICKYTHREADS töörežiim, mis asendab MDBX_NOTLS, et lihtsustada integreerimist kergete voogude/niitidega, neid multiplexerides koos operatsioonisüsteemi voogude tehingutega.
  • Andmebaasi tuvastamiseks on lisatud UUID, mis on saadaval MDBX_envinfo struktuuri mi_dxbid välja n. mdbx_env_info_ex() kaudu. Teave andmebaasi kohta on saadud selle avamata mdbx_preopen_snapinfo() abil.
  • Tagasikutsumise logimise funktsioonide tugi ilma vprintf() funktsionaalsuseta, mis lihtsustab logimist teiste programmeerimiskeelte sidumisel.
  • Mdbx_txn_copy2pathname() ja mdbx_txn_copy2fd() funktsioonide lisamine API-sse.
  • Algkoodi ümberstruktureerimine refaktoreerimisega.
  • Termini „tabel“ kasutamine asemel „subDb“.
  • MDBX_COALESCE ja MDBX_NOTLS valikute deklareerimine aegunuks. Kogumise valiku MDBX_USE_VALGRIND asendamine üldtunnustatud ENABLE_MEMCHECK-iga.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster