Dezyèm kandida lage pou libmdbx v1.0 apre senk ane nan devlopman.

bibliyotèk libmdbx se yon desandan LMDB ki te reamenaje siyifikativman - yon baz done kle-valè ki trè wo ak kontra enfòmèl ant.
Vèsyon aktyèl la v0.5 se yon lage teknik, ki make fini an nan nenpòt amelyorasyon ak tranzisyon an nan faz nan tès piblik final la ak estabilizasyon, ak fòmasyon an ki vin apre nan premye lage konplè nan bibliyotèk la.

LMDB se yon DBMS trè byen koni tranzaksyon entegre kle-valè ki baze sou pye bwa B+ san yo pa antre aktif, ki pèmèt yon foul de pwosesis milti-threaded travay konpetitif ak trè efikas ak yon baz done lokalman pataje (pa rezo). Nan vire, MDBX se pi vit ak plis serye pase LMDB, pandan y ap libmdbx konsève tout karakteristik prensipal yo nan zansèt li yo, tankou ASID ak lekti ki pa bloke ak dekale lineyè atravè nwayo CPU, epi tou li ajoute plizyè nouvo.

Yon deskripsyon sou diferans ki genyen ak amelyorasyon nan libmdbx parapò ak LMDB merite yon atik separe (ki planifye yo dwe pibliye sou Habré ak Medium). Isit la li apwopriye mansyone pi enpòtan ak aparan:

  • Fondamantalman, yo peye plis atansyon sou bon jan kalite kòd, tès ak chèk otomatik yo.
  • Siyifikativman plis kontwòl pandan operasyon an, soti nan tcheke paramèt nan kontwòl kontab entèn nan estrikti baz done.
  • Oto-konpaktifikasyon ak jesyon otomatik gwosè baz done.
  • Yon fòma baz done sèl pou asanble 32-bit ak 64-bit.
  • Estimasyon gwosè echantiyon pa chenn (estimasyon rechèch ranje).
  • Sipò pou kle de fwa pi gwo ke krèp ak gwosè paj baz done itilizatè a chwazi.

Kandida libmdbx la se rezilta desizyon an (gade anba a) pou separe pwojè MDBX ak MithrilDB nan mwa Out 2019. An menm tan, libmdbx deside elimine dèt teknik maksimòm (rasyonèl) ak estabilize bibliyotèk la. An reyalite, 2-3 fwa plis yo te fè nan direksyon deziyen an pase sa te okòmansman estime ak planifye:

  • Sipò pou Mac OS ak platfòm dezyèm nivo yo te aplike: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Yo ka ajoute sipò AIX ak HP-UX jan sa nesesè.
  • Yo te dezenfekte kòd la lè l sèvi avèk Dezenfektan Konpòtman Undefined ak Dezenfektan Adrès, tout avètisman lè bati ak -Wpedantic, tout avètisman Coverity Static Analyzer, elatriye yo te elimine.
  • Mizajou Deskripsyon API.
  • Amalgam nan kòd sous pou fasilite nan entegre.
  • CMake sipò.
  • Sipò pou tranzaksyon enbrike.
  • Sèvi ak bootid pou detèmine si OS la rekòmanse (sispann baz done sal).
  • Konte fen-a-fen nan paj mete ajou/ansyen ak enfòmasyon pwolonje sou tranzaksyon yo.
  • Opsyon MDBX_ACCEDE pou konekte ak yon baz done ki deja louvri nan mòd konpatib.
  • Sèvi ak OFD bloke lè disponib.
  • Sovgad cho nan tiyo.
  • Espesyalize optimize algorithm klasman entèn (jiska 2-3 fwa pi vit pase qsort() ak jiska 30% pi vit pase std::sort ()).
  • Longè maksimòm kle a te ogmante.
  • Kontwòl otomatik nan lekti davans (estrateji kachèt dosye baz done nan memwa).
  • Plis agresif ak pi vit oto-konpaktifikasyon.
  • Yon estrateji pi pi bon pou fusion B + paj pye bwa.
  • Kontwòl sistèm dosye ki pa lokal yo (NFS, Samba, elatriye) pou anpeche domaj baz done si yo itilize mal.
  • Yo te elaji seri tès yo.

Devlopman "pwochen" vèsyon libmdbx la ap kontinye kòm yon pwojè separe MithrilDB, pandan y ap vektè devlopman nan vèsyon "aktyèl" MDBX ki vize a konjelasyon seri a karakteristik ak estabilize li. Desizyon sa a te pran pou twa rezon:

  • Totalman enkonpatib: MithrilDB mande pou yon fòma dosye baz done diferan (enkonpatib) ak yon API diferan (enkonpatib) pou aplike tout karakteristik planifye.
  • Nouvo kòd sous: Yo mete kòd sous MithrilDB la lisansye endepandan de LMDB, epi pwojè a li menm gen plan pou l pibliye anba yon lisans diferan (apwouve pa OSWA SI lisans Apache 2.0men se pa Fondasyon OpenLDAP).
  • Separasyon an evite potansyèl konfizyon, bay plis sètitid, epi asire ke pwojè yo gen yon chemen endepandan pou pi devan.

MithrilDB, tankou MDBX, tou baze sou pye bwa B+ epi li pral prezante tou pèfòmans trè wo, pandan y ap elimine yon kantite dezavantaj fondamantal nan MDBX ak LMDB. An patikilye, pwoblèm nan nan "long lekti", ki manifeste tèt li kòm "anfle" nan baz done a akòz lefèt ke pwosesis fatra bloke pa tranzaksyon lekti long, yo pral elimine. Nouvo karakteristik MithrilDB yo enkli:

  • sipò pou mete baz done a sou plizyè medya heterogeneous: HDD, SSD ak memwa ki pa temèt.
  • estrateji pi bon pou "valè" ak "valè ki ba", pou done "cho", "cho" ak "frèt".
  • lè l sèvi avèk Merkle tree pou kontwole entegrite baz done a.
  • itilizasyon opsyonèl nan WAL ak pèfòmans siyifikativman pi wo nan senaryo ekri entansif ak garanti entegrite done.
  • Lazy ratrape fikse done sou disk.

Sous: linux.org.ru

Add nouvo kòmantè