Aracılığıyla paylaş


PostgreSQL için Azure Veritabanı'nda elastik kümelerde parçalama modelleri

Parçalama, veritabanı sistemlerinde ve dağıtılmış bilgi işlemde verileri birden çok sunucu veya düğüm arasında yatay olarak bölümlendirmek için kullanılan bir tekniktir. Büyük bir veritabanını veya veri kümesini Parçalar olarak adlandırılan daha küçük, daha yönetilebilir parçalara ayırmayı içerir. Parça, verilerin bir alt kümesini içerir ve parçalar birlikte tam veri kümesini oluşturur.

PostgreSQL için Azure Veritabanı esnek sunucu örneklerindeki elastik kümeler iki tür veri parçası sunar: satır tabanlı ve şema tabanlı. Her seçenek kendi dezavantajlarıyla birlikte gelir ve uygulamanızın gereksinimlerine en uygun yaklaşımı seçmenize olanak sağlar.

Satır tabanlı parçalama

Satır tabanlı parçalama olarak da bilinen tek veritabanı paylaşılan şema modelindeki parça tabloları, kiracılar aynı tabloda satırlar olarak bir arada bulunur. Kiracı, bir tabloyu yatay olarak bölmeye olanak tanıyan bir dağıtım sütunu tanımlanarak belirlenir.

Satır tabanlı parçalama, en verimli donanım yöntemidir. Kiracılar yoğun bir şekilde paketlenir ve kümedeki düğümler arasında dağıtılır. Ancak bu yaklaşım, şemadaki tüm tabloların dağıtım sütununa sahip olduğundan ve uygulamadaki tüm sorguların bu sütuna göre filtrelemesini gerektirir. Satır tabanlı parçalama, IoT iş yüklerinde ve donanım kullanımından en iyi marjı elde etmek için öne çıkar.

Avantajlar:

  • En iyi performans.
  • Düğüm başına en iyi kiracı yoğunluğu.

Dezavantaj -ları:

  • Şema değişiklikleri gerektirir.
  • Uygulama sorgusu değişiklikleri gerektirir.
  • Tüm kiracıların aynı şemayı paylaşması gerekir.

Şema tabanlı parçalama

Şema tabanlı parçalama, paylaşılan veritabanıdır, ayrı bir şema modelidir ve şema veritabanı içindeki mantıksal parça haline gelir. Çok kiracılı uygulamalar, kiracı boyutu boyunca kolayca parça oluşturmak için kiracı başına bir şema kullanabilir. Sorgu değişiklikleri gerekli değildir ve uygulamanın kiracılar arasında geçiş yaparken uygun search_path ayarlamak için yalnızca küçük bir değişikliğe ihtiyacı vardır. Şema tabanlı parçalama, mikro hizmetler ve ISV'ler (Bağımsız Yazılım Satıcıları) için, satır tabanlı parçalama eklemek için gereken değişikliklerden geçirilmeyen uygulamalar dağıtmak için ideal bir çözümdür.

Avantajlar:

  • Kiracıların heterojen şemaları olabilir.
  • Şema değişikliği gerekmez.
  • Uygulama sorgusu değişikliği gerekmez.
  • Şema tabanlı parçalama SQL uyumluluğu, satır tabanlı parçalama ile karşılaştırıldığında daha iyidir.

Dezavantaj -ları:

  • Satır tabanlı parçalamayla karşılaştırıldığında düğüm başına daha az kiracı.

Parçalama dengelemeleri

Şema tabanlı parçalama Satır tabanlı parçalama
Çok kiracılı model Kiracı başına ayrı şema Kiracı kimliği sütunlarıyla paylaşılan tablolar
Citus sürümü 12.0+ Tüm sürümler
Vanilya PostgreSQL ile karşılaştırıldığında ek adımlar Yok, yalnızca yapılandırma değişikliği Her tablodaki create_distributed_table kullanarak tabloları kiracı kimliğine göre & birlikte dağıtma
Kiracı sayısı 1-10k 1-1 M+
Veri modelleme gereksinimi Dağıtılmış şemalar arasında yabancı anahtar yok Her tabloya bir kiracı kimliği sütunu (parçalama anahtarı olarak da bilinen bir dağıtım sütunu) ve birincil anahtarlara yabancı anahtarlar eklemeniz gerekir
Tek düğümlu sorgular için SQL gereksinimi Sorgu başına tek bir dağıtılmış şema kullanma Birleşimler ve WHERE yan tümceleri tenant_id sütun içermelidir
Paralel kiracılar arası sorgular Hayır Evet
Kiracı başına özel tablo tanımları Evet Hayır
Erişim denetimi Şema izinleri Şema izinleri
Kiracılar arasında veri paylaşımı Evet, başvuru tablolarını kullanma (ayrı bir şemada) Evet, başvuru tablolarını kullanma
Kiracıdan parçaya yalıtım Her kiracının tanımına göre kendi parça grubu vardır Isolate_tenant_to_new_shard aracılığıyla belirli kiracı kimliklerine kendi parça grubunu verebilir