Beş yıllık geliştirme sürecinin ardından ikinci libmdbx 1.0 sürüm adayı yayınlandı

Mevcut для тестирования второй кандидат в релизы библиотеки libmdbx с реализацией высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение. Текущая версия (0.5) является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки. Код libmdbx tarafından dağıtıldı под лицензией OpenLDAP Public License.

Библиотека MDBX является существенно переработанным ответвлением от LMDB — транзакционной встраиваемой СУБД класса «ключ-значение» на основе ağaç B+ olmadan proaktif günlük kaydı, которая позволяет многопоточным процессам конкурентно и эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надёжнее LMDB, и при этом сохраняет все ключевые возможности своего прародителя, такие как ASİT и неблокирующее чтение с линейным масштабированием по ядрам CPU.

Самые важные отличия MDBX, относительно LMDB:

  • Temel olarak kod kalitesine, testlere ve otomatik kontrollere daha fazla önem verilmektedir.
  • Parametrelerin kontrolünden veri tabanı yapılarının iç denetimine kadar operasyon sırasında önemli ölçüde daha fazla kontrol.
  • Otomatik sıkıştırma ve otomatik veritabanı boyutu yönetimi.
  • 32 bit ve 64 bit derlemeler için tek bir veritabanı formatı.
  • Оценка объёма выборок по диапазонам (range query estimation).
  • Kreplerin iki katı büyüklüğünde tuşlar ve kullanıcı tarafından seçilebilen veritabanı sayfası boyutu desteği.

Выпущенный кандидат в релизы 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 и т.д.
  • Güncelleme API açıklamaları.
  • Слияние (амальгамация) исходного кода для удобства встраивания.
  • CMake desteği.
  • İç içe işlemler için destek.
  • İşletim sisteminin yeniden başlatılıp başlatılmadığını belirlemek için bootid kullanma (kirli veritabanı durağı).
  • Сквозной подсчёт обновлённых/старых страниц и расширенная информация о транзакциях.
  • Zaten açık olan bir veritabanına uyumlu modda bağlanmak için MDBX_ACCEDE seçeneği.
  • kullanımı OFD engelleme uygun olunca.
  • Boruda sıcak yedekleme.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее «qsort()» и до 30% быстрее «std::sort()»).
  • Maksimum anahtar uzunluğu artırıldı.
  • İleri okumanın otomatik kontrolü (bellekte veritabanı dosyasını önbelleğe alma stratejisi).
  • Daha agresif ve daha hızlı otomatik sıkıştırma.
  • B+ ağaç sayfalarını birleştirmek için daha optimal bir strateji.
  • Контроль нелокальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Test seti genişletildi.

Libmdbx'in "sonraki" sürümünün geliştirilmesi ayrı bir proje olarak devam edecek MithrilDBMDBX'in "güncel" sürümünün geliştirme vektörü ise özellik setini dondurmayı ve stabilize etmeyi amaçlıyor. Bu karar üç nedenden dolayı alındı:

  • Tamamen uyumsuz: MithrilDB, planlanan tüm özellikleri uygulamak için farklı (uyumsuz) bir veritabanı dosya formatı ve farklı (uyumsuz) bir API gerektirir.
  • Yeni kaynak kodu: MithrilDB kaynak kodu LMDB'den bağımsız olarak lisanslandırılmış olup, projenin kendisinin farklı bir lisans altında yayınlanması planlanmaktadır (onaylanmıştır). YA DA EĞER лицензией Apache 2.0, а не OpenLDAP Public License).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определённости и обеспечить независимость пути развития проектов.

MithrilDB, MDBX gibi, aynı zamanda dayanmaktadır ağaç B+ Ayrıca MDBX ve LMDB'nin bazı temel dezavantajlarını ortadan kaldırırken son derece yüksek performansa da sahip olacak. Özellikle uzun okuma işlemleri nedeniyle çöp işlemenin engellenmesi nedeniyle veritabanının “şişmesi” olarak kendini gösteren “uzun okuma” sorunu ortadan kalkacaktır. Yeni MithrilDB özellikleri şunları içerir:

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

Kaynak: opennet.ru

Yorum ekle