Aracılığıyla paylaş


PostgreSQL için Azure Cosmos DB'de ölçeklendirmeye yönelik temel kavramlar

şunlar için geçerlidir: PostgreSQL için Azure Cosmos DB (PostgreSQL'i Citus veritabanı uzantısı ile destekleyen)

Yeni uygulama oluşturma adımlarını araştırmadan önce, ilgili terimlere ve kavramlara hızlı bir genel bakış sağlamak yararlı olacaktır.

Mimariye genel bakış

PostgreSQL için Azure Cosmos DB, tabloları ve/veya şemaları bir kümedeki birden çok makineye dağıtma ve düz PostgreSQL'i sorguladığınız gibi saydam bir şekilde sorgulama olanağı sunar:

Bir tabloyu çalışan düğümlerine parçalayan koordinatör düğümünün diyagramı.

PostgreSQL için Azure Cosmos DB mimarisinde birden çok düğüm türü vardır:

  • Koordinatör düğümü dağıtılmış tablo meta verilerini depolar ve dağıtılmış planlamadan sorumludur.
  • Buna karşılık, çalışan düğümleri gerçek verileri, meta verileri depolar ve hesaplamayı yapar.
  • Hem koordinatör hem de çalışanlar, citus uzantısının yüklü olduğu düz PostgreSQL veritabanlarıdır.

Yukarıdaki diyagramda olduğu gibi campaigns normal bir PostgreSQL tablosunu dağıtmak için adlı create_distributed_table()bir komut çalıştırın. Bu komutu çalıştırdığınızda PostgreSQL için Azure Cosmos DB, çalışan düğümleri arasında tablo için saydam olarak parçalar oluşturur. Diyagramda parçalar mavi kutular olarak gösterilir.

Normal bir PostgreSQL şeması dağıtmak için komutunu çalıştırırsınız citus_schema_distribute() . Bu komutu çalıştırdığınızda, PostgreSQL için Azure Cosmos DB, bu şemalardaki tabloları şeffaf bir şekilde küme düğümleri arasında tek birim olarak taşınabilen tek parçalı, birlikte yerleşik tablolara dönüştürür.

Not

Çalışan düğümü olmayan bir kümede, dağıtılmış tablo parçaları koordinatör düğümünde yer alır.

Parçalar, verilerinizin dilimlerini barındıran düz (ancak özel olarak adlandırılmış) PostgreSQL tablolarıdır. Örneğimizde, campaigns'yi company_id ile dağıttığımız için parçalar, farklı şirketlerin kampanyalarını barındırıyor ve bu kampanyalar farklı parçalara atanıyor.

Dağıtım sütunu (parça anahtarı olarak da bilinir)

create_distributed_table() , PostgreSQL için Azure Cosmos DB'nin tabloları dağıtmak ve kaynakları birden çok makine arasında kullanmak için sağladığı sihirli işlevdir.

SELECT create_distributed_table(
	'table_name',
	'distribution_column');

Yukarıdaki ikinci bağımsız değişken, tablodan bir sütunu dağıtım sütunu olarak seçer. Yerel PostgreSQL türüne (tamsayı ve metin en yaygın olan) sahip herhangi bir sütun olabilir. Dağıtım sütununun değeri, hangi satırların hangi parçalara gireceğini belirler ve bu nedenle dağıtım sütunu parça anahtarı olarak da adlandırılır.

PostgreSQL için Azure Cosmos DB, parça anahtarı kullanımına göre sorguların nasıl çalıştırılmaya karar verir:

Sorgu şunları içerir: Nerede çalıştırılır
yalnızca bir shard anahtarı parçasını barındıran işçi düğümünde
birden çok parça anahtarı birden çok düğüm arasında paralelleştirilmiş

Parça anahtarı seçimi, uygulamalarınızın performansını ve ölçeklenebilirliğini belirler.

  • Parça anahtarlarına göre eşit olmayan veri dağılımı (veri dengesizliği olarak da bilinen) performans için ideal değildir. Örneğin, tek bir değerin verilerin %50'sini temsil ettiği bir sütun seçmeyin.
  • Düşük kardinaliteye sahip parça anahtarları ölçeklenebilirliği etkileyebilir. Yalnızca farklı anahtar değerleri olduğu kadar çok parça kullanabilirsiniz. Yüzlerce ile binler içinde kardinaliteye sahip bir anahtar seçin.
  • Farklı bölme anahtarlarına sahip iki büyük veritabanı tablosunu birleştirmek yavaş olabilir. Büyük tablolar arasında ortak bir shard anahtarı seçin. Daha fazla bilgiyi birlikte bulundurma hakkında edinin.

Veri merkezi ortak yerleşimi

Parça anahtarıyla yakından ilgili bir diğer kavram da eş yerleştirmedir. Aynı dağıtım sütunu değerleriyle parçalanmış tablolar ortak yerleşimlidir - Ortak yerleşimli tabloların parçaları aynı çalışanlarda depolanır.

Aşağıda aynı anahtarla parçalanmış iki tablo vardır: site_id. Bir arada konumlandırılmışlar.

site_id'ye göre yerleştirilen http_request ve http_request_1min tablolarının diyagramı.

PostgreSQL için Azure Cosmos DB, her iki tabloda da eşleşen site_id değere sahip satırların aynı çalışan düğümünde depolanmasını sağlar. Her iki tablo için, site_id=1 içeren satırların çalışan 1'de saklandığını görebilirsiniz. Benzer şekilde diğer site kimlikleri için de.

Ortak yerleşim, bu tablolardaki JOIN işlemlerini optimize etmeye yardımcı olur. site_id üzerinde iki tabloyu birleştirirseniz, PostgreSQL için Azure Cosmos DB, verileri düğümler arasında karıştırmadan, birleştirmeyi çalışan düğümlerinde yerel olarak gerçekleştirebilir.

Dağıtılmış şema içindeki tablolar her zaman birbiriyle birlikte bulunur.

Sonraki adımlar