Pagkahuman sa lima ka tuig nga pag-uswag, ang ikaduha nga kandidato sa pagpagawas sa libmdbx 1.0 gipatik

Magamit alang sa pagsulay sa ikaduhang kandidato alang sa pagpagawas sa librarya libmdbx uban sa pagpatuman sa usa ka high-performance, compact embedded key-value database. Ang kasamtangan nga bersyon (0.5) usa ka teknikal nga pagpagawas, nagtimaan sa pagkompleto sa bisan unsang mga pag-uswag ug ang pagbalhin ngadto sa yugto sa katapusan nga pagsulay ug pagpalig-on sa publiko, uban ang sunod-sunod nga pagporma sa unang bug-os nga pagpagawas sa librarya. libmdbx code giapod-apod sa lisensyado ubos sa OpenLDAP Public License.

Ang librarya sa MDBX usa ka hinungdanon nga giusab nga tinidor gikan sa LMDB β€” transactional embedded DBMS sa "key-value" nga klase base sa kahoy B+ nga walay proactive logging, nga nagtugot sa multi-threaded nga mga proseso sa pagtrabaho nga competitive ug episyente sa usa ka locally shared (dili network) database. Sa baylo, ang MDBX mas paspas ug mas kasaligan kay sa LMDB, ug sa samang higayon nagpabilin ang tanang importanteng bahin sa katigulangan niini, sama sa ASID ug dili pag-block nga mga pagbasa nga adunay linear scaling sa mga cores sa CPU.

Ang labing hinungdanon nga kalainan tali sa MDBX ug LMDB:

  • Sa panguna, mas daghang pagtagad ang gihatag sa kalidad sa code, pagsulay ug awtomatik nga pagsusi.
  • Mahinungdanon nga dugang nga kontrol sa panahon sa operasyon, gikan sa pagsusi sa mga parameter hangtod sa internal nga pag-audit sa mga istruktura sa database.
  • Auto-compctification ug awtomatikong pagdumala sa gidak-on sa database.
  • Usa ka format sa database alang sa 32-bit ug 64-bit nga mga asembliya.
  • Pagbanabana sa gidaghanon sa sample pinaagi sa mga han-ay (range query estimation).
  • Suporta alang sa mga yawe nga doble ang kadako sa mga pancake ug gidak-on sa panid sa database nga mapili sa user.

Ang kandidato sa pagpagawas sa libmdbx mao ang resulta sa usa ka desisyon nga gihimo kaniadtong Agosto 2019 aron ibulag ang mga proyekto sa MDBX ug MithrilDB. Sa samang higayon, nakahukom ang libmdbx nga wagtangon ang (makataronganon) kinatas-ang teknikal nga utang ug i-stabilize ang library. Sa tinuud, 2-3 ka beses nga labi pa ang nahimo sa gitudlo nga direksyon kaysa sa una nga gibanabana ug giplano:

  • Gipatuman ang suporta alang sa macOS ug second-tier nga mga plataporma: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Ang suporta sa AIX ug HP-UX mahimong idugang kung gikinahanglan.
  • Ang code gi-sanitize gamit ang Undefined Behavior Sanitizer ug Address Sanitizer, ang tanan nga mga pasidaan kung magtukod gamit ang "-Wpedantic", tanan nga mga pasidaan sa Coverity Static Analyzer, ug uban pa.
  • Update Mga paghulagway sa API.
  • Paghiusa (paghiusa) sa source code para sa kasayon ​​sa pag-embed.
  • suporta sa CMake.
  • Suporta alang sa nested nga mga transaksyon.
  • Paggamit sa bootid aron mahibal-an kung ang OS nag-reboot (hugaw nga paghunong sa database).
  • End-to-end nga pag-ihap sa updated/daan nga mga panid ug gipalapdan nga impormasyon sa transaksyon.
  • Opsyon MDBX_ACCEDE para sa pagkonektar sa usa ka bukas na nga database sa compatible mode.
  • Paggamit Pag-block sa OFD kon anaa.
  • Mainit nga backup sa tubo.
  • Espesyalista nga na-optimize nga internal sorting algorithm (hangtod sa 2-3 ka beses nga mas paspas kaysa "qsort ()" ug hangtod sa 30% nga mas paspas kaysa "std:: sort ()").
  • Ang kinatas-ang gitas-on sa yawe nadugangan.
  • Awtomatikong pagkontrol sa pagbasa sa unahan (database file caching nga estratehiya sa memorya).
  • Mas agresibo ug mas paspas nga auto-compactification.
  • Usa ka mas maayo nga estratehiya alang sa paghiusa sa mga panid sa B+ tree.
  • Pagkontrol sa dili lokal nga mga sistema sa file (NFS, Samba, ug uban pa) aron malikayan ang kadaot sa database kung gigamit nga dili husto.
  • Ang hugpong sa mga pagsulay gipalapdan.

Ang pagpalambo sa "sunod" nga bersyon sa libmdbx magpadayon isip usa ka bulag nga proyekto MithrilDB, samtang ang development vector sa "kasamtangan" nga bersyon sa MDBX gitumong sa pagyelo sa feature set ug pagpalig-on niini. Kini nga desisyon gihimo tungod sa tulo ka rason:

  • Hingpit nga dili magkauyon: Ang MithrilDB nanginahanglan usa ka lahi (dili magkatugma) nga format sa file sa database ug usa ka lahi nga (dili magkatugma) nga API aron ipatuman ang tanan nga giplano nga mga bahin.
  • Bag-ong source code: Ang MithrilDB source code gihimong lisensyado nga independente gikan sa LMDB, ug ang proyekto mismo giplanohan nga ipatik ubos sa laing lisensya (aprobahan ni O KUNG KON Ang lisensya sa Apache 2.0, dili OpenLDAP Public License).
  • Ang panagbulag naglikay sa potensyal nga kalibog, nagpaila sa dugang nga kasiguruhan ug nagsiguro sa usa ka independente nga agianan alang sa mga proyekto.

Ang MithrilDB, sama sa MDBX, gibase usab sa kahoy B+ ug magpakita usab sa hilabihan ka taas nga pasundayag, samtang giwagtang ang daghang sukaranang mga disbentaha sa MDBX ug LMDB. Sa partikular, ang problema sa "taas nga pagbasa", nga nagpakita sa iyang kaugalingon nga "paghubag" sa database tungod sa kamatuoran nga ang pagproseso sa basura gibabagan sa dugay nga mga transaksyon sa pagbasa, mapapas. Ang mga bag-ong bahin sa MithrilDB naglakip sa:

  • Suporta sa pagbutang sa database sa daghang heterogeneous media: HDD, SSD ug non-volatile memory.
  • Labing maayo nga mga estratehiya alang sa "bililhon" ug "ubos nga bili", alang sa "init", "init" ug "bugnaw" nga datos.
  • Gigamit ang Merkle tree aron mamonitor ang integridad sa database.
  • Opsyonal nga paggamit sa WAL ug labi nga gipaayo nga pasundayag sa mga senaryo nga kusog sa pagsulat nga adunay mga garantiya sa integridad sa datos.
  • Tapolan nga catch-up sa paghimo sa data sa mga disk.

Source: opennet.ru

Idugang sa usa ka comment