Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Bilgisayar Mühendisliği Bölümü

Benzer bir sunumlar


... konulu sunumlar: "Bilgisayar Mühendisliği Bölümü"— Sunum transkripti:

1 Bilgisayar Mühendisliği Bölümü
Veri Tabanı Yönetim Sistemleri 2 Ders 9 Dağıtık Veritabanı & Oracle RAC Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü

2 Dağıtık Veritabanı Her biri farklı işlemciler tarafından erişilebilen farklı saklama birimlerini kullanan veritabanına "dağıtık veritabanı: distributed database" denir. Saklama birimlerinin her biri birer bilgisayar olabilir ve bu bilgisayarlar aynı ortamda bulunabileceği gibi, bilgisayar ağı ile haberleşen uzak noktalarda konumlanmış ta olabilirler. 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 olan yapı Fiziksel bileşenlerini (CPU, RAM, HDD) paylaşan paralel sistemler üzerinde kurulu VT'ler genellikle "dağıtık" olarak düşünülmez.

3 Dağıtık Veritabanı Tek bir sunucu üzerinde çalışan tek bir veri tabanı kullanılmak yerine veritabanını birçok sunucuya dağıtarak kullanmanın 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).

4 Dağıtık Veritabanları
Bazı kaynaklarda* 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 *

5 Veritabanı Bağı (Database 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 ahmet IDENTIFIED BY abc123 USING 'vt1'; Diğer veritabanındaki personel tablosunu sorgulamak için kullanılarak belirtilir: SELECT * FROM

6 Veriyi dağıtma nasıl yapılacak?
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 cluster, 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. *

7 Fragmentation (Parçalama) Partitioning (Bölümlendirme)
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ı

8 Replication (Yineleme)
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).

9 Partial Replication (Kısmi Yineleme)
seçilmiş parçalar, seçilmiş sunucularda saklanır İletişim Ağı

10 Duplication (Kopyalama)
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ına erişebilir ve değiştirebilir. Master'dan replica'lara doğru tek yönlü bir güncelleme yapıldığı için veri değişikliği daha kolay, fakat istemcilerin iletişimde bulunduğu tek sunucu olduğu için yük dengeleme yoktur.

11 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.

12 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.

13 Semi Join'in etkinliği Semi Join'in etkinliği aşağıdaki durumlarda artar: Y niteliğinin boyutu, diğer niteliklerin boyutlarına göre küçükse Join işleminde seçicilik yüksekse (S'ye gönderilecek eşleşen kayıtlar az ise) Join sonrası göz ardı edilebilecek çok sayıda tekrarlı kayıt varsa

14 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

15 Atomicity (Bölünmezlik)
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: Transaction T'yi başlatan sunucu koordinatör olur ve T'yi tamamlamak (commit) istediğinde diğer sunuculara "prepare T" mesajı gönderir. 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). 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. Tüm sunucular aldıkları mesaja göre, kendi yerel hareketlerini "commit" veya "rollback" ederler. * ACID (Atomicity, Consistency, Isolation, Durability)

16 Isolation (İzolasyon)
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: 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) 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 Tam-dağıtık: Okuma için elemanın herhangi bir kopyasını kilitleme, yazmak için ise tüm kopyalarını kilitleme mantığı

17 Real Application Clusters (RAC)
Oracle RAC kullanılarak birçok sunucu veya bilgisayar birbiri ile bağlanarak tek bir VT sistemi gibi çalışmaları sağlanabilir. Bir Oracle RAC veritabanı 100 farklı instance'a sahip olabilir ve her instance kendine özel bir undo-tablespace'i ile en az bir ilave redo thread'i içerir.

18 Oracle RAC Mimarisi Yandaki şekilde farklı sunucularda yürütülen instance'lar ve uygulama / web sunucuları gibi diğer ortamların onları tek bir veritabanı gibi algıladığı mimari gösterilmiştir.

19 Uzak noktalar için RAC Geleneksel olarak RAC tek bir veri merkezi (data center) üzerinde yaratılır. Fakat bir "extended distance cluster" kullanılarak farklı düğümleri (node) çok uzak yerlerde bulunabilen yapılar oluşturmak ta mümkündür. Bu sayede bir veri merkezinde oluşacak olan elektrik kesintisi, su baskını ve yangın gibi doğal afetler neticesinde veri kaybı olmaması ve hatta sistemin hiç aksamadan devam etmesi sağlanabilir. Fakat tüm veri merkezlerini kapsayacak şekilde büyük bir bölgesel felaket yaşanması durumunda bu yapı da yetersiz kalabilir (Çözüm: Oracle Data Guard)

20 Oracle Clusterware Tüm Oracle veritabanı platformları üzerinde çalışan entegre küme yönetim çözümü sunar: Düğüm üyelikleri Grup servisleri Global kaynak yönetimi Yüksek kullanılabilirlik fonksiyonları Oracle Clusterware, RAC kurulumu sırasında yapılandırılabileceği gibi, ayrıca da kurulabilir. Oracle başka kümeleme çözümleri ile de çalışabilir, fakat kendi ürünü olan Oracle Clusterware ile daha iyi entegrasyona sahiptir.

21 Oracle RAC tarafından desteklenen saklama biçimleri
Automatic Storage Management (ASM): Diskleri idare etme için Oracle tarafından tavsiye edilen çözümdür. Oracle Cluster File System (OCFS) Oracle RAC için sertifikası olan üçüncü parti bir kümeleme dosya sistemi. Ağ dosya sistemi (network file system) Biçimlendirilmemiş aygıtlar (raw devices)

22 Düğümler arası haberleşme
Oracle RAC veritabanı instance'larına bir veritabanının varsayılan IP adresi üzerinden veya VIP (Virtual IP) adresleri üzerinden ulaşılabilir. Genel ağ bağlantısı dışında, kümedeki tüm düğümleri bağlayan özel bir ağ (interconnect) oluşturmak ta gereklidir. Bunun için sadece kümedeki düğümler tarafından erişilebilen ayrı bir anahtar (switch) veya anahtar kümesi kullanılır. Genellikle Gigabit Ethernet hızında bir bağlantı tercih edilir. Linux ve Unix sistemlerinde genellikle UDP (User Datagram Protocol) veya RDS (Reliable Data Socket) protokollerini tercih edilirken, Windows kümeleri TCP protokolünü kullanır.

23 4 düğümlü bir RAC veritabanı
Public Network Private Network (Interconnect) Node 1 Instance 1 Node 2 Instance 2 Node 3 Instance 3 Node 4 Instance 4 Storage Network Shared Storage

24 Cache Fusion Önceki slaytta gördüğümüz gibi her düğümün kendine ait bir instance'ı vardır. Bir instance veriyi hafızaya çıkardığında, başka bir instance tarafından da bu verinin kullanılabilmesi için Cache Fusion adında bir yapı tüm instance'larda yer alan Database Buffer Cache'lerin ortaklaşa kullanılmasını sağlar. Bu yapı, ihtiyacı olan diğer instance'lara gereken blokları transfer ederken her zaman özel ağı (interconnect) kullanır. Cache Fusion'un ilgili veri aktarımlarında sıkıntı yaşamaması için RAC düğümlerindeki SGA büyüklüğü, tek başına çalışan Oracle VT'lerde olduğundan daha fazla olmalıdır.

25 Global Cache Service (GCS) Global Enqueue Service (GES)
Her instance'ın sorguyu veya hareketi yürütmek için ihtiyacı olan blokları en hızlı şekilde elde etmesini ve veri bütünlüğünü sağlamak için kullanılan servislerdir. Temel olarak, Cache Fusion kaynaklarına erişimi idare etmek için kullanılırlar. Bu servisler Global Resource Directory (GRD) kullanarak, her veri dosyasının ve her bellek bloğunun durumlarını muhafaza eder. GRD'ye aktif olan tüm instance'lar erişebilir.

26 Oracle RAC Arkaplan İşlemleri
ACMS (Atomic Controlfile to Memory Service) İki aşamalı commit ile atomicity sağlayan servis GTX0-j (Global Transaction Process) Global hareket işlemede şeffaflık desteği sağlar LMON (Global Enqueue Service Monitor) Global işlem kuyruğunu idare eder ve gerektiğinde recovery yapar LMD (Global Enqueue Service Daemon) = GES Her instance içinde dışarıdan gelen kaynak isteklerine yanıt verir LMS (Global Cache Service Process) = GCS LCK0 (Instance Enqueue Process) Cache Fusion ile ilgili olmayan kaynak isteklerine yanıt verir RMSn (Oracle RAC Management Processes) Kümeye yeni bir düğüm eklendiğinde, veya kümeden düğüm çıkarıldığında yapılacak işlemleri idare eder

27 Oracle RAC Kurulumu Oracle web sitesinden Grid Infrastructure (Clusterware) indirilip kurulmalıdır. Grid Infrastructure sadece Linux ve Solaris işletim sistemlerine kurulabileceği için istenirse bu işletim sistemleri de aynı adresten indirilebilir. Eğer Windows işletim sistemi üzerinde sanal makine oluşturarak kurulum yapılacak ise VM VirtualBox indirilip kurulabilir. Ayrıca Oracle VT 10g, 11g, 12c sürümlerinden biri gereklidir. Kurulum ile ilgili işlem adımlarını gösteren aşağıdaki video'lardan faydalanılabilir:


"Bilgisayar Mühendisliği Bölümü" indir ppt

Benzer bir sunumlar


Google Reklamları