Melih Kavraz - Azure Synapse Analytics, SQL Server

Azure Synapse Analytics – Tablo Dağıtım Tipleri

Azure Synapse Analytics, veri ambarı, büyük veri işleme ve makine öğrenimi için kullanılan bulut tabanlı bir analiz hizmetidir. Platform, çeşitli iş yüklerini barındırmak için farklı veri dağıtım türleri sağlayarak verimli veri işleme ve analizine olanak tanır.

Dağıtım türü, verilerin bir kümedeki düğümler arasında depolanma ve dağıtılma şeklini ifade eder. Dağıtım türü performansı, ölçeklenebilirliği ve maliyeti etkileyebilir. Azure Synapse Analytics, üç dağıtım türünü destekler: Round Robin, Replicate ve Hash.

Round Robin

Round-robin, verilerin sistemdeki tüm düğümlere eşit olarak dağıtıldığı bir dağıtım türüdür. Azure Synapse Analytics’te bu genellikle her veri satırının dairesel bir şekilde farklı bir düğüme atanmasıyla elde edilir.

Aşağıdaki verileri içeren bir tablo düşünün:

IDNameAge
1Harry20
2Hermione21
3Ron22
4Albus70
5Severus65

Bu verileri üç düğüme dağıtmak için round-robin dağıtımını kullanırsak, veriler şu şekilde dağıtılır:

Gördüğünüz gibi, veriler her üç düğüme de eşit olarak dağıtılır.

Round-robin dağıtımı, yüksek derecede benzersizliğe sahip bir sütunu olmayan tablolar için idealdir. Bunun nedeni, sıralı dağıtım kullanılırken verilerin belirli bir şekilde gruplanmaması veya sıralanmamasıdır. Tablonuzdaki verilerin dağıtımı için uygun bir kolon bulunmuyorsa round-robin dağıtım yöntemi doğru bir seçim olabilir.

Azure Synapse Analytics’te round-robin dağıtımına sahip bir tablo oluşturmak için, ROUND_ROBIN dağıtım seçeneğini belirleyebilirsiniz. Örneğin:

CREATE TABLE stg.dimEmployee
(
    ID INT,
    Name VARCHAR(50),
    Age INT
)
WITH
(
    DISTRIBUTION = ROUND_ROBIN
);

ROUND_ROBIN dağıtım seçeneğini kullanarak, stg.dimEmployee tablosundaki veriler, sistemdeki tüm düğümlere eşit bir şekilde eşit olarak dağıtılacaktır.

Replicate Distribution

Replicate dağıtımı, verilerin sistemdeki tüm işlem düğümlerinde çoğaltıldığı bir dağıtım türüdür. Bu, her bir işlem düğümünün verilerin eksiksiz bir kopyasını içerdiği anlamına gelir.

Replicate, birden çok tablodaki verileri sık sık joinlemeniz veya aggregate etmeniz gereken durumlarda kullanışlıdır. Verileri tüm düğümlerde çoğaltarak, her bir işlem düğümünün istenen işlemleri yapması için gereken veri taşıma miktarını azaltabilirsiniz.

Ancak, replicate dağıtımının, büyük miktarda veri içeren tablolar veya sık sık güncellenen sütunlara sahip tablolar için ideal olmadığını unutmayın. Bunun nedeni, verileri tüm düğümlerde çoğaltmanın büyük miktarda depolama alanı kullanması ve birden çok düğümde güncelleme yapılacağı için daha yavaş update performansına neden olabilmesidir.

Azure Synapse Analytics’te replicate dağıtımını kullanmak için, bir tablo oluştururken veya değiştirirken REPLICATE dağıtım seçeneğini belirleyebilirsiniz. Örneğin:

CREATE TABLE dimEmployee
(
    ID INT,
    Name VARCHAR(50),
    Age INT
)
WITH
(
    DISTRIBUTION = REPLICATE
);

REPLICATE dağıtım seçeneğini kullanarak, dimEmployee tablosundaki veriler sistemdeki tüm işlem düğümlerinde çoğaltılacaktır.

Bu, birden çok tablodaki verileri sık sık birleştirmek veya toplamak için yararlı olabilir, ancak büyük miktarda veri içeren tablolar veya sık sık güncellenen sütunlar için ideal olmayabilir.

dimEmployee adında aşağıdaki verilere sahip bir tablonuz olduğunu düşünün:

IDNameAge
1Harry20
2Hermione21
3Ron22
4Albus70
5Severus65

Dağıtmak için çoğaltma dağıtımını kullanırsak, her işlem düğümü verilerin eksiksiz bir kopyasını içerir:

Gördüğünüz gibi, her işlem düğümü, verilerin eksiksiz bir kopyasını içerir. Bu, işlemler için gereken veri taşıma miktarını azalttığından, birden çok tablodaki verileri sık sık joinlemek veya aggregate etmek için yararlı olabilir. Ancak, büyük miktarda depolama alanı tüketebileceğinden ve daha yavaş güncelleme performansına neden olabileceğinden, çoğaltma dağıtımının büyük miktarda veri içeren tablolar veya sık sık güncellenen sütunlara sahip tablolar için ideal olmadığını unutmayın.

Hash Distribution

Hash dağıtımı, verilerin belirli bir sütunun belirlenerek içerdiği değerlere göre dağıtıldığı bir dağıtım türüdür. Azure Synapse Analytics’de sistem, belirtilen sütun için bir hash değeri hesaplar ve verilerin hangi düğüme gönderilmesi gerektiğini belirlemek için bu değeri kullanır.

Hash dağıtımı, yüksek derecede benzersizliğe sahip bir sütuna sahip tablolar için idealdir. Hash dağıtımı kullanılırken, veriler belirtilen sütunun değerine göre birlikte gruplandırılır. Sütunun yüksek derecede benzersizliği varsa, veriler sistemdeki tüm düğümlere eşit olarak dağıtılacaktır.

Azure Synapse Analytics’te hash dağıtıma sahip bir tablo oluşturmak için, bir tablo oluştururken veya değiştirirken HASH dağıtım seçeneğini ve dağıtım için kullanılacak sütunun adını belirtebilirsiniz.

FactOrder adında aşağıdaki kolonları içeren bir tablonuz olduğunu düşünün:

BrandIDProductIDOrderDateTotal
1P12022-01-01100.00
1P22022-01-02200.00
1P32022-01-03300.00
1P42022-01-04400.00
1P52022-01-05500.00

Ve CustomerID kolonlarına göre dağıtım dağıtım yapmak istediğinizi düşünün. Hash dağıtımına sahip tabloyu aşağıdaki gibi oluşturabilirsiniz:

CREATE TABLE FactOrder
(
    BrandID INT,
    ProductID INT,
    OrderDate DATE,
    Total DECIMAL(10,2)
)
WITH
(
    DISTRIBUTION = HASH(ProductID)
);

HASH(ProductID) dağıtım yöntemini kullanarak FactOrder tablosu ProductID kolonun içerdiği veriye göre tüm düğümlere dağıtılır.

Özetle, hash dağıtım, Azure Synapse Analytics’te verileri belirtilen bir sütunun değerine göre birden çok düğüm arasında dağıtmanıza olanak tanıyan kullanışlı bir dağıtım türüdür. Verileri belirtilen sütunun değerine göre gruplandırdığından, yüksek derecede benzersizliğe sahip bir sütuna sahip tablolar için idealdir.

Multi Column Hash Distribution

Hash dağıtım, verileri belirtilen sütunun değerine göre gruplandırmanıza ve sistemdeki birden çok düğüme dağıtmanıza olanak tanır.

Ancak çoğu durumda, verileri etkili bir şekilde dağıtmak için tek bir sütun yeterli olmayabilir. Örneğin, birçok satırı ve birden çok sütunu olan büyük bir tablonuz varsa, verileri tek bir sütuna göre dağıtmak, eşit olmayan veri dağıtımına ve düşük sorgu performansına neden olabilir.

Azure Synapse Analytics, bu sorunu çözmek için artık çok sütunlu hash dağıtımını desteklemektedir. Çok sütunlu hash dağıtımla, dağıtım için kullanılacak birden çok sütun belirtebilirsiniz ve sistem, bu sütunların birleşik değerlerine dayalı olarak bir hash değeri hesaplar.

FactOrder adında aşağıdaki kolonları içeren bir tablonuz olduğunu düşünün:

BrandIDProductIDOrderDateTotal
1P12022-01-01100.00
2P22022-01-02200.00
3P32022-01-03300.00
4P42022-01-04400.00
5P52022-01-05500.00
6P62022-01-06600.00

BrandID ve ProductID kolonlarına göre dağıtım yaptığınızı düşünün. Çok sütunlu hash dağıtımına sahip tabloyu aşağıdaki gibi oluşturabilirsiniz:

CREATE TABLE FactOrder
(
    BrandID INT,
    ProductID INT,
    OrderDate DATE,
    Total DECIMAL(10,2)
)
WITH
(
    DISTRIBUTION = HASH(BrandID, ProductID)
);

HASH(BrandID, ProductID) dağıtım seçeneği ile, FactOrder tablosundaki tüm veriler BrandID ve ProductID kolonlarına göre tüm düğümlere dağıtılır. Bu, daha eşit veri dağıtımı ve daha iyi sorgu performansı ile sonuçlanabilir.

Özetlemek gerekirse, çok sütunlu hash dağıtım, Azure Synapse Analytics’te verileri birden çok sütunun birleştirilmiş değerlerine göre birden çok düğüm arasında dağıtmanıza olanak tanıyan önemli bir özelliktir. Bu, özellikle çok sütunlu büyük tablolar için daha eşit veri dağıtımı ve daha iyi sorgu performansı sağlayabilir.

Dağıtım tipleri için daha fazlasını öğrenmek için resmi dökümantasyon‘u inceleyebilirsiniz.

Melih Kavraz

Add comment

Sosyal kanallar üzerinden benimle iletişime geçebilirsiniz.