Parçalama modelleri

ŞUNLAR IÇIN GEÇERLIDIR: PostgreSQL için Azure Cosmos DB (PostgreSQL'e citus veritabanı uzantısıyla desteklenir)

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 Cosmos DB, satır tabanlı ve şema tabanlı olmak üzere iki tür veri parçalaması sunar. Her seçenek kendi Parçalama avantajlarıyla birlikte gelir ve uygulamanızın gereksinimlerine en uygun yaklaşımı seçmenize olanak sağlar.

Satır tabanlı parçalama

PostgreSQL için Azure Cosmos DB parça tablolarının geleneksel yöntemi, satır tabanlı parçalama olarak da bilinen paylaşılan şema modeli olan tek veritabanıdır ve 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çalamanın en verimli donanım yoludur. 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 buna göre filtrelediğinden emin olmayı 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

PostgreSQL için Azure Cosmos DB'de Citus 12.0 ile kullanılabilen şema tabanlı parçalama, paylaşılan veritabanıdır, ayrı ş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 satır tabanlı parçalama eklemek için gereken değişikliklerden geçmeyecek uygulamaları dağıtan ISV'ler için ideal bir çözümdür.

Avantajlar:

  • Kiracılar heterojen şemalara sahip 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çalamayla 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