Yüksek Erişilebilirlik Serisi – Replication 2
Makale serimize replication nedir ve replication ile ilgili temel tanımlardan bahsederek başlamıştık. Bu makalemizde ise replication tiplerinden ve aralarındaki farklılıklardan bahsedeceğiz.
Replication SQL Server 7.0 sürümü ile belirli olgunluk seviyesine ulaşmış ve o günden beri hayatımızda olan bir yüksek süreklilik çözümüdür. Temel olarak üç farklı replication tipi mevcuttur. Bunlar;
• Snapshot Replication
• Transactional Replication
• Merge Replication
SQL Server 2005 ile beraber transactional replication’a bilişim dünyasındaki ihtiyaçlar doğrultusunda Peer To Peer replication eklendi ve bunun sayesinde replication ile oluşturulabilecek yüksek süreklilik kurguları arttı.
Peki bu üç replication tipinin birbirinden farkı nedir? Bu soruya replication tiplerini tanımlayarak cevap bulmaya çalışalım.
Snapshot Replication
Adında da anlaşılacağı üzere snapshot replication belirli bir anda yayının içinde bulunan makalelerin tamamının abonelere gönderildiği durumdur. Snapshot replication’ın bir diğer önemli özelliği her zaman tek yönlüdür. Snapshot replication tipi küçük ölçekli tabloların, programlama nesnelerinin veya bulk değişiklik yapılan tabloların yaygınlaştırılma ihtiyaçları için uygun bir çözümdür. Örneğin günde bir truncate/insert kullanılarak beslenen bir tablonun replication ihtiyacının olması durumda seçilmesi gereken en iyi replication tipi snapshot replication olacaktır.
Transactional Replication
Bu replication tipinde sadece değişen kayıtlar ve programlama nesneleri abonelere yayınlanır. Transactinal replication yayının snapshot replication yapılarak tüm makalelerin abonelere yaygınlaştırılmasıyla başlar ve yayıncı üzerindeki işlem tabanlı değişiklikleri abonelere yaygınlaştırır. Bu tip replicationda aboneler değiştirilebilir özellikte olabilir. Bu tip abonelere “Updatable Subscription” yani değiştirilebilir abone denir. Peer to Peer replication modeli de aslında transactional replication’ın bir özelliği olarak karşımıza çıkar ve bu model “Multi Master” yani çoklu ana model olarak da bilinir. Peer to Peer replication modelinde her abone yani her peer yayıncı olarak davranır.
Transactional replication modelinde bahsedilmesi gereken bir diğer önemli konu, her değişikliğin abonelere yaygınlaştırılmasıdır. Bu durum özellikle finans uygulamalarında kayıdın izinin takip edilmesi gerektiği durumlar için önemli bir özelliktir. Örneğin bir tabloda bir kaydın iki kez üst üste beklemeden update edilmesi durumunda transactional replication her iki update ifadesinin abonelere yaygınlaştırılmasını sağlayacaktır.

Resim1: Transactional replication çalışma prensibi
Merge Replication
Bu replication tipinde abonelerde yapılan veri manupulasyonları yayıncıya, yayıncı aracılığıyla da diğer abonelerle yaygınlaştırılır. Merge replicationda bilinmesi gereken diğer önemli durum ise son replication sürecinden sonra değişenlerin son hallerinin yaygınlaştırılacağıdır. Transactional replicationda verdiğimiz örneği tekrarlayacak olursak bir tabloda bir kaydın iki kez üst üste beklemeden update edilmesi durumunda Merge replication süreci başladığında en son gerçekleşen update ifadesi yaygınlaştırılaacaktır. Bu durum replication ihtiyaçları kurgulanırken mutlaka göz önüne alınmalıdır.
Finans uygulamalarından bir örnek vererek konuyu derinleştirelim. Müşteri hesaplarını tutan bir tablo üzerinde trigger olduğunu ve bu triggerın da insert,update ve delete işlemlerini farklı bir tabloya logladığını düşünelim. Herhangi bir hesaptan öncelikle para çekildiği ve replication süreçleri başlamadan aynı miktarda para yatırıldığı bir senaryonun gerçek olması durumda abonelerde bulunan hesap haraketleri tablosuna trigger aracılığıyla herhangi bir kayıt atılmayacağı anlamına gelir. Bu durum da bir çok karışıklığa yol açabilir. Dolayısıyla bu farklılık merge replication’ı transactional replicationdan ayıran en önemli farktır.

Resim2: Merge replication çalışma prensibi
Bu makelemizde Microsoft SQL Server tarafından bizlere sunuculan replication tipleriüzerinde durduk. Bir sonraki makalemizde replication süreçlerinde çalışan agent’danbahsediyor olacağız.