SQLite tabanlı, dağıtılmış, hataya dayanıklı bir DBMS olan rqlite 7.0'ın piyasaya sürülmesi

SQLite'ı depolama motoru olarak kullanan ve bir kümenin çalışmasını birbiriyle senkronize edilmiş depolardan düzenlemenize olanak tanıyan dağıtılmış DBMS rqlite 7.0'ın piyasaya sürülmesi gerçekleşti. Rqlite'ın özelliklerinden biri, dağıtılmış, hataya dayanıklı bir depolamanın kurulum, dağıtım ve bakımının kolaylığıdır; bu, bir şekilde etcd ve Consul'a benzer, ancak anahtar/değer formatı yerine ilişkisel bir veri modeli kullanır. Proje kodu Go'da yazılmıştır ve MIT lisansı altında dağıtılmaktadır.

Tüm düğümleri senkronize durumda tutmak için Raft konsensüs algoritması kullanılır. Rqlite, orijinal SQLite kitaplığını ve go-sqlite3 sürücüsünü kullanır; bunun üzerine istemci isteklerini işleyen, diğer düğümlere çoğaltma gerçekleştiren ve lider düğüm seçimi konusunda fikir birliğine varılıp varılmadığını izleyen bir katman başlatılır.

Veritabanında değişiklikler yalnızca lider olarak seçilen düğüm tarafından yapılabilir, ancak yazma işlemlerine sahip bağlantılar aynı zamanda kümedeki diğer düğümlere de gönderilebilir ve bu da isteği tekrarlamak için liderin adresini döndürür (bir sonraki sürümde Taleplerin lidere otomatik iletilmesini ekleme sözü verin). Ana vurgu hata toleransıdır, bu nedenle DBMS yalnızca okuma işlemleriyle ölçeklenir ve yazma işlemleri darboğazdır. Bir rqlite kümesini tek bir düğümden çalıştırmak mümkündür ve bu çözüm, hata toleransı sağlamadan SQLite'a HTTP üzerinden erişim sağlamak için kullanılabilir.

Her düğümdeki SQLite verileri bir dosyada değil, bellekte depolanır. Raft protokolünün uygulanmasıyla katman düzeyinde, veritabanında değişikliklere yol açan tüm SQLite komutlarının kaydı tutulur. Bu günlük, çoğaltma sırasında (diğer düğümlerdeki isteklerin çoğaltılması düzeyinde çoğaltma), yeni bir düğüm başlatılırken veya bağlantı kaybından kurtulmak için kullanılır. Günlüğün boyutunu azaltmak için, belirli sayıda değişiklikten sonra başlayan ve yeni bir günlüğün tutulmaya başlandığı bir anlık görüntünün sabitlenmesine yol açan otomatik paketleme kullanılır (bellekteki veritabanının durumu anlık görüntü + birikmiş değişiklik günlüğü ile aynı).

Rqlite'ın özellikleri:

  • Ayrı bir SQLite kurulumuna ihtiyaç duymadan bir kümeyi dağıtmak kolaydır.
  • Çoğaltılan SQL depolama alanını hızlı bir şekilde elde etme yeteneği.
  • Üretim projelerinde kullanıma hazırdır (üretim düzeyinde).
  • Verileri toplu modda güncellemenize ve kümenin önde gelen düğümünü belirlemenize olanak tanıyan bir HTTP(S) API'sinin varlığı. Çeşitli programlama dilleri için bir komut satırı arayüzü ve istemci kitaplıkları da sağlanmaktadır.
  • Diğer düğümleri tanımlamaya yönelik bir hizmetin varlığı, dinamik olarak kümeler oluşturmanıza olanak tanır.
  • Düğümler arasındaki veri alışverişini şifreleme desteği.
  • Okurken verilerin alaka düzeyini ve tutarlılığını kontrol etme düzeyini yapılandırma yeteneği.
  • Mutabakatın belirlenmesine katılmayan ve okuma işlemleri için kümenin ölçeklenebilirliğini artırmak için kullanılan, düğümleri salt okunur modda bağlamaya yönelik isteğe bağlı yetenek.
  • Komutları tek bir istekte birleştirmeye dayalı kendi işlem formlarınız için destek (BEGIN, COMMIT, ROLLBACK, SAVEPOINT ve RELEASE tabanlı işlemler desteklenmez).
  • Sıcak yedeklemeler oluşturma desteği.

Yeni sürümde:

  • Consul ve etcd dağıtılmış depolama temelinde çalışabilen yeni bir düğüm algılama hizmeti kullanılarak otomatik rqlite kümeleme desteği eklendi. Hizmet, rqlite düğümlerinin birbirini otomatik olarak bulmasına olanak tanır; yöneticinin ortak Consul veya vbd küme adresini (örneğin, "example.com:8500") belirterek farklı sunucularda birkaç düğüm başlatması yeterlidir; düğümler otomatik olarak bir küme halinde birleştirilir. Önde gelen düğüm, Consul veya vbd deposundaki adresiyle ilgili bilgileri periyodik olarak günceller; bu, diğer düğümleri yeniden yapılandırmanıza gerek kalmadan lideri daha sonra değiştirmenize ve lideri değiştirdikten sonra bile yeni düğümler eklemenize olanak tanır. AWS Lambda'da çalışan eski Keşif modu hizmeti durduruldu.
  • CLI arayüzü birden fazla ana bilgisayarın aynı anda belirlenmesine olanak tanır; ilk düğüm kullanılamıyorsa sonraki ana bilgisayarlarla iletişime geçilir.
  • Rqlited komut satırı bağımsız değişkenlerini ayrıştırmaya yönelik kod yeniden düzenlendi.
  • Kullanımdan kaldırılan protobuf paketi kullanımdan kaldırıldı.
  • Raft protokolünün uygulanmasında kullanılan BoltDB depolama alanı, etcd projesinin bir çatalı olan bbolt ile değiştirildi.

Kaynak: opennet.ru

Yorum ekle