Despois de cinco anos de desenvolvemento, publicouse a segunda versión candidata de libmdbx 1.0

Dispoñible для тестирования второй кандидат в релизы библиотеки libmdbx с реализацией высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение. Текущая версия (0.5) является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки. Код libmdbx distribuído por под лицензией OpenLDAP Public License.

Библиотека MDBX является существенно переработанным ответвлением от LMDB — DBMS transaccional incorporado da clase "valor-clave" baseado en árbore B+ sen rexistro proactivo, которая позволяет многопоточным процессам конкурентно и эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надёжнее LMDB, и при этом сохраняет все ключевые возможности своего прародителя, такие как ÁCIDO и неблокирующее чтение с линейным масштабированием по ядрам CPU.

As diferenzas máis importantes entre MDBX e LMDB:

  • Fundamentalmente, préstase máis atención á calidade do código, ás probas e ás comprobacións automáticas.
  • Un control significativamente maior durante a operación, desde a comprobación de parámetros ata a auditoría interna das estruturas de bases de datos.
  • Compactación automática e xestión automática do tamaño da base de datos.
  • Un único formato de base de datos para conxuntos de 32 e 64 bits.
  • Estimación de volumes de mostra por intervalos (estimación de consulta de intervalos).
  • Soporte para teclas dúas veces máis grandes que as filloas e tamaño de páxina de base de datos seleccionable polo usuario.

Выпущенный кандидат в релизы libmdbx является результатом принятого в августе 2019 решения о разделении проектов MDBX и MithrilDB. При этом в libmdbx было решено устранить (рациональный) максимум технического долга и стабилизировать библиотеку. По факту в обозначенном направлении сделано в 2-3 раза больше, чем оценивалось и планировалось исходно:

  • Реализована поддержка macOS и платформ «второго эшелона»: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Поддержка AIX и HP-UX может быть добавлена при необходимости.
  • Проведена санация кода при помощи Undefined Behavior Sanitizer и Address Sanitizer, устранены все предупреждения при сборке с «-Wpedantic», все предупреждения Coverity Static Analyzer и т.д.
  • Actualizar Descricións da API.
  • Слияние (амальгамация) исходного кода для удобства встраивания.
  • Soporte de CMake.
  • Soporte para transaccións aniñadas.
  • Usando bootid para determinar se o SO se reiniciou (parada da base de datos sucia).
  • Сквозной подсчёт обновлённых/старых страниц и расширенная информация о транзакциях.
  • Opción MDBX_ACCEDE para conectarse a unha base de datos xa aberta en modo compatible.
  • Usar Bloqueo de OFD cando estea dispoñible.
  • Copia de seguridade en quente na tubería.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее «qsort()» и до 30% быстрее «std::sort()»).
  • Aumentouse a lonxitude máxima da chave.
  • Control automático da lectura anticipada (estratexia de almacenamento en caché de ficheiros de base de datos na memoria).
  • Compactación automática máis agresiva e máis rápida.
  • Unha estratexia máis óptima para combinar páxinas en árbore B+.
  • Контроль нелокальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Ampliouse o conxunto de probas.

O desenvolvemento da "próxima" versión de libmdbx continuará como un proxecto separado MithrilDB, mentres que o vector de desenvolvemento da versión "actual" de MDBX ten como obxectivo conxelar o conxunto de funcións e estabilizalo. Esta decisión tomouse por tres motivos:

  • Totalmente incompatible: MithrilDB require un formato de ficheiro de base de datos diferente (incompatible) e unha API (incompatible) diferente para implementar todas as funcións planificadas.
  • Novo código fonte: o código fonte de MithrilDB fíxose independente de LMDB, e está previsto que o proxecto en si se publique baixo unha licenza diferente (aprobada por OU SE лицензией Apache 2.0, а не Licenza pública OpenLDAP).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определённости и обеспечить независимость пути развития проектов.

MithrilDB, como MDBX, tamén está baseado en árbore B+ e tamén terá un rendemento extremadamente alto, ao tempo que eliminará unha serie de desvantaxes fundamentais de MDBX e LMDB. En particular, eliminarase o problema das "lecturas longas", que se manifesta como "inchazo" da base de datos debido ao feito de que o procesamento de lixo está bloqueado por transaccións de lectura longas. As novas características de MithrilDB inclúen:

  • Поддержка размещения БД на нескольких разнородных носителях: HDD, SSD и энергонезависимой памяти.
  • Оптимальные стратегии для «ценных» и «малоценных», для «горячих», «теплых» и «холодных» данных.
  • Использование Merkle tree для контроля целостности БД.
  • Опциональное использование WAL и существенно более высокая производительно в сценариях с интенсивной записью и гарантиями на целостность данных.
  • Ленивая догоняющая фиксация данных на дисках.

Fonte: opennet.ru

Engadir un comentario