Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Lakebase, depolamayı işlemden ayırır. Sorgularınızı çalıştıran Postgres motoru durumsuzdur ve verileriniz bağımsız olarak kalıcı bir depolama katmanında kalır. Bu ayrım, otomatik ölçeklendirme, sıfıra ölçekleme, anında dallanma, okuma replikaları ve hızlı failover'ı mümkün kılan şeydir.
Lakebase'in neyi değiştirdiğini göstermek için, bu sayfa kontrast için geleneksel, tek makineli veritabanı tasarımıyla başlıyor, ardından Lakebase'in aynı tasarımı bağımsız katmanlara nasıl ayırdığını ve her parçanın ne yaptığını açıklıyor.
Geleneksel bir veritabanı nasıl inşa edilir
Lakebase'e bakmadan önce, yerini aldığı modeli düşünün. Geleneksel bir Postgres veritabanı bir monolittir. Tek bir makine, sorgu motorunu çalıştırır ve hem önceden yazma günlüğünü (WAL) hem de veri dosyalarını yerel bir montaj noktasına bağlı bir diske yazar. Geleneksel olarak bu diskler gerçekten yerel, aynı makinenin parçasıydı, ancak altyapı geliştikçe genellikle ağa bağlı depolama cihazları olarak kullanılıyordu.
WAL ve veri dosyaları iki tamamlayıcı rol oynar:
- WAL yazımı hızlandırıyor. Postgres, her değişikliği loga ardışık olarak ekler ve ardından bir commit onaylar; bu işlem tek bir diskte hızlı ve dayanıklıdır.
- Veri dosyaları okumayı hızlandırıyor. Postgres, her sayfanın mevcut versiyonunu veri dosyalarına dönüştürür, böylece bir sorgu günlüğü tekrar oynatmadan bir satırı okuyabilir.
Tüm verilerinize tek bir makineden erişmenin dezavantajları vardır:
- Dayanıklılık, doğrudan o makinenin fiziksel altyapısına bağlıdır. Ayrıca depolama için önceden tedarik etmeniz ve iş yükünüzün ne kadar artacağını tahmin etmeniz gerekir; bu da hem maliyet yönetimini hem de dayanıklılık planlamasını karmaşıklaştırır.
- Yüksek kullanılabilirlik ve birçok yatay ölçeklendirme türü, tüm veritabanının fiziksel klonlarını gerektirir.
- O makine arızalanırsa, veri kaybedebilirsiniz. RAID depolama gibi teknikler bu riski azaltır, ancak ek yedeklik sistemi işletme maliyetini önemli ölçüde artırabilir.
Lakebase mimarisi
Lakebase aynı sorumlulukları korur ancak onları iki bağımsız katmana ayırır:
- Standart, durumsuz Postgres çalıştıran bir hesaplama katmanı .
- Güvenli saklayıcılar, sayfa sunucuları ve bulut nesne depolamadan oluşan bir depolama katmanı .
Monolitten gelen iki rol doğrudan yeni bileşenlere eşleşiyor. Yazmayı hızlandıran WAL, safekeepers olur, o da scale'i yazıyor. Okumaları hızlandıran veri dosyaları, okumaları ölçekleyen sayfa sunucularına dönüşür.
Veriler tek bir makinede değil, bulut nesne depolamasında yaşadığı için, Lakebase erişilebilirlik alanları arasında çoğaltılan elastik, ölçeklenebilir hesaplama ve dayanıklı yazımlar sağlar. Depolama sağlamak için bir yer yok: sadece tükettiğiniz depolama için ödeme yaparsınız ve disk bitmesi gibi arıza modlarına göre planlamak zorunda değilsiniz.
Bu model aynı zamanda performansı da artırır. Lakebase, her değişikliği doğrudan birden fazla konuma yazar, böylece geleneksel yırtık yazma koruması ve blok hizalama yüklerinden kaçınır. Her yazma zaten birden fazla konuma giddiği için, yüksek kullanılabilirlik etkin olsun ya da olmasın performans tutarlı kalır.
Aşağıdaki tablo, monolitin her bir parçasını Lakebase muadiliyle eşlemektedir.
| Geleneksel monolit | Lakebase | Role |
|---|---|---|
| Tek bir makine | Durumsuz hesaplama | Postgres sorgu motorunu çalıştırır |
| Yerel WAL diski | Koruyucular | Kalıcı olarak her değişikliği kaydeder |
| Yerel veri dosyaları | Sayfa sunucuları ve nesne depolama | Sayfa versiyonlarını maddeleştirir ve saklar |
İşlem katmanı
Hesaplama katmanı Postgres çalıştırır. Sadece geçici duruma sahiptir: Postgres hafızadaki tamponları ve hızlı yerel disk tarafından desteklenen yerel bir hesaplama önbelleği paylaşır. Kalıcı bir veriye sahip değildir.
Çünkü hesaplama dayanıklı bir duruma sahip değildir:
- Veri taşınmadan veya kaybetmeden değiştirilebilir, yeniden başlatılabilir, otomatik ölçeklendirilebilir veya sıfıra ölçeklenebilir.
- Yerel dosya sistemine yazmak yerine, WAL'ı depolama katmanına aksar.
- Birden fazla hesaplama örneği aynı depolama katmanına bağlanabilir, bu da Lakebase'in replikaları okuma ve hızlı failover çalışmasının yoludur.
Depolama katmanı
Depolama katmanı dayanıklıdır ve hesaplamadan bağımsız olarak çalışır. Üç bileşeni vardır.
Koruyucular
Güvenlik bekçileri ise tek makineden çıkarılan ve yüksek derecede erişilebilir olan WAL'dır. Postgres WAL kayıtlarını üretirken, bunları bir grup güvenlik bekçisine aktarır ve bu kayıtlar Paxos tabanlı bir uzlaşma protokolü kullanılarak bir yetenekli kapasite boyunca çoğaltılır.
Bir işlem, bir güvenlik bekçisi sayısı WAL kaydını onayladığında gerçekleşir, tek bir makine yerel fsyncbir işlemi tamamladığında değil. Dayanıklılık, tek bir diskten değil, düğümler arasında çoğaltmadan gelir.
Sayfa sunucuları
Pageserver, WAL'dan çıkarılıp yeniden oluşturulan veri dosyalarıdır. Bir pageserver, safekeeper'lardan gelen WAL akışını tüketir ve talep üzerine sayfa sürümlerini oluşturur. Hesaplama, belirli bir log dizisi numarasında (LSN) bir sayfa istediğinde, sayfa sunucusu onu yeniden yapılar ve geri döndürür.
Pageserver, nesne depolama üzerinde bir yazım önbelleği olarak görev yapar. Maddeleştirilmiş sayfaları bulut nesne depolamaya asenkron olarak devam ettiriyorlar ve sayfa yeniden yapılandırması işlem yapma işlemini engellemez.
Bulut nesne depolaması
Bulut nesne depolama tüm depolama katmanının dayanıklılık temelidir. Pageserver'ın devam ettiği sayfa verilerini tutar.
Azure-da Lakebase data-nı Azure Blob Depolama-a persist dike.
Nesne depolama sıcak sorgu yolundan uzak kalır. Sadece pageserverler oradan okuyor. Depolama yedekliliğinin nasıl çalıştığı ve neden hesaplama yüksek kullanılabilirlik ayarından bağımsız olduğu hakkında bilgi için Depolama mimarisi sayfasına bakınız.
Bir yazı nasıl çalışır
Bir yazı, hesaplamadan depolama katmanı boyunca akar:
- Postgres, etkilenen sayfaları bellekte değiştirir ve WAL kayıtları üretir.
- Compute, WAL kayıtlarını güvenlik görevlilerine aktarır.
- Bir güvenlik bekçisi yeterliliği kayıtları onayladığında, işlem gerçekleşir ve müşteri başarı elde eder.
- Pageserver'lar WAL'ı asenkron olarak uygular ve güncellenmiş sayfaları nesne depolamada kalıcı hale getirir.
Bir işlem güvenli bekçilerden oluşan bir yetenekli kişi WAL kaydına sahip olduğunda dayanıklı olur, çünkü sadece günlük verileri yeniden oluşturmak için yeterlidir. Pageserver, sonrasında veri sayfalarını commit yolundan uzakta yeniden inşa edip saklar, böylece yazılar hızlı kalır ve herhangi bir kararlı değişikliği riske atmaz.
Bir okuma nasıl çalışır
Okumalar, en hızlıdan en yavaşa doğru önbellek hiyerarşisini kontrol eder ve sayfanın bulunduğu ilk katmanda durur:
- Buffer havuzu (bellek): Postgre'ler, hesaplama RAM'inde tamponları paylaşıyordu.
- Yerel hesaplama önbelleği: Hesaplama düğümünde, hesaplama cihazının belleğine göre boyutlandırılmış, disk destekli bir önbellek.
- Pageserver: Önbellek kaçırıldığında, hesaplama sayfayı bir sayfa sunucusundan ister ve sayfa sunucusu istenen LSN'de yeniden oluşturur.
- Nesne depolama: Pageserver, gerektiğinde nesne depolamadan dahili olarak okur. Sorgular doğrudan nesne depolamasına ulaşmaz.
Bu mimarinin mümkün kıldığı şey
Durumsuz hesaplamayı dayanıklı depolamadan ayırmak, birkaç Lakebase özelliğini mümkün kılan şeydir:
| Özellik | Ne sağladığı |
|---|---|
| Otomatik ölçeklendirme | Hesaplama durumsuz olduğu için, Lakebase iş yüküne göre hesaplama boyutunu veri taşımadan yukarı veya aşağı ölçekler. |
| Sıfıra ölçeklendirin | Hesaplama depolama devam ederken tamamen duraklayabilir ve hesaplama devam ettiğinde veri hemen erişilebilir olur. |
| Anında dallar | Veritabanınızın izole, yazılabilir bir kopyasını saniyeler içinde oluşturun. Dallanma, paylaşılan depolamaya karşı yazma üzerine kopyalama meta veri işlemi olduğundan, veri çoğaltmaz. |
| Okuma çoğaltmaları | Aynı depolama katmanından birden fazla hesaplama örneği okunduğundan, replikalar veri kopyalarına ihtiyaç duymaz ve saniyeler içinde başlar. |
| Zaman içi sorgular | Depolama katmanı geçmişi sakladığı için, hesaplama geçmiş bir zaman noktasına bağlanabilir ve veri kopyalamadan veritabanını o zamanki haliyle okuyabilir. |
| Hızlı failover | Failover, mevcut depolamaya bağlanan ve taşınacak veri olmayan ikincil bir hesaplama örneğini teşvik eder. |
| RPO = 0 (taahhüt edilen veri kaybı yok) | Lakebase, her taahhüdü onaylamadan önce kalıcı olarak kaydeder, böylece hesaplama başarısız olduğunda, yeniden başlatıldığında veya sıfıra ölçeklendiğinde hiçbir taahhüt veriyi kaybetmezsiniz. |
Bu mimari LTAP'ı nasıl destekler?
Lakebase, bulut nesne depolamadaki her taahhütlü değişikliği kalıcı şekilde sakladığı için, aynı veriler ayrı bir çoğaltma boru hattı olmadan işlemlerle birlikte analitik iş yüklerine hizmet edebilir. Bu, Lake Transactional and Analytical Processing (LTAP) için temel oluşturur; burada verilerinizin tek bir kopyası hem işlemsel hem de analitik motorları destekler. LTAP'ın bu mimari üzerine nasıl inşa ettiğini öğrenmek için LTAP mimarisine bakınız.
Sonraki Adımlar
- Depolama mimarisi: Depolama yedekliliğinin nasıl çalıştığını ve neden hesaplama yüksek erişilebilirlik ayarından bağımsız olduğunu öğrenin. Bkz . Depolama mimarisi.
- Veritabanı dalları: Şubelerin kopyalama-yazma depolamayı kullanarak anında, izole ortamlar nasıl oluşturduğuna bakın. Bkz. Dallar.
- Replikaları okuyun: Aynı depolama katmanını paylaşan, yalnızca okunabilir hesaplama örnekleri ekleyin. Bkz Okuma replikaları.
- Temel kavramlar: Lakebase'i benzersiz kılan tüm kavramları gözden geçirin. Temel kavramlara bakınız.