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.
Önemli
PostgreSQL için Azure Cosmos DB artık yeni projeler için desteklenmemektedir. Bu hizmeti yeni projeler için kullanmayın. Bunun yerine, şu iki hizmetlerden birini kullanın:
99,999% kullanılabilirlik hizmet düzeyi sözleşmesi (SLA), anında otomatik ölçeklendirme ve birden çok bölgede otomatik yük devretme ile yüksek ölçekli senaryolar için tasarlanmış dağıtılmış bir veritabanı çözümü için NoSQL için Azure Cosmos DB kullanın.
Açık kaynak Citus uzantısını kullanarak bölümlenmiş Azure Veritabanı'nın PostgreSQL için Elastik Kümeler özelliğini kullanın.
Düğümler
PostgreSQL için Azure Cosmos DB, PostgreSQL sunucularının (düğümler olarak adlandırılır) "paylaşılan hiçbir şey yok" mimarisinde birbirleriyle eşgüdüm sağlamasına olanak tanır. Bir kümedeki düğümler topluca daha fazla veri tutar ve tek bir sunucuda mümkün olandan daha fazla CPU çekirdeği kullanır. Mimari ayrıca kümeye daha fazla düğüm ekleyerek veritabanının ölçeklendirilmesini sağlar.
Koordinatör ve çalışanlar
Her kümenin bir koordinatör düğümü ve birden çok çalışanı vardır. Uygulamalar sorgularını ilgili çalışanlara aktaran ve sonuçlarını biriktiren koordinatör düğümüne gönderir.
PostgreSQL için Azure Cosmos DB, veritabanı yöneticisinin tabloları ve/veya şemaları dağıtarak farklı çalışan düğümlerinde farklı satırlar depolamasına olanak tanır. Dağıtılmış tablolar ve/veya şemalar, PostgreSQL için Azure Cosmos DB performansının anahtarıdır. Tabloların ve/veya şemaların dağıtılaamaması, bunları tamamen koordinatör düğümünde bırakır ve makineler arası paralellikten yararlanamaz.
Dağıtılmış tablolardaki her sorgu için, koordinatör bunu tek bir çalışan düğümüne yönlendirir veya gerekli verilerin tek bir düğümde mi yoksa birden çok düğümde mi bulunduğuna bağlı olarak birkaç farklı düğümde paralelleştirir. Şema tabanlı parçalama ile koordinatör sorguları doğrudan şemayı barındıran düğüme yönlendirir. Hem şema tabanlı parçalama hem de satır tabanlı parçalamada, koordinatör meta veri tablolarına danışarak ne yapacağına karar verir. Bu tablolar, çalışan düğümlerin DNS adlarını ve sağlık durumlarını ve düğümler arasında veri dağılımını izler.
Tablo türleri
Kümede her biri farklı düğümlerde depolanan ve farklı amaçlar için kullanılan beş tür tablo vardır.
Tür 1: Dağıtılmış tablolar
İlk tür ve en yaygın olanı dağıtılmış tablolardır. SQL deyimleri için normal tablolar gibi görünürler, ancak çalışan düğümleri arasında yatay olarak bölümlenmişlerdir. Bunun anlamı, tablonun satırlarının parçalar olarak adlandırılan parça tablolarında farklı düğümlerde depolanmasıdır.
PostgreSQL için Azure Cosmos DB, küme genelinde yalnızca SQL değil DDL deyimlerini de çalıştırır. Dağıtılmış bir tablonun şemasının değiştirilmesi, tablonun tüm parçalarının sunucular arasında güncellenmesine neden olur.
Dağıtım sütunu
PostgreSQL için Azure Cosmos DB, parçalara satır atamak için algoritmik parçalama kullanır. Atama, dağıtım sütunu olarak adlandırılan tablo sütununun değerine göre belirlenimci olarak yapılır. Küme yöneticisi bir tablo dağıtırken bu sütunu belirlemelidir. Doğru seçimi yapmak, performans ve işlevsellik açısından önemlidir.
Tip 2: Başvuru tabloları
Başvuru tablosu, tüm içeriği tek bir parçaya odaklanmış dağıtılmış bir tablo türüdür. Parçacık her çalışana çoğaltılır. Herhangi bir çalışanda yapılan sorgular, başka bir düğümden satır isteme ağ yükü olmadan başvuru bilgilerine yerel olarak erişebilir. Satır başına ayrı parçaları ayırt etmeye gerek olmadığından başvuru tablolarında dağıtım sütunu yoktur.
Başvuru tabloları genellikle küçüktür ve herhangi bir çalışan düğümünde çalıştırılan sorgularla ilgili verileri depolamak için kullanılır. Sipariş durumları veya ürün kategorileri gibi numaralandırılmış değerler buna örnek olarak verilmiştir.
Tür 3: Yerel tablolar
PostgreSQL için Azure Cosmos DB kullandığınızda, bağlandığınız koordinatör düğümü normal bir PostgreSQL veritabanıdır. Koordinatörde sıradan tablolar oluşturabilir ve bunları parçalamamayı seçebilirsiniz.
Yerel tablolar için iyi bir aday, birleştirme sorgularına katılmayan küçük yönetim tabloları olabilir. Uygulama oturum açma ve kimlik doğrulaması için bir users tablo buna örnek olarak verilmiştir.
Tür 4: Yerel yönetilen tablolar
PostgreSQL için Azure Cosmos DB, yerel tablo ile başvuru tablosu arasında yabancı anahtar başvurusu varsa meta veriye otomatik olarak yerel tablolar ekleyebilir. Ayrıca yerel olarak yönetilen tablolar, normal yerel tablolarda create_reference_table citus_add_local_table_to_metadata işlevi yürütülerek el ile oluşturulabilir. Meta verilerde bulunan tablolar yönetilen tablolar olarak kabul edilir ve herhangi bir düğümden sorgulanabilir, Citus yerel yönetilen tablodan veri almak için koordinatöre yönlendirmeyi bilir. Bu tür tablolar citus_tables görünümde yerel olarak görüntülenir.
Tür 5: Şema tabloları
Citus 12.0'da kullanıma sunulan şema tabanlı parçalama ile, dağıtılmış şemalar tek tek ortak konum gruplarıyla otomatik olarak ilişkilendirilir. Bu şemalarda oluşturulan tablolar, parça anahtarı olmadan otomatik olarak birlikte bulunan dağıtılmış tablolara dönüştürülür. Bu tür tablolar şema tabloları olarak kabul edilir ve citus_tables görünümde şema olarak görüntülenir.
Parçalar
Önceki bölümde dağıtılmış tabloların çalışan düğümlerinde parça olarak nasıl depolandığı açıklanmıştır. Bu bölümde daha fazla teknik ayrıntı ele alınmaktadır.
pg_dist_shard Koordinatördeki meta veri tablosu, sistemdeki her dağıtılmış tablonun her parçası için bir satır içerir. Satır, bir karma alanda (shardminvalue, shardmaxvalue) tamsayı aralığına sahip bir parça kimliğiyle eşleşir.
SELECT * from pg_dist_shard;
logicalrelid | shardid | shardstorage | shardminvalue | shardmaxvalue
---------------+---------+--------------+---------------+---------------
github_events | 102026 | t | 268435456 | 402653183
github_events | 102027 | t | 402653184 | 536870911
github_events | 102028 | t | 536870912 | 671088639
github_events | 102029 | t | 671088640 | 805306367
(4 rows)
Koordinatör düğümü, hangi parçanın bir github_events satırını barındırdığını belirlemek istiyorsa, satırdaki dağıtım sütununun değerinin karma değerini hesaplar. Ardından düğüm, hangi parça aralığının karma değeri içerdiğini denetler. Karma işlevinin görüntüsü, aralıkların ayrık birleşimi olacak şekilde tanımlanır.
Parça yerleşimleri
Varsayalım ki parça 102027, söz konusu satırla ilişkilidir. Satır, çalışanlardan birindeki github_events_102027 adlı tabloda okunur veya yazılır. Hangi işçi? Bu, tamamen meta veri tabloları tarafından belirlenir. Parçanın çalışana atanması, parça yerleşimi olarak bilinir.
Koordinatör düğümü, sorguları github_events_102027 gibi belirli tablolara başvuran parçalara yeniden yazar ve bu parçaları uygun çalışanlarda işletir. Aşağıda, parça kimliği 102027 tutan düğümü bulmak için arka planda çalıştırılacak bir sorgu örneği verilmiştır.
SELECT
shardid,
node.nodename,
node.nodeport
FROM pg_dist_placement placement
JOIN pg_dist_node node
ON placement.groupid = node.groupid
AND node.noderole = 'primary'::noderole
WHERE shardid = 102027;
┌─────────┬───────────┬──────────┐
│ shardid │ nodename │ nodeport │
├─────────┼───────────┼──────────┤
│ 102027 │ localhost │ 5433 │
└─────────┴───────────┴──────────┘
Sonraki adımlar
- Veri modellemeye hazırlanmak için uygulamanızın türünü belirleme
- Yararlı tanılama sorguları ile parçaları ve yerleştirmeleri inceleyin.