Beş illik inkişafdan sonra ikinci libmdbx v1.0 buraxılış namizədi.

kitabxana libmdbx LMDB-nin əhəmiyyətli dərəcədə yenidən işlənmiş nəslindəndir - son dərəcə yüksək performanslı, yığcam daxil edilmiş açar-dəyər verilənlər bazası.
Cari versiya v0.5 texniki buraxılışdır, hər hansı təkmilləşdirmənin tamamlanmasını və kitabxananın ilk tam buraxılışının sonrakı formalaşması ilə ictimai yekun sınaq və sabitləşdirmə mərhələsinə keçidi qeyd edir.

LMDB əsasında kifayət qədər tanınmış tranzaksiya daxil edilmiş açar-dəyər DBMS-dir ağac B+ olmadan proaktiv giriş, bu, yerli paylaşılan (şəbəkə deyil) verilənlər bazası ilə rəqabətli və son dərəcə səmərəli işləməyə imkan verən çox yivli proseslərin dəstəsinə imkan verir. Öz növbəsində, MDBX LMDB-dən daha sürətli və etibarlıdır, libmdbx isə öz əcdadının bütün əsas xüsusiyyətlərini saxlayır, məsələn: ACID və bloklanmayan CPU nüvələri arasında xətti miqyaslı oxuyur və həmçinin bir neçə yenisini əlavə edir.

LMDB ilə müqayisədə libmdbx-in fərqləri və təkmilləşdirmələrinin təsviri ayrıca məqaləyə layiqdir (Habré və Medium-da dərc edilməsi planlaşdırılır). Burada ən vacib və nəzərə çarpanları qeyd etmək yerinə düşər:

  • Əsasən, kodun keyfiyyətinə, sınaqlara və avtomatik yoxlamalara daha çox diqqət yetirilir.
  • Parametrlərin yoxlanılmasından tutmuş verilənlər bazası strukturlarının daxili auditinə qədər əməliyyat zamanı əhəmiyyətli dərəcədə daha çox nəzarət.
  • Avtomatik kompaktlaşdırma və verilənlər bazası ölçüsünün avtomatik idarə edilməsi.
  • 32-bit və 64-bit montajlar üçün vahid verilənlər bazası formatı.
  • Nümunə ölçüsünün diapazonlar üzrə qiymətləndirilməsi (aralıq sorğusunun qiymətləndirilməsi).
  • Pancake və istifadəçi tərəfindən seçilə bilən verilənlər bazası səhifəsinin ölçüsündən iki dəfə böyük düymələr üçün dəstək.

libmdbx buraxılış namizədi 2019-cu ilin avqustunda MDBX və MithrilDB layihələrini ayırmaq qərarının (aşağıya bax) nəticəsidir. Eyni zamanda, libmdbx (rasional) maksimum texniki borcu aradan qaldırmaq və kitabxananı sabitləşdirmək qərarına gəlib. Faktiki olaraq təyin olunmuş istiqamətdə ilkin təxmin ediləndən və planlaşdırılandan 2-3 dəfə çox işlər görülüb:

  • Mac OS və ikinci səviyyəli platformalar üçün dəstək həyata keçirilib: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. AIX və HP-UX dəstəyi lazım olduqda əlavə edilə bilər.
  • Kod Müəyyən edilməmiş Davranış Təmizləyicisi və Ünvan Təmizləyicisi istifadə edilərək təmizləndi, -Wpedantic ilə tikinti zamanı bütün xəbərdarlıqlar, bütün Örtüklük Statik Analizatoru xəbərdarlıqları və s. ləğv edildi.
  • Yeniləyin API təsvirləri.
  • Yerləşdirmə asanlığı üçün mənbə kodunun birləşdirilməsi.
  • CMake dəstək.
  • Yuvalanmış əməliyyatlar üçün dəstək.
  • ƏS-in yenidən işə salınıb-bootid-dən istifadə edib-etmədiyini müəyyən etmək üçün (çirkli verilənlər bazası dayanması).
  • Yenilənmiş/köhnə səhifələrin və uzadılmış əməliyyat məlumatlarının başdan sona hesablanması.
  • Uyğun rejimdə artıq açıq verilənlər bazasına qoşulmaq üçün MDBX_ACCEDE seçimi.
  • Istifadə OFD bloklanması mövcud olduqda.
  • Boruda isti ehtiyat.
  • İxtisaslaşdırılmış optimallaşdırılmış daxili çeşidləmə alqoritmi (qsort()-dan 2-3 dəfəyə qədər və std::sort()-dan 30%-ə qədər sürətli).
  • Maksimum açar uzunluğu artırıldı.
  • İrəli oxumağa avtomatik nəzarət (yaddaşda verilənlər bazası faylının keşləmə strategiyası).
  • Daha aqressiv və daha sürətli avtomatik yığcamlaşdırma.
  • B+ ağac səhifələrini birləşdirmək üçün daha optimal strategiya.
  • Yanlış istifadə edildikdə verilənlər bazasına zərər verməmək üçün yerli olmayan fayl sistemlərinə (NFS, Samba və s.) nəzarət.
  • Testlər toplusu genişləndirilib.

libmdbx-in "növbəti" versiyasının hazırlanması ayrıca layihə kimi davam etdiriləcək MithrilDB, halbuki MDBX-in “cari” versiyasının inkişaf vektoru funksiyalar dəstini dondurmaq və onu sabitləşdirmək məqsədi daşıyır. Bu qərar üç səbəbə görə verilib:

  • Tamamilə uyğun gəlmir: MithrilDB bütün planlaşdırılan xüsusiyyətləri həyata keçirmək üçün fərqli (uyğun olmayan) verilənlər bazası fayl formatı və fərqli (uyğun olmayan) API tələb edir.
  • Yeni mənbə kodu: MithrilDB mənbə kodu LMDB-dən müstəqil lisenziyalaşdırılıb və layihənin özünün başqa bir lisenziya altında dərc edilməsi planlaşdırılır (təsdiqlənib). ACİ lisenziyası Apache 2.0OpenLDAP Fondu).
  • Ayrılma potensial çaşqınlığın qarşısını alır, daha çox əminlik təmin edir və layihələrin irəliyə doğru müstəqil bir yola sahib olmasını təmin edir.

MDBX kimi MithrilDB də əsaslanır ağac B+ və MDBX və LMDB-nin bir sıra əsas çatışmazlıqlarını aradan qaldırmaqla yanaşı, son dərəcə yüksək performans nümayiş etdirəcək. Xüsusilə, zibil emalının uzun müddət oxunma əməliyyatları ilə bloklanması səbəbindən məlumat bazasının “şişməsi” kimi özünü göstərən “uzun oxunma” problemi aradan qaldırılacaq. Yeni MithrilDB xüsusiyyətlərinə aşağıdakılar daxildir:

  • verilənlər bazasını bir neçə heterojen daşıyıcıda yerləşdirmək üçün dəstək: HDD, SSD və uçucu olmayan yaddaş.
  • “dəyərli” və “aşağı dəyərli”, “isti”, “isti” və “soyuq” məlumatlar üçün optimal strategiyalar.
  • verilənlər bazası bütövlüyünə nəzarət etmək üçün Merkle ağacından istifadə.
  • WAL-ın isteğe bağlı istifadəsi və intensiv yazılan ssenarilərdə əhəmiyyətli dərəcədə yüksək performans və məlumatların bütövlüyünə zəmanət.
  • Disklərdə məlumatların tənbəl tutma fiksasiyası.

Mənbə: linux.org.ru

Добавить комментарий