10 Nisan 2008 Perşembe

Veritabanı Yöneticisinin Görevleri

Veritabanı Yöneticisinin Görevleri

Veritabanı yöneticisinin rutin bir şekilde yerine getirmesi gereken çesitli görevler vardır. Bu görevlere veritabanı tasarımı, performansı izleme ve düzenleme, veritabanına erişilebilirlik, güvenlik, yedek alma ve geri yükleme, veri bütünlüğünün sağlama, veritabanın konumu değiştirme sayılabilir.

Veritabanı Tasarımı
Veritabanı yöneticisi RDMS (İlişkisel Veritabanı Yönetim Sistemi) de veritabanı oluştururken, oluşturacağı veritabanının hem teorisini hemde belirgin uygulamasını bilmek zorundadır.
Veritabanı yöneticisi mantıksal veri modelini fiziksel veri modeline dönüştürebilir. Veritabanı yöneticisi istemci ve uygulama tarafından kullanılan veritabanını tasarlayabileme ve uygulayabilmelidir.

Performansı İzleme ve Düzenleme

Performans, veritabanının ayarlarıyla veritabanından beklenenlerin karşılığını almakla ilgili bir durumu gösterir. Yani donanım, yazılım ve ayarlamalar açısından yetersiz bir sistemden, hız ve daha fazla kapasite beklemek yanlış olacaktır. Veritabanı performansını etkileyen 5 faktor vardır.

Bunlar;
· Workload(İş Yükü)
· Throughput(Üretilen iş)
· Resources(Kaynaklar),
· Optimization(İyi hale getirme)
· Contention(Mücadele)
dır.

Workload(İş Yükü), DBMS de tanımlı istekleri tanımlar. Workload; online transaction,
batch job, ad hoc query, data warehousing(veri ambarlama), analytical queries(analitik sorgular) ve herhangi bir zamanda sistem tarafından çalıstırılan komutları içerir. Workload gün gün, saat saat, dakika dakika hatta saniye saniye çok şiddetli dalgalanabilir. Bazen de periyodik olarak dalgalanabilir.

Throughput, bilgisayar, donanım ve yazılımının toplam yeteneklerini belirler. Throughput, I/O hızı, CPU hızı, makinanın paralel verimliligi, sistem yazılımının ve işletim sisteminin etkinliğini içerir.

Sistem bazında donanım ve yazılım araçları resources(kaynaklar) olarak bilinir. Örnek olarak veritabanı çekirdegi, boş disk alanı, önbellek denetleyicileri sayılabilir.

Optimization, veriye etkin bir şekilde erişmek için sorgu maliyet formülleri ile veritabanı taleplerini analiz etme anlamına gelir. Bütün sistem tipleri optimization kullanabilir. Fakat ilişkisel sorgular DBMS’de birincil derede benzersiz oldugu için optimization benzersizdir. Yine de birçok faktör veritabanını en iyi sekilde kullanıcısını ulaştırmak için en verimli erişim
yolları yaratmaya ihtiyaç duyar. Örnek olarak SQL kodlama, veritabanı parametreleri, verimli bir sekilde programlama sayılabilir.

Belirli kaynaklar üzerinde iş yükünün yüksek olduğu zamanlarda contention oluşur. Herhangi bir kaynağı birden çok bileşen veya kişi kullandığı anda Contention oluşur. Örnegin aynı veriye iki kişinin güncelleme yapmaya çalısması gibi. Contention artığı durumlarda workload artar.

Performansı düzenleme ve birçok görev ve becerileri, veritabanlarında etkili bir şekilde yapabilmek için veritabanı yöneticileri gerekir. Bu beceriler uygun indeksleri oluşturmak, yeteri kadar tampon bellek oluşturmak, veritabanını ve uygulamaları izlemek, veritabanını yeniden düzenlemek olarak sayılabilir.

Kullanılabilirlik(Availability)
Kullanılabilirlik(Availability) ilk bileşeni DBMS’yi yüksek tutmak ve çalıştırmaktır. DBMS’nin hizmet dışı kalmaması için otamatik uyarılar olusturmak ve sürekli izlemek gerekir.

Bireysel veritabanlarının sürekli açık ve çalışır olması gerekir. Veritabanı yöneticisi karısıklıkları en aza indirger ve çakışmaların en az olmasını sağlar. Bir veritabanı yöneticisi, çakışmaları en aza indirmek için clustering(kümeleme) gibi teknolojileri kullanabilir.

Veritabanı Güvenligi ve Yetkilendirilmesi

Veritabanı tasarlandıktan ve programlandıktan sonra kullanıcıların veritabanında ki veriye erişmesi ve degiştirmesi gerekir. Ama kullanıcıların uygun olmayan veya yasak olan veriye erişmemelidirler. Kullanıcılar sadece izni ve yetkisi oldugu veriye erişip onu kullanabilmelidirler. Işte veritabanı yöneticileri uygun olan veriye kullanıcıların erişmesini saglar.

Veritabanı yöneticileri DBMS içerisinde güvenligi saglamak için, SQL(Structured
Query Language) içerisinden Grant, Deny, Revoke deyimlerini kullanır.

Güvenlik birçok veritabanı gereksinimleri için gereklidir. Bunlar;
· Veritabanı objelerini oluşturmak için. Bunlar databases(veritabanı), tables(tablo),
views gibi.
· Veritabanı objelerini düzenlemek için.
· Sistem Kataloguna erismek için.
· Tablo içerindeki verilere erişmek ve degiştirmek için.
· Kullanıcı tanımlı veri tipleri ve fonksiyonlar yaratmak için.
· Stored Procedure çalıstırmak için.
· Veritabanını durdurmak veya çalıştırmak için.
· DBMS parametrelerini ayarlamak veya düzenlemek için.
· LOAD, RECOVER, REORG gibi veritabanı yardımcı komutlarını çalıstırır.

Güvenlik bazı yollarla güçlendirilebilir. Örnegin olusturulmus bir view’e son kullanıcılar ve programcılar tarafından bir giriş blogu konulabilir.

Ayrıca veritabanlarına harici(herhangi bir programlama dilinden veya uygulamalardan)
güvenlik metodları da uygulanabilir.
Yedek Alma ve Kurtarma(Geri Alma)
Veritabanı yöneticisi herhangi bir sorun karşısında kurtarma bilgisine sahip olmalıdır. Sorun sistem sorunları veya program hatası olabilir. Bugün hemen hemen bütün sorunlar uygulama hataları veya kullanıcı hataları olarak karşımıza çıkmaktadır.

Yapılan, analist tahminleri, uygulama hatalarının 80%’inin, yazılım başarısızlıkları ve insan hatası yüzünden olduğunu gösterir. Veritabanı yöneticisi çıkan sorunlara en kısa zamanda müdahale edebilmelidir.

Genellikle veri kurtarmanın ilk tipi, büyük bir kapatmadan dolayı oluşan varsayılan kurtarmadır(recover to current). Bu sonuç yapılan en son işlemin veya güncel işlemin başarıyla gerçekleşmemesinden kaynaklanabilir. Geri alımı tamamlanıncaya kadar uygulamalar kullanılmazlar.

Diger bir kurtarma tipi Point-in-time recovery’dir. Point-in-time recovery genellikle uygulama düzeyi sorunlarla ugraşır. Bir Point-in-time geri alımını yapmak için, geleneksel teknikler belirgin bir Point-in-time oldugu sürece tüm iş yapmanın etkilerini kaldırır.

Transaction recovery üçüncü tipteki kurtarmadır. Transaction recovery, arıza süresi ve veri kaybı durumlarında kullanılan kurtarma modelidir. Böylece transaction recovery belirli bir esnada belirli işlerinin etkilerinin, veritabanından kaldırılmadan gerçekleşeceği bir uygulamadır. Bu yüzden ki bazen uygulama kırıcı olarak da başvurulur.

Geri alma’nın herhangi bir tipini hazırlamak için, Veritabanı Yöneticisi olarak verinin, yazılım, donanım, veya elle yapılan bir işlemde bir hata halinde kaybolmadığını garanti etmesi için stratejinin oldugu bir yedegi gelistirmeye ihtiyaç duyar. Bu strateji uygulanabilir bir işlem olarak(veritabanı için bir yedek dosya olarak kopyalar, / Geri alma planı günlügüne kaydeder) veritabanını dosyalarının kopyasını alır.

Veri Bütünlüğü

Bir veritabanı tasarlarken veri zarar görmemesi ve bozulmaması için verinin dogru bir biçimde girilip saklanması gerekir. Veritabanı yöneticisin bu işlemi yerine getirmek için bütünlügü DBMS’nin kurallarıyla(rule) yerine getirir.

Veri bütünlügünü, 3 bakış açısıyla saglayabiliriz. Bunlar fiziksel(physical), anlamsal(semantic), ve içsel(internal) olarak sayabiliriz. Fiziksel DBMS de veri tipleri ve alanları sayabiliriz. Veritabanı yöneticisi her bir tablonun her sütunu için uygun bir veri tipi seçer. Böylece o alan için uygun verinin girilmesi saglanır. Örnegin sütunun veri tipi integer olarak tanımlanmışsa, o sütuna sadece nümerik bilgiler girilmesi sağlanır. Kullanıcı metinsel veya nümerik olmayan bir bilgi girdiğinde veritabanı hata üretir. Çogu ilişkisel DBMS türleri asagıdaki constraint(kısıt) tiplerini destekler:

Referential constraint : Belirli sütunlarla tablolar arasında ilişki kurmak için tanımlanır. Herhangi bir sütuna girilen verinin baska bir tablodaki diger bir sütunu etkilemesidir.

Unique constraint : Bir tablo içerisinde varolan bir sütunun içerisine benzersiz verilerin girilmesini sağlar. Örnegin, Ögrenci adında bir tabloda Ögrenci No diye bir sütunumuz olsun. Ögrenci No sütunun Unique (benzersiz) olarak belirlediginizde aynı Ögrenci No nun girilmemesini sağlarsınız.

Check constraint : Bir tablonun sütunlarında veya bir sütununda girilen bilgilerin kısıtlanmasını sağlar. Örnegin Ögrenci adında bir tabloda Cinsiyet diye bir sütunumuz olsun. Bu sütuna cinsiyeti sadece Bay veya Bayan olarak yazdırmak istiyorsak bunun için bir Check constraint tanımlamak gerekir.

Anlamsal (semantic), kontrol olarak da tanımlanma olarak da diğerlerine göre daha zordur. Anlamsal (semantic) bütünlüğe örnek olarak veritabanındaki verinin kalitesini verebilirim. Veritabanında belirli olan fiziksel bütünlük yada kısıt tanımları herhangi bir veriyi sadece depolamak için yeterli degildir. Veri kalitesini garanti etmek yerleşimde olması için yordam ve pratik ihtiyacıdır. Örnegin, kayıtlı olan müşterinin 25%’inde yanlış bir adres veya telefon numarası içeren bir müşteri veritabanı, yetersiz kalitesiyle bir veritabanının bir örnegidir.

Bütünlügün son yönü, iç DBMS oluşturur. DBMS iç bütünlüğünü, asağıdaki çözümlerle sağlar.

Index Tutarlılığı. Bir index veritabanında ekstradan yer kaplayan ve veritabanı içerisindeki tabloların içerigini düzenli bir yapıda tutan yer göstericilerdir. Indexler, herhangi bir veriyi sorgulararken tüm tablonun içerigini taramaktansa gerekli verilerin taranmasını saglayarak performansı artırır.

Pointer Tutarlılığı. Bazen büyük miktardaki çoklu nesneleri aynı fiziksel ortamda saklamayız. Bu yüzden büyük miktardaki bu verileri saklamak için Pointer’a ihtiyaç duyarız.

Backup Tutarlılığı. Çogu DBMS ürünleri bazen recovery için etkin olarak kullanılamayan gereksiz veritabanı yedekleri alır. Bu senaryo bu eylemleri tanımak ve düzeltici hareketleri almak için gereklidir.

Hiç yorum yok: