Veritabanı Kopyalama/Replikasyon (Replication)

Diyelim ki bir sunucumuz ve bu sunucu üzerinde de bir veritabanımız var. Binlerce kişi aynı anda bu veritabanına bağlandığını düşünelim (Bakınız. Facebook, Twitter vb sosyal medya veritabanları). Bu sunucu, günümüz şartlarında (2014) kaynakları ne kadar kuvvetli olursa olsun, bütün isteklere cevap vermekte zorlanacaktır. Bu nedenle de işlem yapmak çok uzun sürecektir. Ayrıca sadece bir veritabanının sadece bir sunucu üzerinde çalışması veri karmaşasının oluşmasına sebep olur. Buna bağlı olarak da veritabanının yönetimi zorlaşır. Bu durumdan kurtulmak içinde kopyalama/replikastion yapılır. Kopyalama demek bir veritabanının bir veya daha fazla kopyasının aynı anda farklı sunucular üzerinde çalışır durumda olmasıdır. Böylelikle iş yükü dağıtılmış/paylaştırılmış olur. Ya kopyalama banka şubelerindeki veznelerin sayısının birden fazla olması gibi bir şey. Müşteriler (veritabanı üzerinde yapılacak işlemler) bu veznelere (veritabanlarına) gelip işlemlerini (select/insert/update/delete) yaparlar.

Kopyalama işlemini yapabilmek için öncelikle kopyalama modelinin belirlenmesi gerekir. Microsoft SQL Server tarafında işler (jobs) SQL Server Agent tarafından yapılır. Kopyalama işlemi de bir iş olduğu için SQL Server Agent kopyalama işlemini yapar. SQL Server Agent’ın alt birimleri vardır. Bunların her biri bir modele karşılık gelir.

Anlık Görüntü Çoğaltma (Snapshot Replication) yapılmak istenirse veritabanının o anki haliyle alınıp kopyalanır. Anlık kopyalamadan sonra gerçek veritabanında gerçekleştirilen operasyonlar (ekleme, çıkarma, güncelleme vb) kopya veritabanına aktarılmaz. Bu metod en güncel veriye ihtiyaç duyulmayan senaryolarda tercih edilir. Kopya veritabanı statik yani değişmeyen veri içerir. Bu duruma örnek olarak posta kodlarının yeniden düzenlenmesi senaryosunu verebiliriz. Varolan posta kodu tablosunun anlık görüntüsü alınıp ilgili kişiler tarafında işlemler yapılabilir. Posta kodları sürekli değişmediği için bu metodun uygulanması uygundur.

İşlemsel Çoğaltma (Transactional Replication) metodunda çoğaltma yapılmak istendiği zaman ilk olarak anlık görüntü metodu uygulanır. Daha sonra gerçek veritabanının anlık görüntü çekildiği an ile güncel an arasındaki zaman diliminin kayıtları kullanılarak kopya veritabanı üzerinde çalıştırılır. Bu sayede gerçek veritabanı ile kopya veritabanı arasındaki zaman diliminden doğan veri farkı giderilmiş olur. Arada çok az bir gecikmeden doğan veri farklılığı (veritabanının kullanım sıklığına bağlı olarak) bulunabilir. Bu metod sık sık kullanılan veritabanlarında güncel veriyle işlem yapılmak istendiği zamanlarda kullanılabilir.

Birleşik Çoğaltma (Merge Replication) en karmaşık çoğaltma tipidir. Burada bilginin birleştirilmesi ve tek bir güncel bilginin elde edilmeye çalışılması amaçlanır. Birleşik çoğaltmayı bir örnek ile anlatmaya çalışalım. Birden fazla sunucu üzerinde aynı veritabanı bulunsun. Fakat farz edelim ki sunucular arasında ağ bağlantısı olmadığı için haberleşme yapılamıyor olsun. Sadece akşamları tüm sunucular ağ bağlantısını kursunlar. Bu durumda aynı veritabanından sunucu sayısı kadar farklı çeşit olması anlamına gelir. Çünkü her biri başta aynı veriye sahip olan veritabanı üzerinde gün boyu farklı işlemler gerçekleştirirler. Bu durumda tüm bu verilerin zaman değişimine göre birleştirilip en son ve gerçek veriyi gerçek veritabanı üzerine yazması gerekir. Bu işlemler yapılırken veri çakışmaları gerçekleşebilir. Aynı tablonun bir satırındaki bilgi diğer kopya veritabanında farklı bir değere sahip olabilir. Burada hangi bilginin gerçek ya da en son bilgi olduğunu karmaşası yaşanır. Bu nedenle en karmaşık model budur.

Sohbete katılın

4 yorum

Yorum Gönderin

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir