Ücretsiz gömülü veritabanı LMDB (Lightning Memory-Mapped Database) sürüm 1.0'a ulaştı. İlk büyük sürümle birlikte geliştiriciler kitaplığın API'sini ve davranışını yeniden belgeliyor ve güncellenmiş belgeler sağlıyor. Mevcut uygulamalar için 0.9 serisinden ayrı bir geçiş kılavuzu bulunmaktadır.
Duyurudan sonra devamını okuyun
LMDB, yerel verileri depolamak için uygulamanıza yerleşik bir anahtar/değer veritabanı kitaplığıdır. Dizin hizmetleri, önbelleğe alma veya meta veriler gibi ayrı bir sunucu işlemi olmadan işlem açısından güvenli bir veritabanına ihtiyaç duyan geliştiricilere yöneliktir. Klasik veritabanı sistemlerinden farklı olarak LMDB, verileri arabellek önbelleğine yüklemez, ancak tüm veritabanını, bellek eşlemesini kullanarak sürecin sanal adres alanına eşler. Okuma erişimi, ek bellek ayırmaları veya kopyalama işlemleri olmaksızın, doğrudan eşlenen bellek alanlarına gerçekleşir.
Veritabanı önbelleği yerine bellek eşleme
LMDB'nin temel prensibi sürüm 1.0 ile değişmeden kalmıştır. Kütüphane, veri yapısı olarak bir B ağacı kullanır ve önbelleğe almayı tamamen işletim sistemine bırakır. Veri kayıtları doğrudan bellek görüntüsünden okunduğu için ara adımlar malloc() VEYA memcpy() verileri okurken. Bu, yönetim yükünü azaltır ve özellikle okuma yoğunluklu iş yüklerinde performansı artırabilir. Temel, dosyaların içeriğinin sanal bellekte şeffaf bir şekilde görüntülendiği işletim sisteminin bellek eşleme işlevidir.
İşlem modeli de aynı kalıyor. LMDB, ACID özellikleri sunar ve çok sürümlü eşzamanlılık kontrolüne (MVCC) dayanır. Yeni veriler, yazarken kopyala işlevi kullanılarak yazılır, böylece mevcut sayfaların üzerine hiçbir zaman yazılmaz. Bu, okuyucunun her zaman tutarlı bir veri tabanı görmesi anlamına gelirken, yazma süreçleri de paralel olarak hazırlanabilmektedir. Tipik bir örnek, bir yönetim aracı değişiklikleri yazarken sürekli olarak konfigürasyon verilerini okuyan bir hizmettir: okuyucular çökmeden çalışmaya devam eder ve yazma işlemi tarafından engellenmez.
Bir yazar, çok okuyucu
LMDB'nin eşzamanlılık modeli diğer birçok veritabanından farklıdır. Herhangi bir sayıda işlem veya iş parçacığı aynı anda okuyabilir ancak yazma işlemleri tamamen serileştirilir. Aynı anda yalnızca bir yazma işlemi etkin olabilir. Bu, sistemin rakip yazarlar arasındaki çıkmazları ortadan kaldırdığı anlamına gelir. Okuyucular yazarları engellemez ve okuyucuların devam eden yazma işlemlerini beklemesi gerekmez.
Geliştiriciler ayrıca kasıtlı olarak yazma öncesi günlük veya salt ekleme protokolünden kaçınırlar. LMDB, günlük dosyalarını düzenli olarak birleştirmek veya veritabanlarını sıkıştırmak yerine, boş sayfaları veritabanının kendisinde tutar ve sonraki yazma işlemleri için bunları yeniden kullanır. Bu, bakım gerektirmeyen günlük tabanlı işlemlerde olabileceği gibi, veritabanının normal çalışma sırasında süresiz olarak büyümediği anlamına gelir.
Duyurudan sonra devamını okuyun
Çalıştırma talimatları
GitHub'daki sürüm notları ve belgeler bazı sınırlamalara işaret ediyor: Uzun süren okuma işlemleri, önceden yayınlanmış sayfaların yeniden kullanılmasını engelleyebilir. Bu, veritabanı dosyasının gereksiz büyümesine neden olabilir. Geliştiriciler bu nedenle uzun süren işlemlerden kaçınmalı ve bozuk işlemleri, artık okuyucu girişleri açısından düzenli olarak kontrol etmelidir. Bu, diğer şeylerin yanı sıra, işlev mdb_reader_check aynı zamanda enstrüman mdb_stat mevcut.
Ağ dosya sistemlerinde kullanılması da önerilmez. LMDB bellek eşlemesine ve işletim sistemi dosya kilitlerine dayandığından senkronizasyon sorunları ortaya çıkabilir. Belgelere göre aynı veritabanının bir süreç içinde birden çok kez açılması da sorunlu olarak değerlendiriliyor.
(fo)

Bir yanıt yazın