Yandex'in , SQL lehçesini ve ACID işlemlerini destekleyen veritabanı yönetim sistemi "YDB"nin kaynak kodunu yayınladığı yakın zamanda duyuruldu .
Veritabanı yönetim sistemi (DBMS) sıfırdan inşa edildi ve başlangıçta hata toleransı , arızalardan otomatik kurtarma ve ölçeklenebilirlik sağlamak amacıyla geliştirildi. Yandex'in, yüzlerce petabayt veri depolayan ve saniyede milyonlarca dağıtılmış işlemi işleyen 10'den fazla düğüm içeren operasyonel YDB kümelerini devreye aldığını belirtmekte fayda var.
YDB'nin ana yenilikleri
YDB'nin temel özelliklerinden biri, tablolar içeren ilişkisel bir veri modeli kullanmasıdır. YQL ( YDB Sorgu Dili), veri şemasını sorgulamak ve tanımlamak için kullanılır; büyük, dağıtılmış veritabanlarıyla çalışmak üzere uyarlanmış bir SQL lehçesidir . Depolama şeması oluşturulurken, dosya sistemindeki dizinlere benzer şekilde, tabloların ağaç benzeri bir şekilde gruplandırılması desteklenir. JSON formatındaki verilerle çalışmak için bir API sağlanmıştır.
Ayrıca, diskler, düğümler, raflar ve hatta tek tek veri merkezleri arızalandığında bile çalışmaya devam eden hataya dayanıklı yapılandırmalar oluşturma yeteneği de dikkat çekicidir . YDB, bir bölge arızası durumunda küme sağlığını korurken, üç kullanılabilirlik bölgesi genelinde senkronize dağıtım ve çoğaltmayı destekler.
Veritabanı üzerinde anlık analitik sorgular gerçekleştirmek üzere tasarlanmış, salt okunur modda yürütülen ve bir grpc akışı döndüren tarama sorguları aracılığıyla veri erişimiyle uyumluluk .
Ayrıca, yerel PDisk bileşeni ve VDisk katmanını kullanarak verileri doğrudan blok aygıtlarda depolamasıyla da öne çıkmaktadır . VDisk'e ek olarak, disk kullanılabilirliğini ve performansını analiz eden ve sorun tespit edilirse bunları devre dışı bırakan DSProxy de çalışır.
Diğer önemli özellikler şunlardır:
- YDB'nin üzerine, sanal blok cihazlara ve kalıcı kuyruklara kadar çeşitli hizmetler oluşturmanıza olanak tanıyan esnek bir mimari. Farklı iş yükü türleri için uygunluk: OLTP ve OLAP (analitik sorgular).
- Çok kullanıcılı (çok kullanıcılı) ve sunucusuz yapılandırmalar için destek.
- İstemcilerin kimliğini doğrulama yeteneği. Kullanıcılar, istek sayısı ve veri boyutu açısından kaynak tüketimini göz önünde bulundurarak veya belirli bilgi işlem kaynaklarını ve depolama alanını kiralayarak/rezerve ederek ortak bir paylaşılan altyapı üzerinde kendi sanal kümelerini ve veritabanlarını oluşturabilirler.
- Eski verilerin otomatik olarak silinmesi için kayıtların faydalı ömrünü ayarlama imkanı.
- DBMS ile etkileşim ve istek gönderme, komut satırı arabirimi, entegre web arabirimi veya C++, C# (.NET), Go, Java, Node.js, PHP ve Python için kitaplıklar sağlayan YDB SDK kullanılarak yapılır.
- Uygulamalarda minimum gecikmeyle arızalardan otomatik olarak kurtulun ve verileri depolarken belirtilen artıklığı otomatik olarak koruyun.
- Birincil anahtarda otomatik dizin oluşturma ve isteğe bağlı sütun erişiminin verimliliğini artırmak için ikincil dizinleri tanımlama yeteneği.
- Yatay ölçeklenebilirlik. Depolanan verilerin yükü ve boyutu arttıkça küme, yeni düğümler bağlanarak basitçe genişletilebilir. İşlem ve depolama katmanları ayrıdır ve işlem ve depolamayı ayrı ayrı ölçeklendirmenize olanak tanır. DBMS, mevcut donanım kaynaklarını dikkate alarak verilerin ve yükün eşit dağılımını izler. Dünyanın farklı yerlerinde birden fazla veri merkezini kapsayan coğrafi olarak dağıtılmış konfigürasyonları uygulamak mümkündür.
- Birden çok düğüm ve tabloya yayılan sorguları işlerken güçlü bir tutarlılık modeli ve ACID işlemleri desteği. Performansı artırmak için tutarlılık denetimini seçerek devre dışı bırakabilirsiniz.
- Otomatik veri çoğaltma, boyut veya yük arttığında otomatik bölümleme (bölümleme, parçalama) ve düğümler arasında otomatik yükleme ve veri dengeleme.
Son olarak, YDB'nin Yandex projelerinde kullanıldığını, kodunun C/C++ dilinde yazıldığını ve Apache 2.0 lisansı altında dağıtıldığını belirtmekte fayda var . Kaynak koduna ve daha fazla ayrıntıya aşağıdaki bağlantıdan ulaşabilirsiniz.