Lanzamento do DBMS integrado de alto rendemento libmdbx 0.11.3

A biblioteca libmdbx 0.11.3 (MDBX) lanzouse coa implementación dunha base de datos de clave-valor incorporada compacta de alto rendemento. O código libmdbx está licenciado baixo a licenza pública OpenLDAP. Todos os sistemas operativos e arquitecturas actuais son compatibles, así como o ruso Elbrus 2000. A finais de 2021, libmdbx utilízase como backend de almacenamento nos dous clientes de Ethereum máis rápidos: Erigon e o novo "Shark", que, segundo os datos dispoñibles. información, é o cliente de Ethereum de maior rendemento.

Historicamente, libmdbx é un profundo redeseño do DBMS LMDB e supera o seu proxenitor en termos de fiabilidade, conxunto de funcións e rendemento. En comparación con LMDB, libmdbx pon moito énfase na calidade do código, a estabilidade da API, as probas e as comprobacións automatizadas. Ofrécese unha utilidade para comprobar a integridade da estrutura da base de datos con algunhas opcións de recuperación.

En canto á tecnoloxía, libmdbx ofrece ACID, serialización de cambios fortes e lecturas sen bloqueo con escalado lineal nos núcleos da CPU. Admítense a compactación automática, a xestión automática do tamaño da base de datos e a estimación de consulta de intervalos. Desde 2016, o proxecto está financiado por Positive Technologies e utilízase nos seus produtos desde 2017.

libmdbx ofrece unha API de C++, así como ligazóns de linguaxe compatibles con entusiastas para Rust, Haskell, Python, NodeJS, Ruby, Go e Nim.

Principais novidades, melloras e correccións engadidas desde a noticia anterior do 11 de outubro:

  • A API de C++ considérase lista para o seu uso.
  • A actualización dos datos de GC ao realizar grandes transaccións acelerouse significativamente, o que é especialmente importante cando se usa libmdbx no ecosistema de Ethereum.
  • A sinatura interna do formato da base de datos foi modificada para admitir a actualización automática, que é totalmente transparente para os usuarios. Isto permítelle eliminar as mensaxes falsas positivas sobre a corrupción da base de datos cando se usan versións desactualizadas da biblioteca para ler transaccións rexistradas polas versións actuais.
  • Engadíronse as funcións mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() e mdbx_env_get_syncbytes(). Engadiuse compatibilidade para a operación MDBX_SET_UPPERBOUND.
  • Elimináronse todas as advertencias ao construír con todos os compiladores compatibles en modos C++ 11/14/17/20. A compatibilidade cos compiladores legados está garantida: clang a partir da 3.9, gcc a partir da 4.8, incluíndo a montaxe mediante cdevtoolset-9 para CentOS/RHEL 7.
  • Corrixiuse a posibilidade de que se producise un conflito de metapáxina despois de cambiar manualmente a unha metapáxina específica mediante a utilidade mdbx_chk.
  • Corrixiuse un erro MDBX_PROBLEM inesperado que se devolvía ao sobrescribir as metapáxinas antigas.
  • Corrixiuse o devolver MDBX_NOTFOUND en caso de coincidencia inexacta ao procesar unha solicitude MDBX_GET_BOTH.
  • Corrixiuse un erro de compilación en Linux na ausencia de ficheiros de cabeceira con descricións de interfaces co núcleo.
  • Corrixiuse un conflito entre a bandeira interna MDBX_SHRINK_ALLOWED e a opción MDBX_ACCEDE.
  • Elimináronse varias comprobacións de afirmacións innecesarias.
  • Corrixiuse o retorno inesperado de MDBX_RESULT_TRUE da función mdbx_env_set_option().
  • En total, realizáronse máis de 90 cambios en 25 ficheiros, engadíronse ~1300 liñas e elimináronse ~600.

Fonte: opennet.ru

Engadir un comentario