2. 01. Nedir Dağıtık Veritabanı?
Dağıtık veri tabanı yönetim sistemi, dağıtık bir veri
tabanının yönetilmesini ve verilerin kullanıcılara
sunulmasını sağlayan bir yazılım sistemidir.
Dağıtık veri tabanı ise bir bilgisayar ağı ile bağlı ancak
birbirinden ayrı veri tabanıdır. Bu sayede dağıtık bir veri
tabanı yönetim sistemi aynı anda birden fazla veri tabanı
üzerinde işlem yapabilir.
3. 01. Nedir Dağıtık Veritabanı?
Dağıtık sistemler, farklı bilgisayarlardaki donanım ve yazılım
bileşenleri arasında verilerin daha güvenli, daha şeffaf ve
daha performanslı olarak tutulmasını sağlayan sistemdir.
Dağıtık sistemlerin var oluş amacı, kaynakları paylaşmaya
duyulan gerekliliktir. Bu kaynaklar, donanımsal olabileceği
gibi veritabanları gibi yazılımsal varlıklar da olabilir.
Büyük ağlarda, dağıtık sistemler, tek bir bilgisayar gibi
davranır ve en iyi performansı sağlar.
4. 01. Nedir Dağıtık Veritabanı?
Dağıtık sistemler, farklı bilgisayarlardaki donanım ve yazılım
bileşenleri arasında verilerin daha güvenli, daha şeffaf ve
daha performanslı olarak tutulmasını sağlayan sistemdir.
Dağıtık sistemlerin var oluş amacı, kaynakları paylaşmaya
duyulan gerekliliktir. Bu kaynaklar, donanımsal olabileceği
gibi veritabanları gibi yazılımsal varlıklar da olabilir.
Büyük ağlarda, dağıtık sistemler, tek bir bilgisayar gibi
davranır ve en iyi performansı sağlar.
5. 01. Nedir Dağıtık Veritabanı?
Genel manada, dağıtık veritabanı sistemlerinin bize avantajları şu
şekildedir.
1. İzole değildir, genişlemeye hazır yapıların temelini
oluşturmaktadır.
2. Cloud’un temelini oluşturmaktadır. Dağıtık mimariler, bulut
sistemleri gibi davranarak, farklı yapıları tek bir yapı olarak
göstererek, bir çok avantaj kazanımını da beraberinde
getirmektedir.
3. Senkron ve replikedir. Sürekli olarak yedekleri alınarak, CDN gibi
teknolojilerle sürekli dağıtılarak, veriler ve raporların çok hızlı
süreler içinde farklı sistemler üzerinden toparlanarak getirilmesini
sağlamaktadır.
4. Yedekli çalışmaktadır. Bir veri, birden fazla sistem üzerinde
tutulduğundan dolayı, bir DB sisteminde yaşanacak olan problem
ya da veri kaybı, diğer sistemlerle tolere edilebilmektedir. RAID
sistemleri gibi düşünebilirsin salocum.
6. 01. Nedir Dağıtık Veritabanı?
Neden tek veritabanı değil?
Tek bir sunucu üzerinde çalışan veritabanı kullanılmak yerine
veritabanını birçok sunucuya dağıtarak kullanmanın (sharding)
faydaları:
• Özellikle sunucuların farklı ortamlarda (bina, şehir) saklandığı
durumlarda eğer birisinde güç kesintisi veya donanım
problemi meydana gelirse sistemin diğeri tarafından devam
ettirilmesi sağlanır.
• Yük paylaşımı yapılarak, daha çok kullanıcıya daha kısa
sürelerde yanıt verilebilmesi sağlanır.
• Daha fazla depolama kapasitesi elde edilir.
• Bir sunucuda disk arızası olması durumunda verilerin
kaybolmaması sağlanır (aynı sunucuda replica kullanılması ile
de bu sağlanabilir).
7. 02. Dağıtık Veritabanı Avantajları
02.01. Şeffaflık/Geçirgenlik (Transparency)
Kaynaklar ve işlemlerin ağ üzerinde dağıtık
olduğundan yapılan işlemler ve «dağıtım»
işlemleri görülebilir, yönetilebilir ve kontrol
edilebilmektedir.
Bu da, sistem üzerinde yaşanabilecek bir sorunun
local olarak gizli kalması yerine, birden fazla yerde
görülebilmesi ve önlem alınabilmesi gibi konuları
beraberinde getirmektedir.
8. 02. Dağıtık Veritabanı Avantajları
02.02. Parçalama (Fragmentation)
Verinin farklı saklama düğümlerine gönderilmek üzere nasıl
parçalanacağı belirlenirken 3 farklı yöntemden biri tercih
edilebilir:
Dikey parçalama: Tablonun sütunlarının farklı düğümlerde
olacak şekilde parçalanması
Yatay parçalama: Belirli bir kriter ile kayıtların parçalanması
Hibrit parçalama: Belirli sütunlardaki verilerden seçilen
kritere göre kayıtların parçalanması
9. 02. Dağıtık Veritabanı Avantajları
02.03. Yineleme (Replikasyon)
• Her parça sistemdeki tüm sunucularda saklanabilir veya
seçilmiş parçalar, seçilmiş sunucularda saklanabilir.
• İstemcinin bir sunucu üzerinde yaptığı değişikliğin diğer
sunuculara da yansıtılması gereklidir.
• Replication işlemi dağıtık veritabanında değişiklikler
arayan özel bir yazılım kullanmayı gerektirir.
• Değişiklikler tespit edildikten sonra, Replication işlemi
tüm sunucuların aynı olmasını sağlar.
• Replication dağıtık veritabanlarının boyutuna ve sayısına
bağlı olarak karmaşık ve zaman alıcı olabilir (bilgisayar
kaynaklarını çok kullanabilir).
10. 02. Dağıtık Veritabanı Avantajları
02.04. Kısmi Yineleme (Partial Replikasyon)
• Her parça sistemdeki tüm sunucularda saklanabilir veya
seçilmiş parçalar, seçilmiş sunucularda saklanabilir.
• İstemcinin bir sunucu üzerinde yaptığı değişikliğin diğer
sunuculara da yansıtılması gereklidir.
• Replication işlemi dağıtık veritabanında değişiklikler
arayan özel bir yazılım kullanmayı gerektirir.
• Değişiklikler tespit edildikten sonra, Replication işlemi
tüm sunucuların aynı olmasını sağlar.
• Replication dağıtık veritabanlarının boyutuna ve sayısına
bağlı olarak karmaşık ve zaman alıcı olabilir (bilgisayar
kaynaklarını çok kullanabilir).
11. 02. Dağıtık Veritabanı Avantajları
02.05. Kopyalama (Duplication)
• Duplication işleminde master olarak tanımlanan bir
veritabanı, belirli zaman aralıkları ile replica olarak
bilinen diğer veritabanlarına kopyalanır.
• Bu işlemde, istemciler yalnızca master veritabanı
üzerinde değişiklik yapabilir. Bu nedenle DML
işlemlerinde yük dengeleme yoktur.
• Sorgularda replica’lar kullanılabildiği için yük dengeleme
vardır.
• Master'dan replica'lara doğru tek yönlü bir güncelleme
yapıldığı için işlem basit ve hızlıdır.
12. 02. Dağıtık Veritabanı Avantajları
02.06. Bölünmezlik (Atomicity)
• Hareket (transaction) işlemede Atomicity* özelliğini
sağlamak için Commit ve Rollback işlemlerinin
gerekliliğinden bahsetmiştik.
• Dağıtık VT sisteminde iki aşamalı Commit mekanizmasına
ihtiyaç vardır:
1. Transaction T'yi başlatan sunucu koordinatör olur ve T'yi
tamamlamak (commit) istediğinde diğer sunuculara
"prepare T" mesajı gönderir.
2. Mesajı alan sunucular "ready T" veya "don't commit T"
gönderir (bu işlem biraz zaman alabileceği için
koordinatör yanıtı alana kadar beklemelidir).
3. Eğer koordinatör herkesten "ready" yanıtı aldıysa bu defa
diğer sunuculara "commit T" mesajı gönderir. Bir
tanesinden bile "don't commit" aldıysa, "abort T" mesajı
gönderir.
4. Tüm sunucular aldıkları mesaja göre, kendi yerel
hareketlerini "commit" veya "rollback" ederler.
13. 02. Dağıtık Veritabanı Avantajları
02.07. İzolasyon (Isolation)
• Okuma (Sorgular) ve Yazma(DML) işlemlerinde Isolation
özelliğini sağlamak için Kilit (Lock) mekanizmalarına
ihtiyaç vardır.
• Dağıtık Kilitleme 3 farklı yaklaşım ile yapılabilir:
1. Merkezi: Bir adanmış sunucu tüm kilit işlemlerinden
sorumlu olur (o sunucuda oluşacak olan hata sistemi
çalışmaz hale getirecek ve performans düşük olacak)
2. Temel-kopya: VT'deki her verinin temel kopyası farklı
düğümlerde kayıtlıdır ve o veriyi kilitlemek isteyen bir
hareket, o verinin sahibi olan düğümden kilit için izin
ister
3. Tam-dağıtık: Okuma için elemanın herhangi bir
kopyasını kilitleme, yazmak için ise tüm kopyalarını
kilitleme mantığı
14. 02. Dağıtık Veritabanı Avantajları
02.08. Kümeleme (Cluster)
• Küme (cluster) yapısı kullanıldığından erişilen verinin
hangi düğümde saklandığı erişen istemci tarafından
bilinmez.
• Küme: Dışarıdan tek bir sunucuymuş gibi algılanan ama
aslında çok çok sunuculu veya çok lokasyonlu yapıdır.
Kullanıcı sorgu çektiğinde, 1 saniye içinde önüne sonuç
gelir. Bunun tek bir veritabanından geldiğini zannetse
de, arka planda onlarca veritabanından sorgu dönebilir.
15. 02. Dağıtık Veritabanı Avantajları
02.09. Büyüme ve Genişleme
Cloud benzeri bir mimariye sahip olduğu için, kullanıcılar
tarafından ilk etapta ciddi bir yatırım gücü ayırmak yerine,
ilk etapta az bir kaynakla başlanan sistem, duruma göre
kaynaklar artırılarak genişletilebilmektedir.
Gerek performans anlamında, gerekse mimarinin
katmanlanması anlamında giderek gelişmeye hazır bir
yapıdır.
1 Milyon kayıtlık ve 2 sunucu ile başlanan bir sistem, ilerde
milyarlık kayıtlar, farklı lokasyonlar ve onlarca sunucuya
dönüşebilir. İhtiyaç duyulması halinde, sistem yükü
azaldıkça kaynaklar azaltılarak yapı tekrar küçültülebilir.
Performans anlamında da, veritabanı dağıtıklığı anlamında
da, lokasyon anlamında da genişletilebilir ve daraltılabilir
bir yapıya sahiptir.
16. 03. Dağıtık Veritabanı Güvenliği
Dağıtık mimarinin getirdiği avantajlardan bir
tanesi de güvenlik anlamında verilerimizin daha
güvenli tutulmasının sağlanabilmesidir.
1. Gizlilik
Verinin yetkisi olmayan kişiler tarafından
erişilebilmesidir.
Dağıtık veritabanı sistemleri, şeffaf ve izlebilir
olması dolayısıyla gizlilik konusunda avantaj
sağlamaktadır.
17. 03. Dağıtık Veritabanı Güvenliği
2. Erişilebilirlik
Verinin yalnızca yetkili kişiler tarafından
erişilebilmesidir. Dağıtık yapıda ve merkezi bir
kontrol sistemi olması dolayısıyla, erişilebilirlik
anlamında kullanıcılar için fayda sağlamaktadır.
Kullanıcılar, istedikleri yerden ve istedikleri kadar
(yetki dahilinde) veriye ulaşabilmektedir.
18. 03. Dağıtık Veritabanı Güvenliği
3. Bütünlük
Verinin, tam ve doğru olmasıdır.
Verilerin, erişim yetkisi olan kötü niyetli kişiler veya
erişim yetkisi olmamasına rağmen erişmiş kişiler
tarafından değiştirilmesi, verilerin birden çok noktada
saklanması avantajıyla engellenebilmektedir.
Bitcoin’in temelinde yatan «Blockchain» teknolojisi de
bütünlük ve dağıtık veri olarak güzel bir örnektir.
Yapılan transaction’ların toplam block dizinlerinin
%51’i tarafından onaylanmadığı sürece doğru kabul
edilmemesi örnek olarak verilebilmektedir.
19. 03. Dağıtık Veritabanı Güvenliği
DDoS Ataklarına Karşı Dayanıklı
Denial of Service olarak bilinen «hizmet aksatma
saldırıları», bilişim sistemlerine beklenenin çok
üzerinde istek gönderilerek sunucuların cevap
verememesini sağlamak üzere yapılmaktadır.
Bankacılık, online ticaret gibi sistemlerin, birkaç saatlik
devre dışı kalması gibi durumlarda, çok büyük
maliyetlerle karşı karşıya kalınmaktadır.
Dağıtık sistemlerde, bir lokasyondaki bir sunucuya
yapılabilecek atak, diğer sistemler tarafından tolere
edilerek, sorunsuz bir şekilde sistemin yanıt vermesini
sağlatılmaktadır.
20. 04. Dağıtık Veritabanları
Dağıtık veritabanı sistemi terimi birbirine
bağlanabilen ve birbirlerindeki nesneleri
kullanabilen farklı veritabanı sistemlerinin bütünü
olarak kullanılır.
Sistemdeki tüm veritabanının aynı tipte olduğu
durum homojen sistem, farklı VTYS'ler bulunması
durumu ise heterojen sistem olarak adlandırılır.
Heterojen sistemlerde farklı VTYS'ler arası
haberleşme "gateway" adı verilen arayüzler ile
sağlanır.
*VTYS: Veritabanı Yönetim Sistemleri
21. 04. Dağıtık Veritabanları
Veritabanı Bağı (Databases Link)
İki fiziksel veritabanı sunucusu arasındaki tek yönlü iletişim
yoludur.
• A veritabanına bağlı olan bir kullanıcı bu veritabanının
veri sözlüğüne eklenen bir bağ (dblink) ile B
veritabanındaki bilgilere ulaşabilir. Ama aynı bağlantı
kullanılarak B veritabanından A veritabanına ulaşılamaz
(B veritabanının sözlüğüne de A'ya ulaşabilmek için yeni
bir bağ eklenmelidir).
• Bulunulan veritabanındaki tüm kullanıcıların vt1
veritabanına bağlanabilmesi için:
CREATE PUBLIC DATABASE LINK vt1 USING 'vt1';
• Bulunulan veritabanındaki tüm kullanıcıların vt1'e, o
veritabanındaki bir kullanıcının üzerinden
bağlanabilmesi için:
CREATE DATABASE LINK vt1
CONNECT TO test IDENTIFIED BY abc123 USING 'vt1';
Diğer veritabanındaki personel tablosunu sorgulamak için bağ @
kullanılarak belirtilir:
SELECT * FROM personel@vt1;
22. 04. Dağıtık Veritabanları
Veriyi dağıtma nasıl yapılır ?
• Eğer küme yapısı kullanıyorsak farklı düğümdeki tablo için
DBLink ismi vermeye gerek yoktur (kümeye bağlanan
istemciler sistemi tek VT olarak görür).
• İster küme, ister çoklu VT yapısı kullanıyor olalım, tablonun
tamamını başka bir düğüme taşıyarak veriyi dağıtmak
uygun bir çözüm olmayabilir.
• Çok sorgu gönderilen bir tablonun kopyalarını farklı
düğümlerde saklamak ve yük dengeleme* kullanmak hız
kazandırabilir.
• Fakat veride değişiklik olduğu zaman tüm diğer kopyalarda
ilgili güncellemenin yapılması da zaman alıcı olacaktır.
• Tabloyu bir bütün olarak ayırmak yerine, satır ve sütun
bazında parçalamak, sorguların ve DML işlemlerinin ilgili
parçalar üzerinde yapılmasını sağlamak çoğu zaman daha
etkili bir çözüm olacaktır.
23. 04. Dağıtık Veritabanları
Sorguda veri birleştirme | Distributed Join
• Dağıtık veriyi sorgularda birleştirmek için farklı yaklaşımlar
kullanılabilir.
• R ve S tablolarının Y alanı üzerinden ilişkili olduğunu
düşünelim; R'yi S'nin tarafına veya S'yi Y'nin tarafına
göndermek ve JOIN işlemi uygulamak gönderilecek olan
verinin hacmi düşünüldüğünde pahalı bir işlemdir.
• Bunun yerine Semi Join veya Bloom Join işlemleri tercih
edilebilir.
24. 04. Dağıtık Veritabanları
Semi Join
• R'ye sadece S.Y sütununu gönderip, join işlemini bu sütun
üzerinde yapma yaklaşımıdır:
• R'nin sadece join ile eşleşen tekrarsız kayıtlarını S'ye
göndermek ve burada son join işlemini gerçekleştirmek
suretiyle daha az ağ trafiği ve daha hızlı join işlemi
gerçekleştirilir.
25. 04. Dağıtık Veritabanları
Bloom Join
• R'de K boyutunda bir bit vektör oluşturulur. (ilk başta tüm
bitleri 0 olacak)
• R'deki her kayıt için Y değerine bağlı olan ve 1 ile K arasında
bir sayı döndüren bir hash fonksiyonu yardımıyla bu bit
vektörünün eşleşen bitleri 1 yapılır.
• Oluşan bit vektörü S'ye gönderilir.
• S'de de aynı hash fonksiyonu kullanılarak oluşturulan bit
vektörü ile R'den alınan bit vektörü karşılaştırılır.
• Uyuşma olan kayıtlar join edilmesi muhtemel olan kayıtlar
olarak işaretlenir ve R'ye gönderilerek join edilir.
26. 05. Üç Seviyeli (3-Tier) İstemci-Sunucu Mimarisi
Bir three-tier uygulama, her biri bir ağın farklı bir yerine
dağılmış, 3 ana parçadan oluşur. Bu parçalar:
• İş istasyonu veya sunum arayüzü
• İş mantığı
• Veritabanı ve veritabanı yönetimi ile ilgili program
27. 05. Üç Seviyeli (3-Tier) İstemci-Sunucu Mimarisi
Bu mantıksal katmanlar Sunum, Uygulama ve Veri hizmetlerine
ayrılmıştır.
Sunum Hizmetleri
Uygulamanın kullanıcıya veri sağlayan kısmına tekabül eder. Ek
olarak, kullanıcının veri ile etkileşimini sağlayan yapıyı da
sağlar. Kısaca, sunum hizmeti kullanıcı ara yüzünü tanımlar ve
onunla etkileşir. Verinin sunumu genelde bazı geçerlilik
kurallarına sahip olmamalı.
İş Hizmetleri/Nesneleri
Uygulama hizmetlerinin bir kategorisidir. Bu hizmet, bir
organizasyonlar işi işlevlerini ve gereklerini içerir. Bu kurallar,
bir kuruluştaki günlük işlerin ortaya çıkma adımlarından
türetilir. Kurallar gelen bilginin geçerli bir tip ve formatta
olduğundan emin olmak için kullanılan geçerlilik kuralları veya
bir işlemi tamamlamak için takip edilen uygun iş adımlarından
emin olmak için kullanılan işlev kuralları olabilir.
Veri Hizmetleri
Konumundan bağımsız olarak veriye erişimi içerir.