Liberazione di DBMS libmdbx 0.11.7. Sposta u Sviluppu à GitFlic Dopu à Lockdown in GitHub

A libreria libmdbx 0.11.7 (MDBX) hè stata liberata cù l'implementazione di una basa di dati di valori chjave integrata compacta di altu rendiment. U codice libmdbx hè distribuitu sottu a Licenza Publica OpenLDAP. Tutti i sistemi operativi è l'architetture attuali sò supportati, è ancu u Russian Elbrus 2000.

A liberazione hè notevule per a migrazione di u prugettu à u serviziu GitFlic dopu chì l'amministrazione di GitHub hà eliminatu libmdbx cù una mansa di altri prughjetti u 15 d'aprile di u 2022 senza alcun avvisu o spiegazione, mentre chì simultaneamente bluccà l'accessu à parechji sviluppatori assuciati cù cumpagnie cadute. sottu sanzioni di i Stati Uniti. Da u puntu di vista di l'utilizatori, tutte e pagine, repository è forks di u prugettu si sò subbitu in una pagina "404", senza a pussibilità di alcuna cumunicazione è scuperta i motivi.

Sfurtunatamente, quasi tutti i prublemi sò stati persi, in quale ci era parechje dumande cù risposte dettagliate, è ancu assai discussioni. A perdita di sta infurmazione hè l'unicu dannu ughjettivu chì l'amministrazione di GitHub hà sappiutu infliggià à u prugettu. Copie parziali di e discussioni restanu dispunibili in l'archiviu archive.org.

A perdita di scripts CI integrati è infrastruttura (dispunibule per i prughjetti OpenSource for free) ci furzò à fà rivisione, unificazione è eliminazione di un picculu debitu tecnicu. Avà CI hè stata restaurata quasi in a stessa misura, cù l'eccezzioni di e custruzzioni è e teste di prova per tutte e varianti BSD è Solaris. Di sicuru, dopu à l'azzioni di GitHub, ùn sò micca ricevuti chiarimenti o notificazioni, fora di un ricordu di a necessità di pagamentu è di i tentativi di scrive soldi.

Dapoi l'ultime nutizie nantu à a liberazione di libmdbx v0.11.3, in più di ricuperà da l'azzioni di GitHub, vale a pena nutà e seguenti miglioramenti è correzioni:

  • Aggiunta una soluzione per un effettu / difettu di incoherenza rilevatu in a pagina cumminata è a cache di buffer in u kernel Linux. In i sistemi induve a pagina è i cache di buffer sò veramente unificati, ùn hà micca sensu chì u kernel perdi a memoria nantu à duie copie di dati quandu si scrive à un schedariu digià mappatu in memoria. Dunque, i dati chì sò scritti diventanu visibili via mapping di memoria prima chì a chjama di u sistema di scrittura () finisci, ancu s'ellu ùn hè ancu statu scrittu à u discu.

    In u tutale, l'altru cumpurtamentu ùn hè micca raziunale, perchè cù una fusione ritardata, avete sempre à catturà chjusi per listi di pagine, copià dati, o aghjustate PTE. Per quessa, a regula di coerenza ùn hè micca scritta dapoi u 1989, quandu u buffer cache unificatu apparsu in SRV4. Dunque, truvà fallimenti strani in scenarii di produzzione libmdbx occupati necessitava assai travagliu. Prima, riproducendu u prublema, dopu cunfirmendu l'ipotesi è cuntrollà i migliori.

    Avà pudemu dì cun fiducia chì u prublema hè stata identificata in modu affidabile, localizatu è eliminatu in modu affidabile, malgradu a cumplessità è a specificità di u scenariu di riproduzione. Inoltre, u travagliu di u mecanismu di bypass hè statu cunfirmatu da unu di i sviluppatori di Erigon (Ethereum), in u so casu, nantu à a custruzzione di debug, a prutezzione attivata cum'è una regressione per via di una verificazione di affirmazioni extra.

    Hè da nutà chì in u cuntestu di l'usu generalizatu di libmdbx in i prughjetti di travagliu, hè fundamentalmente più impurtante per assicurà un funziunamentu affidabile, piuttostu chè di scopre "hè un bug o una funzione" è se una tale coerenza pò esse affidata, soprattuttu micca truvà e cause di incoherenza in u kernel Linux. Dunque, quì si parla di risolve un prublema chì puderia affettà l'utilizatori.

  • Fixed una regressione di l'errore EXDEV (Cross-device link) quandu copiava una basa di dati senza compactificazione in un altru sistema di fugliale, sia per l'API sia cù l'utilità mdbx_copy.
  • Kris Zyp hà implementatu u supportu per libmdbx in Deno. Kai Wetlesen hà imballatu RPM per Fedora. David Bouyssié hà implementatu i vincoli per Scala.
  • Trattamentu fissu di u valore stabilitu da l'opzione MDBX_opt_rp_augment_limit quandu si tratta transazzioni enormi in grandi basa di dati. Nanzu, per via di un bug, l'azzioni innecessarii puderanu esse realizatu, chì qualchì volta affettanu u rendiment in implementazioni Ethereum (Erigon / Akula / Silkworm) è i prughjetti Binance Chain.
  • Molti bugs sò stati riparati, cumprese quelli in l'API C++. Risolti parechji prublemi di costruzione in cunfigurazioni rare è esotiche. Una lista completa di tutte e migliorie significative hè dispunibule in u ChangeLog.
  • Un totale di 185 cambiamenti sò stati fatti à 89 schedarii, ≈3300 linee sò state aghjunte, ≈4100 sò stati eliminati. Sguassatu più soprattuttu per via di a purga di i fugliali tecnulugichi digià inutili associati à GitHub è servizii dipendenti.

Stòricamente, libmdbx hè un ridisegnu prufondu di u DBMS LMDB è supera u so progenitore in termini di affidabilità, set di funzioni è prestazioni. Comparatu à LMDB, libmdbx mette assai enfasi in a qualità di u codice, a stabilità di l'API, a prova è i cuntrolli automatizati. Una utilità per verificà l'integrità di a struttura di a basa di dati hè furnita cù alcune opzioni di ricuperazione.

Tecnulugichi, libmdbx offre ACID, serializazione di cambiamentu strettu, è letture senza bloccu cù scala lineare in i core CPU. L'autocompactificazione, a gestione automatica di a dimensione di a basa di dati è a stima di e dumande di intervallu sò supportati. Dapoi u 2016, u prugettu hè stata finanzata da Tecnulugia Positiva è hè stata utilizata in i so prudutti da u 2017.

libmdbx offre una API C++ sviluppata, è ancu associazioni supportate da entusiasti à Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Source: opennet.ru

Add a comment