Lanzamento do DBMS incorporado libmdbx 0.13

Publicouse a versión de libmdbx 0.13.1 (MDBX), que implementa unha base de datos de valores-clave integrada compacta e de alto rendemento. O código libmdbx distribúese baixo a licenza Apache 2.0. Todos os sistemas operativos e arquitecturas actuais son compatibles, así como o ruso Elbrus 2000. libmdbx ofrece unha API desenvolvida para C++, así como ligazóns compatibles con entusiastas ás linguaxes Rust, Haskell, Python, NodeJS, Ruby, Go, Nim. , Deno, Scala.

Historicamente, libmdbx é unha profunda reelaboración do DBMS LMDB e é superior ao seu antepasado en fiabilidade, conxunto de funcións e rendemento. En comparación con LMDB, libmdbx fai moita é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 capacidades 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.

Principais cambios:

  • Cambiando a licenza de código de OpenLDAP Public License a Apache 2.0.
  • Ampliación da API do cursor con operacións de posicionamento máis cómodas e obvias similares ás condicións <, <=, ==, >=, > tanto para as claves como para os pares clave-valor. Engadíronse funcións mdbx_cursor_unbind() e mdbx_txn_release_all_cursors() para unha xestión flexible do cursor en escenarios de reutilización para reducir a sobrecarga. Funcións mdbx_cursor_scan() e mdbx_cursor_scan_from() para analizar táboas usando un predicado de función e reducindo a sobrecarga asociada.
  • Reelaborar os cursores para unificar o comportamento, facer o código máis regular e reducir o número de ramas e operacións da máquina.
  • Transferir a funcionalidade da utilidade mdbx_chk á biblioteca en forma da función mdbx_env_chk() para comprobar a integridade da estrutura da base de datos, incluída a implicación da lóxica da aplicación.
  • Opción MDBX_opt_gc_time_limit para un control máis flexible do tempo dedicado á procura de secuencias de páxinas libres adxacentes no GC.
  • Redución significativa dos custos xerais para o lanzamento de transaccións en escenarios cun gran número de mans DBI, debido á inicialización atrasada/preguiceira dos elementos da táboa de servizos. Isto inclúe un mecanismo para admitir conxuntos escasos de mans DBI, controlado pola opción de compilación MDBX_ENABLE_DBI_SPARSE, que está activada por defecto.
  • Reducir os custos xerais para abrir as mans de DBI. Incluíndo un mecanismo para o lanzamento atrasado e soporte para un camiño de apertura rápida sen usar bloqueos, controlado pola opción de compilación MDBX_ENABLE_DBI_LOCKFREE, que está activada por defecto.
  • Soporte para "aparcar" as transaccións de lectura e expulsalas para reciclar instantáneas antigas de MVCC e evitar problemas causados ​​pola pausa do procesamento do lixo. O mecanismo para aparcar e anticipar as transaccións estacionadas é un complemento e unha alternativa máis fácil de usar á devolución de chamada de Handle-Slow-Readers. Por comodidade, as funcións mdbx_txn_park() e mdbx_txn_unpark() teñen argumentos adicionais que che permiten solicitar o "desestacionamento" automático das transaccións estacionadas e o reinicio das transaccións desafiuzadas. Engadíronse as opcións -d e -p correspondentes á utilidade mdbx_copy.
  • Soporte para restaurar un ambiente de base de datos aberto nun proceso fillo despois dunha bifurcación/división de proceso usando mdbx_env_resurrect_after_fork().
  • Soporte para renomear táboas usando mdbx_dbi_rename() e mdbx_dbi_rename2(). Engadiuse a función mdbx_enumerate_tables() para obter información sobre as táboas de usuarios con nome.
  • Modo operativo MDBX_NOSTICKYTHREADS en lugar de MDBX_NOTLS para simplificar a integración con fíos/fíos lixeiros da súa multiplexación xunto coas transaccións en fíos do sistema operativo.
  • Para identificar a base de datos, engadiuse un UUID, dispoñible no campo mi_dxbid da estrutura MDBX_envinfo, obtido mediante mdbx_env_info_ex(). Implementouse a obtención de información sobre a base de datos sen abrila mediante mdbx_preopen_snapinfo().
  • Soporte para funcións de rexistro de devolución de chamada sen a funcionalidade vprintf(), o que facilita moito o uso de conexións de rexistro a outras linguaxes de programación.
  • Engadindo as funcións mdbx_txn_copy2pathname() e mdbx_txn_copy2fd() á API.
  • Reestruturación do código fonte con refactorización.
  • Usando o termo "táboa" en lugar de "subDb".
  • Desactivando as opcións MDBX_COALESCE e MDBX_NOTLS. Substituíndo a opción de montaxe MDBX_USE_VALGRIND polo ENABLE_MEMCHECK xeralmente aceptado.

Fonte: opennet.ru

Engadir un comentario