Beş yıllık geliştirme sürecinin ardından ikinci libmdbx v1.0 sürüm adayı.

Kütüphane libmdbx son derece yüksek performanslı, kompakt bir yerleşik anahtar/değer veritabanı olan LMDB'nin önemli ölçüde yeniden tasarlanmış bir devamıdır.
Mevcut v0.5 sürümü teknik bir sürümdür ve tüm iyileştirmelerin tamamlandığını, halka açık nihai test ve stabilizasyon aşamasına geçişi ve ardından kütüphanenin ilk tam sürümünün oluşturulduğunu gösterir.

LMDB oldukça iyi bilinen, işlemsel gömülü anahtar/değer DBMS'sidir. ağaç B+ olmadan proaktif günlük kaydıBu, çok iş parçacıklı işlemlerden oluşan bir sürünün, yerel olarak paylaşılan (ağ değil) bir veritabanıyla rekabetçi ve son derece verimli çalışmasına olanak tanır. Buna karşılık, MDBX, LMDB'den daha hızlı ve daha güvenilirdir; libmdbx ise atasının tüm temel özelliklerini korur; ASİT ve CPU çekirdekleri arasında doğrusal ölçeklendirmeyle engellemesiz okumalar yapar ve ayrıca birkaç yenisini ekler.

Libmdbx'in LMDB'ye göre farklılıkları ve iyileştirmelerinin açıklaması ayrı bir makaleyi hak ediyor (Habré ve Medium'da yayınlanması planlanıyor). Burada en önemli ve dikkat çekenlerden bahsetmek yerinde olacaktır:

  • 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ı.
  • Örnek boyutunun aralıklara göre tahmini (aralık sorgu tahmini).
  • Kreplerin iki katı büyüklüğünde tuşlar ve kullanıcı tarafından seçilebilen veritabanı sayfası boyutu desteği.

Libmdbx sürüm adayı, Ağustos 2019'da MDBX ve MithrilDB projelerini ayırma kararının (aşağıya bakın) sonucudur. Aynı zamanda libmdbx, (rasyonel) maksimum teknik borcu ortadan kaldırmaya ve kütüphaneyi istikrara kavuşturmaya karar verdi. Aslında, belirlenen yönde başlangıçta tahmin edilenden ve planlanandan 2-3 kat daha fazlası yapıldı:

  • Mac OS ve ikinci kademe platformlar için destek uygulandı: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Gerektiğinde AIX ve HP-UX desteği eklenebilir.
  • Tanımsız Davranış Temizleyici ve Adres Temizleyici kullanılarak kod temizlendi, -Wpedantic ile derleme sırasındaki tüm uyarılar, tüm Coverity Static Analizör uyarıları vb. ortadan kaldırıldı.
  • Güncelleme API açıklamaları.
  • Gömme kolaylığı için kaynak kodunun birleştirilmesi.
  • 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ğı).
  • Güncellenen/eski sayfaların ve genişletilmiş işlem bilgilerinin uçtan uca sayımı.
  • 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.
  • Özelleştirilmiş optimize edilmiş dahili sıralama algoritması (qsort()'tan 2-3 kata kadar daha hızlı ve std::sort()'tan %30'a kadar daha hızlı).
  • 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.
  • Yanlış kullanıldığında veritabanının zarar görmesini önlemek için yerel olmayan dosya sistemlerinin (NFS, Samba vb.) kontrolü.
  • 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 lisans Apache 2.0Ve OpenLDAP Vakfı).
  • Ayırma olası karışıklığı önler, daha fazla kesinlik sağlar ve projelerin bağımsız bir ilerleme yoluna sahip olmasını sağlar.

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:

  • veritabanını çeşitli heterojen ortamlara yerleştirme desteği: HDD, SSD ve kalıcı bellek.
  • "değerli" ve "düşük değerli", "sıcak", "sıcak" ve "soğuk" veriler için en uygun stratejiler.
  • veritabanı bütünlüğünü izlemek için Merkle ağacını kullanma.
  • İsteğe bağlı WAL kullanımı ve yoğun yazma senaryolarında önemli ölçüde daha yüksek performans ve veri bütünlüğü garantileri.
  • Disklerdeki verilerin tembel bir şekilde yakalanması.

Kaynak: linux.org.ru

Yorum ekle