|
Veritabani Yönetimi nedir?
Veritabani yönetiminin ne oldugunu ögrenmek icin öncelikle
veritabaninin ne oldugunu bilmek gerekir.Veritabani basit olarak bilgi
depolayan bir yazilimdir.Bircok yazilim bilgi depolayabilir ama aradaki
fark, veritabanin bu bilgiyi verimli ve hizli bir sekilde yönetip degistirebilmesidir.
Veritabani, bilgi sisteminin kalbidir ve etkili kullanmakla
deger kazanir.Bilgiye gerekli oldugu zaman ulasabilmek esastir.Indeksi
olmayan bir kütüphane ve bütün kitaplarin ayni kapaga sahip oldugunu düsündügünüzde
kütüphane kullanicilarinin ne kadar cok isi olacagini tahmin edersiniz.
Bir veritabani bir kütüphanenin mükemmel bir indeks sistemi
oldugu gibi , ayni zamanda kütüphanenin kendisidir.
Veritabani yönetimi ve veritabani yönetcisinin rolü kütüphanecininkine
benzerdir.Bilgiyi olusturmak ya da elde etmekten sorumlu degiller fakat
varolan bilgiyi yönetirler.
Gercek veritabani yönetimi cok sorumluluk isteyen bir istir,
veritabaninin her an düzgün ve verimli calismasini saglamak ve standartlari
belirleyip veritabaninin icerdigi veriyi yönetmektir.
Bircok insan veritabaninin sadece bilgiyi tutan birsey
oldugunu zanneder, fakat bundan cok öte birseydir ve önceden dedigim gibi
bilgi sisteminin kalbidir.
Veritabani yönceticisi ve veritabani yönetimi bundan dolayi
bütün mevkilerin eksenidir.
Veritabanindaki bir problem , cok pahali sonuclar dogurabilir.
Bir bankanin veritabaninin durmasi demek , her an yapilan yüzlerce belki
de binlerce islemin , dolayisiyla müsterilerin beklemesi demektir.
Ayni problem bir supermarket icin de gecerlidir, müsteriler
kasada kuyruk olusturur, kisaca bütün sistem durabilir.
Bundan dolayi veritabani yöneticisi ilk olarak sistemin
düzgün calismasini saglamali, ikinci olarak da düzgün calismadiginda onu
mümkün oldugu kadar hizli bir sekilde calisir hale getirmektir.
Sanirim veritabani yönetimi nedir sorusuna basit de olsa
bir cevap olustu kafanizda.
Simdi veritabani yöneticisinin yaptigi isleri
mümkün oldugu kadar genel hatlariyla anlatmaya calisalim.
Veritabani yöneticisinin görevleri
Görevleri kisaca su basliklar altinda toplanabilir :
- Veritabani Yaziliminin Kurulmasi ve upgradeler (yeni versiyonlar)
- Veritabani olusturulmasi
- Veritabani baslatma/durdurma
- Kullanicilari ekleme ve yetkilendirme
- Veritabani yedekleme ve yedekten geri dönme (backup&recovery)
- Veritabani performans ayarlari (performance tuning)
- Veritabani tablo-/indekslerin büyüme kontrolu (fragmentation control)
- Veritabani Yaziliminin Kurulmasi ve upgradeler (yeni versiyonlar)
Veritabaninin yaziliminin kurulmasi isin
genelde en basit tarafidir.Farkli Isletim Sistemlerine özgü hazir derlenmis
yazilim “kurulum notlari” dikkate alinarak kurulur.
Veritabaninin yogun bir sekilde kullanilmasindan sonra bazi buglarin
(hatalarin) ortaya cikmasiyla üretici firma tarafindan cikarilan yeni
versiyonlarin kurulumu gerekebilir.
- Veritabaninin olusturulmasi
Veritabanindan verileri okuyan, yazan, silen
ve gerektiginde de degistiren yazilimlara “uygulama yazilimlari” denir.Bu
uygulamalarin tasarimi sirasinda uygulama gelistiricilerle birlikte veritabaninin
da tasarimi yapilmalidir.Iste bu noktada veritabani yöneticisi bir takim
özellikleri dikkate alarak bir “veritabani modeli” ortaya cikarir.Bu esnada
normalizasyon yöntemleri gibi optimizasyonlar yapilir.
Bu olusan model daha sonra fiziksel olarak,
kullanilacak olan veritabani yazilimi (Oracle, Informix, MySQL, Postgresql
vs. ) araciligiyla olusturulur.Veritabanini tanimlarken , verimli bir
sekilde kullanimdan bahsettik. Iste bu noktada veritabanini fiziksel olarak
olustururken dikkat edilmesi gereken hususlar vardir:
- Cok yogun islem görecek olan tablo-/indeksleri mümkün oldugu
kadar birbirinden fiziksel olarak ayirmak gerekir. (mümkünse farkli
diskler, degilse farkli tablespace’ler kullanmak gibi)
- Sort (siralama) islemleri icin bir veya birden fazla temp (gecici)
alanlar tanimlanmalidir ( Oracle’da temp tablespace , Informix’te temp
dbspace olarak gecer)
Not: Bir sistemdeki en yavas
komponent Harddisk’ler oldugu icin (mikroislemci ve hafizaya gore) veritabaninin
fiziksel dagilimi da cok büyük önem arz etmektedir.Hatta bilgi Giris/Cikis
(I/O) islemini hizlandirmak icin RAID (parallel okuma özelliginden yararlanmak
icin ) sistemleri kullanilir.
Kagit üzerinde olusturulan veritabani alanlari,
tablolari, indeksleri, viewlari , kullanicilari ve yetkilendirmeleri olusturmak
icin genelde bir program (script) yazilir ve bu program calistirildiginda
sirayla bunlar olusturulur.
Bu program mantiksal kod olarak genelde su sekildedir :
-veritabani olusturma
-depolama alanlari tanimlama
-kullanici ve yetkilerini tanimlama
-tablo, indeks, view, vs objeleri olusturma
Bu program ayni veritabani modeli baska bir
bilgisayara kurulacagi zaman cok büyük kolaylik saglar.
- Veritabani baslatma /durdurma
Veritabani baslatma/durdurma islemi önemli bir konudur,
özellikle de durdurma islemi verilerin bütünlügünün saglanmasi acisindan
cok önemlidir.Cesitli durdurma yöntemleri vardir :
- Veritabanina bagli bütün oturumlarin kendiliginden sona ermesini
bekleyen durdurma (gracefully shutdown)
- Veritabanina bagli bütün oturumlar durdurma komutu verildikten
hemen sonra sona erdirme seklinde durdurma (immediate shutdown)
- Bir de veritabani processlerini hemen sona erdiren durdurma (
abort shutdown)
Durdurmanin sekli , asil veritabani baslatilirken önem
arz ediyor.Her baslatma isleminde veritabani sunucusu yarim kalan islerin
olup olmadigini kontrol eder (fast recovery). Cünkü yarim kalan islemler
(transaction) gerektiginde geri aliniyor (commit görmemisse ,rollback)
gerektiginde de veritabanina isleniyor (commit görmüsse, rollforward).Bu
sekilde veritabanindaki verilerin bütünlügü saglanmis oluyor.
Bir de bazen bilgisayarin (veritabaninin üzerinde calistigi
sunucu ) yeniden baslatilmasi sirasinda (reboot) veritabaninin otomatik
olarak baslatilmasi isteniyorsa , bu islemi yapan ufak bir program yazmak
gerekebiliyor.
- Kullanici ekleme ve yetkilendirme
Veritabaninda yapilan islemler cok cesitli olabildigi icin
mutlaka belirli yetkileri olan kullanicilar tanimlanmalidir.Veritabani
yazilimlari genellikle kendi kullanici tanimlama ve yetkilendirme sistemine
sahiptir.Veritabanini sahibi onu olusturan kisidir ve yetkilendirmeyi
de bu kullanici yapar.
Yetkilendirme cesitleri veritabani yazilimina baglidir
, ama genellikle tablo bazinda, okuma, yazma, silme ve kayit ekleme ,
tablo olusturabilme, indeks ekleme islemleri her veritabani yaziliminda
mevcuttur. Bütün kullanicilarin sinirsiz yetkiye sahip olmasini , özellikle
de büyük veritabanlarinda bekleyemeyiz herhalde.
- Veritabani yedekleme/yedekten geri dönme (backup&recovery)
Veritabaninda olusabilecek hatalar (bug) , yanlislikla silinen kayit ya da
tablolar, donanimsal hatalardan kaynaklanan (genelde harddisk) problemler,
yangin gibi felaketler veritabanindaki bilgilerin ya bozulmasina ya da
tamamen kaybolmasina yol acabilir. Tabi bu istenmeyen bir durumdur ve
de her gün olan bir olay degildir. Veritabanindaki bilgilerin degeri tasarlanacak
olan yedekleme startejisini büyük ölcüde belirleyecektir. Yedekleme stratejileri
cok cesitlidir ve bu konuda veritabani yazilimlari kendi yedekleme programlarini
sunmaktadir. Alinabilecek önlemler ya da yedekler genelde su sekilde siralanabilir
:
-Veritabanindaki degisikliklerin bire bir baska bir sunucuya iletilmesi (replication,
cluster gibi cözümler)
-Veritabaninin bulundugu diskleri aynalamak (mirroring yani RAID sistemleri).
-Düzenli araliklarla veritabaninin yedeklenmesi (baska bir diske, ya da bant
aygitina (tape device)). Buna genelde export
deniliyor.
-Tablo bazinda ASCII formatinda yedek almayi saglayan veritabanlarinda , önemli
tablolari düzenli araliklarla yedeklemek.
Gelisen tekonolojiyle birlikte veri kaybini önleme yazilim ya da donanimlari
hizla cogalmaktadir.
Bazi büyük veritabanlari (Terabyte’lar seviyesinde) yedeklemek günlerce süreceginden
sadece donanim olarak güvenlik önlemleri aliniyor. Cünkü yedegi günler
süren bir veritabanini yedekten geri dönmek (recovery) daha fazla zaman
alacagi icin cok kritik veritabanlari yedeklemeyi ya ek bir sunucuyu replication
olarak ya da diskleri gerektigi kadar aynalayarak gerceklestirmektedirler.
6.
Veritabani performans ayarlamasi ( performance tuning)
Her veritabani baslatilirken okudugu bir konfigurasyon
dosyasi (oracle’da init<db>.ora , informix’te onconfig, postgresql’de
postgresql.conf) vardir. Bu dosyada , sistemden alacagi hafiza miktari
(memory allocation), olusturacagi process adeti, veritabani sistem bilgilerinin
yeri, yedekleme yeri ve türü, hatalarini yazdigi dosya adi (error log
file), gibi bir cok ayrinti vardir.Bu degerlerin her birine parametre
(parameter) denir.Bu degerler bazen cevre degiskeni (environment variable)
araciligiyla veritabani baslatilirken etkin kilinabilir ya da veritabani
calisiyorken online de yapilabilir. Genelde bu degerler veritabani kullanici
sayisina, veri miktarina ya da yogunluguna ve isletim sistemine bagli
olarak sonradan ayarlamayi gerektirir.
Örnegin zaman icinde kullanici sayisinin ya da
veri giris/cikisinin artmasiyla birlikte kullanacagi kaynaklar da artacagindan
gerekli parametreleri degistirmek gerekir.
Tabi her parametrenin kriterleri vardir. Bu kriterleri
veritabanindaki sistem tablolarindan okuyarak anlamli bir sekilde gösteren
hazir yazilimlar oldugu gibi bu tür programlar kolaylikla veritabaniyla
haberlesecek bir programlama diliyle programlanabilir.
- Veritabani tablo-/indekslerin büyüme kontrolu
Veritabani tablo ya da indeks eklerken veritabanindan ilk
basta tahsis edecegi miktar (initial size) ve bu alan dolduktan sonra
tahsis edecegi miktar (next size) belirtilebilir. Belirtilmezse veritabaninin
default olarak verdigi miktar (genelde 8 Kbyte) kullanilir. Tablolar ilk
basta bos olarak olusturulacagi icin bunlar fiziksel olarak yanyana olacaklardir
ve kayitlar eklendikce bunlar büyüyeceklerdir. Asagidaki sekil bunu güzel
bir sekilde aciklamaktadir.
Seklin tamamininin harddisk oldugunu varsayarsak icindeki
tablolarin büyüdükce rasgele yerlerden alan tahsis ettigini görüyoruz.Bu
kutularin her birine extent deniliyor ve istenmeyen bir durumdur. Bir
tabloya ait bütün alanlarin toplu hale getirilmesi performans acisindan
cok önemlidir, en yavas donanim olan harddisk kafasinin bir tablonun bütün
kayitlarini okumasi icin mümkün oldugu kadar az hareket etmesi gerekir.Bundan
dolayi tablo ilk olusturulurken özellikle kayit sayisinin cok arttigi
tablolarda büyük bir alan tahsis etmemiz gerekir. Zamanla tablolarin bu
sekilde dagilmasi olayina “fragmentation” , tablolarin daginik halden
toplu hale getirilmesine de “reorganisation” ya da “defragmentation” denir.
Konuyu toparlayacak olursak olusabilecek hatalari önceden gören ve ona
gore tedbir alinmasi gerektigi icin, veritabani yönetiminin cok planli
yapilmasi gerekir.Veritabani yönetimini kolaylastiran hazir yazilimlar
vardir.Bunlar genelde windows tabanli görsel uygulamalardir ve veritabani
sunucusunu genel hatlariyla gözlemle icin faydalidir.Bazi gelismis olanlarinda
veritabani , tablo, indeks, kullanici olusturma gibi islemler cok daha
kolay bir sekilde yapilabilmektedir.Oracle yazilimiyla birlikte gelen
“Oracle Enterprise Manager” , Postgrsql icin PgAdmin , Informix icin Informix
System Administrator (ISA) bu tür yazilimlara örnektir.
Verinin degerine gore yedekleme stratejisi bir kacinilmazdir
cünkü yedegin önemi ancak ihtiyac duyuldugu zaman ortaya cikar.
06.09.2003
Murat YILDIZ
muratmy at hotmail.com
|