Liberazione di DBMS integrati à altu rendiment libmdbx 0.10.4 è libfpta 0.3.9

E librerie libmdbx 0.10.4 (MDBX) sò state liberate cù l'implementazione di una basa di dati di valori chjave integrata compacta di altu rendiment, è a libreria libfpta 0.3.9 (FPTA) assuciata, chì implementa una rappresentazione tabulare di dati cù indici secundarii è composti. sopra à MDBX. E duie biblioteche sò distribuite sottu licenze appruvate OSI. Tutti i sistemi operativi è l'architetture attuali sò supportati, è ancu u Russian Elbrus 2000.

Stòricamente, libmdbx hè una rielaborazione profonda di u DBMS LMDB è hè superiore à u so antenatu in affidabilità, set di funzioni è prestazioni. Comparatu à LMDB, libmdbx mette assai enfasi in a qualità di codice, a stabilità di l'API, a prova è i cuntrolli automatizati. Una utilità per verificà l'integrità di a struttura di basa di dati cù alcune capacità di ricuperazione hè furnita.

In quantu à a tecnulugia, libmdbx offre ACID, serializazione di cambiamentu forte è letture senza bloccu cù scala lineare in i core CPU. L'auto-compactificazione, a gestione automatica di a dimensione di a basa di dati è a stima di e dumande di intervallu sò supportati. Dapoi u 2016, i prughjetti sò stati finanziati da Tecnologie Positive è da u 2017 sò stati utilizati in i so prudutti.

libmdbx offre una API C++, è ancu associazioni di lingua supportate da entusiasti per Rust, Haskell, Python, NodeJS, Ruby, Go è Nim. Per libfpta, solu a descrizzione di l'API hè publicamente dispunibule in a forma di un file di header C/C++.

Innuvazioni maiò, migliure è currezzione aghjunte da a nutizia precedente u 9 di maghju:

  • Permette e custruzzioni riproducibili.
  • Fixatu un bug per via di quale, in circustanze assai rari, un loop / freeze puderia accade durante una transazzione impegnata. U prublema hè statu identificatu da i specialisti di Positive Tecnologies durante a prova interna di i so prudutti.
  • I testi sò stati migliurati è i scenarii di teste sò stati allargati per verificà tutti i stati non-isomorfi raggiungibili di l'arburu di a pagina è u cuntenutu GC in a basa di dati.
  • In l'API C ++, un "noexcept" extra hè statu riparatu, sò stati aghjunti sovraccarichi supplementari per u metudu "cursor::erase()", l'implementazione di buffer hè stata risparmiata l'usu di "std::string" per assicurà l'allineamentu. (rilevante per CLANG libstdc++).
  • Una regressione in l'algoritmu di spilling di pagina brutta (espulsione selettiva di e pagine di basa di dati cambiate) chì hè stata manifestata da un errore raru inespettatu MDBX_PROBLEM quandu cambiendu dati in transazzioni enormi hè stata eliminata.
  • Una prova di phasing hè stata realizata cù l'aghjunzione di una quantità di cuntrolli per assicurà a stabilità in casu di danni intenzionale à a basa di dati.
  • Fixati avvisi minori UndefinedBehaviorSanitizer è prublemi di scansione di Coverity.
  • Fixed a verificazione di a bandiera interna obsoleta è micca più usata "P_DIRTY" in pagine nidificate in l'imaghjini di basa di dati creati da versioni più vechje di a biblioteca.
  • In i script CMake, a ricerca di cumpunenti di compilatori necessarii per LTO (ottimisazione di u tempu di ligame) hè stata migliurata.
  • U numeru massimu di lettori simultanei hè statu aumentatu à 32767.
  • Prestazione mejorata quandu si usa Valgrind è AddressSanitizer.
  • In Windows, l'usu recursive di SRW-lock quandu travaglia in u modu MDBX_NOTLS (senza aduprà l'almacenamiento locale di filu) hè statu eliminatu, a generazione di bootid hè stata riparata se u tempu di u sistema hè cambiatu, a rilevazione WSL1 è WSL2 hè stata migliurata, è a capacità di apre una basa di dati nantu à u Pianu 9 muntatu via DrvFS hè statu aghjuntu.
  • In totale, più di 160 cambiamenti sò stati fatti à i schedari 57, ~ 5000 linee sò state aghjunte, ~ 2500 sò stati eliminati.

Vogliu ringrazià soprattuttu à a squadra di u prugettu Erigon (ecosistema Ethereum) per a so assistenza in teste in scenarii d'usu estremu. Hè significativu chì in cinque mesi da a liberazione di libmdbx v0.10.0, cù un voluminu di basa di dati di 1-2 TB in ogni installazione Erigon (usatu nantu à 7% di i nodi Ethereum), solu trè rapporti di corruzzione di basa di dati sò stati ricevuti, tutti chì hè accadutu per ragiuni esterni, è micca l'errore di u software: in dui casi a causa era fallimentu di RAM, in u terzu un errore in resetting data in una cunfigurazione specifica di u subsistema di almacenamiento cù BTRFS.

Source: opennet.ru

Add a comment