AnasayfaspaceHaberlerspaceYazılarspaceForumspaceBilgilerspaceYazılımspaceLinklerspaceResimlerspaceSitemapspace

Merhaba Misafir, Forumlarımıza hoşgeldiniz.

Üye olmak için burayı tıklamanız yeterli. Kayıt işlemi ücretsiz olup, konulara cevap yazabilmeniz için gereklidir.
Hatırla
Parolanız
   
Forum
 Internet, WWW, Web, Network / PHP, ASP, Javascipt, HTML, MYSQL, XML, AJAX
        Veritabanı Seçiminde nelere dikkat etmeli? - 2

Veritabanı Seçiminde nelere dikkat etmeli? - 2


16.08.2006 07:00

kEditor


Administrator
Aktif Üye

Mesaj sayısı 160
 27.02.2007, 00:08:44
Backup/Restore (Yedekleme/Yedek Dönme) imkani sunuyor mu?



Uygulamalarda yedek alma islemi cok önemlidir, bunun online ve database aktifken yapilabiliyor olmasi gerekir. Düsünün bir fabrikada 7/24 saat üretim yapiliyor ve database'in her an Online olmasi gerekiyor. Bu durumda sececeginiz Database'in online backup alma özelligi mutlaka olmasi gerekir (warm backup). Diyelim ki Database online iken backup ya da dump özelligi var, peki alinan yedegin data tutarliligi bu durumda var mi?



Düsünün ki yedek basladiginda bir memur fatura tahsilati yapiyor ve islemin yarisindayken (yani bilgilerin bir kismi Database'e kaydedilmis durumda) yedek bitiyor.Herhangi bir crash (Sistemin ya da Database'in hata verip datalarin bozulmasi) durumunda o yedegi restore (yedegi dönme) ettik, bu durumda datalar tutarsiz olacaktir.



Diger önemli bir nokta ise aldiginiz backup'tan sadece bir tablo restore edilebiliyor mu? Bu durum da cok karsilasilan bir durumdur, mesela birisi sql le calisirken yanlislikla bir tablonun tamamini ya da belli bir kismini sildiginde tek care yedekten geri dönmektir.



Lisans Stratejisi nedir?



Open source olan Database'lerin ücretsiz oldugu herkes tarafindan bilinmektedir. Diger ücretli olan (commercial) Database'lerde ise herbirinin degisik lisans stratejileri vardir. Örnegin concurrent (ayni andaki kullanici sayisi) lisansi ya da named (yani toplam kullanici sayisi) lisanslar mevcuttur. Bir de cpu sayisina bagli olanlar da var.



Ortalama olarak her 6 ayda bir yeni sürüm ciktigini kabul edersek, versiyon güncellemelerinin ücretli olup olmadigi ve de güncellemenin ne kadar sürdügü de büyük önem kazanmaktadir.





Transaction Destegi var mi?



Transaction, Database anlaminda begin ile commit arasinda yapilan islemin tamamina transaction denir. Transaction destegi temel olarak verilerin bütünlügü ve tutarliligi icin önemlidir.



Diyelim ki bir internet kullanicisi bir alisveris sitesinde ürünleri gezmektedir ve belirli ürünleri sepete eklemekte ya da sepetten cikarmaktadir. Zamanla bu bilgilerin bir kismi tablolara yazilmis olabilir. Kullanici alisverisi sonlandirmak üzereyken, kredi karti bilgilerini girdigi yerde alisveristen vazgecti ve baglantisini kopardi, iste bu durumda o ana kadar yaptigi bütün data hareketlerinin geri döndürülmesi (rollback) gerekir, bu da transaction destegi ile mümkündür.



Diger bir örnek de mesela Database'imiz aktifken birden elektrikler kesildi ve Server'i yeniden baslattik ve Database'i start ettik. Kesinti aninda yarim kalan bütün islemler o sekilde birakilmaz tabii ki, yarim kalan (Database dilinde commit olmamis ) bütün transaction'lar rollback edilir. Bu sekilde Database tutarli bir duruma geri döndürülmüs olur.



Transaction'in cok önemli olmasi sebebiyle artik cogu Database'in bu destegi vardir. Ancak cok kritik uygulamalarinizda bu konunun daha detayina inerek Database'i incelemekte fayda var.



Trigger destegi var mi?



Trigger, bir Database'de belirli bir tablodaki bir satir degismesi gibi belirli bir islem gerceklestiginde otomatik olarak bir islemi baslatan bir dizi SQl ifadesidir. Bir trigger bir olaydan (insert, delete ya da update ifadelerin belirtilen tabloda olusmasi) ve bir hareketten (ilgili prosedür) olusur. Trigger'lar degisen ya da eklenilen bir datanin tutarliligi icin kullanilir. Mesela basit olarak sirket tablosuna yeni bir kayit eklendiginde (insert) git log tablosuna sirket nosunu ve o anki tarih ve zamani kaydet (insert).



Support (Destek)'u var mi ve maliyeti nedir?



Gelistirdiginiz uygulamalariniz ne kadar kaliteli olursa olsun, kullandiginiz Database'in destegi yoksa ya da cok zayifsa bu pek iyi bir durum degildir. Örnegin uygulamanizin cok spesifik bir ayrintisinda eger Database'de bir bug ortaya ciktiysa ve siz yeni bir versiyon ya da gecici bir cözüm bulamiyorsaniz sistem kullanilamaz haldedir ve proje "basarisizdir"!



Oracle'dan bir örnek vereyim , 1 yillik destek anlasmasi lisans ücretinin %20 sidir ve genelde Database'inizin down oldugu durumlarda birkac saat icinde bir cozüm sunarlar.Informix'te de bu durum asagi yukari aynidir.



Postgresql ve MYSQL'de ise commercial support veren kurumlar disinda newsgroup'lara baglisiniz ve cogunlukla soru ya da sorunlariniza cok hizli cevaplar alabilirsiniz, fakat hicbir zaman size garanti yoktur.Sanssiz bir sekilde bir bug ortaya cikmis ise bir sonraki versiyonu beklemeniz gerekir ya da o bug'in olmadigi bir diger versiyona gecmeniz gerekir ki bu da zaman ve ugrasi demektir.





Administration (Yönetim ve bakimi) kolay mi?



Aslinda en iyi Database bir anlamda isteklerinize %100 cevap veren ama ayni zamanda administration yani yönetimi ya da bakimi olan Database'dir.



Diger önemli bir nokta ise yönetimi ve bakimi icin gerekli altyapi ve egitim ve bütün bunlarin maliyetidir. Örnegin Oracle'in yönetimi belki de en zor olanidir, bu sebepten dolayi da egitimleri cok pahali ve de fazladir.



Informix'in administation'u ise daha kolaydir fakat görsel yönetim programlari o kadar iyi degildir. Postgresql ve MySql'in ise dökümanlari bol olmasina ragmen egitimleri cok fazla yaygin degildir. Görsel yönetim programlari da her ikisi icin de mevcuttur. Örnegin MySQL icin MySQL Control Center ve Postgresql icin pgadmin, tora gibi.



Mirroring destegi var mi?



Mirroring aynalama demektir ve güvenlik stratejisinin bir parcasi olabilir. Database'in mirror destegi olmasi bir avantajdir ve datalarinizin Disk üzerinde 2 kez kaydedilmesi demektir ve birisinin bozulmasi halinde diger kopyasindan online devam edebilmektedir. Güvenligin yani sira performans acisindan da faydalidir, cünkü bir read (okuma) isleminde paralel yani her iki kopaydan ayni anda okuyabilmektedir, bu da hiz demektir.



Postgresql ve MySQL'de mirroring özelligi kendi bünyesinde yoktur..



Replication özelligi var mi?



Replication, Database server bazinda kopyalama demektir. Örnegin 1000 tane subesi olan bir banka düsünün ve her subede 50 kullanici olsa toplam 50000 kullanici demektir ve ayni saatler icerisinde sadece bir Server'a erismeleri biraz garip olurdu sanirim (böyle bir durumu düsünemiyorum bilen varsa lütfen mail atsin). Bunun icin en azindan birden fazla Database farkli yerlerde fakat merkezi bir Database'de olusan bir degisim diger bütün databaselere zamanla iletilir.



Bir hesaba bütün diger subelerden erisilebildigine göre Database'deki kayitlarin bir kere ayni olmasi gerekmektedir. Bu durumda farkli sehirlerde replike edilen birden fazla server dusunursek ve her birinin üzerinde bir Database calisirsa ve bütün bunlar replike edilirse yükler dagilmis ve performans artmis olur. Özet olarak bir Database'in replike edilmesi demek o Database'deki degisiklikler birebir diger Database'lere aktarilmasi demektir.



Replication'un sagladigi bir avantaj da bir Database'in ariza görmesi halinde (down) diger Database'in durumu idare edebilmesidir.



Parallel Server (Clustering) özelligi var mi?



Bu özellik daha cok büyük Database'ler icin gecerlidir. Bir Server düsünün o anki teknolojiyle donanim olarak maximum seviyede donatilmis fakat toplam kullanici sayisini kaldiramiyor, ya da basit olarak bir Database'i 2 server üzerinde calistirmak istiyorum ya da bir Database'de bir ariza olustugunda otomatik olarak diger Database durumu idare etsin istiyorsam Database'in Parallel Server özelligi olmasi gerekir.



Oracle, Informix, DB2 ve MS-Sqlserver in parallel özellikleri var fakat normal Database lisansindan ayri bir fiyatla satilmaktadir. Postgresql ve MySql in ise böyle bir özelligi yoktur.



Lojiksel olarak limitleri nelerdir?



Her Database'in kendi mimarisi vardir ve buna bagli olarak da bazen teorik de olsa limitleri vardir. Bir tablodaki column (alan) sayisi, bir tablonun maximum alacagi satir sayisi, bir Database'in maximum kullanabildigi alan, bir alanin maximum büyüklügü gibi faktörler büyük Database (>100Gb)'ler icin önemlidir.



Simdi birkac Database'in limitlerini vermeye calisalim:



PostgreSQL



Asagidaki bilgiler http://www.ca.postgresql.org/users-lounge/limitations.html adresinden alinmistir.



Bir Database'in maximum büyüklügü sinirsiz(60GB databaseler mevcut)



Bir tablonun maximum büyüklügü 64 TB bütün Isletim Sistemlerinde



Bir satirin maximum büyüklügü sinirsiz 7.1 ve sonrasi versiyonlarda



Bir alan icin maximum büyüklük 1GB 7.1 ve sonrasi versiyonlarda



Bir tablodaki maximum satir sayisi sinirsiz



Bir tablodaki maximum alan sayisi 1600



Bir tablodaki maximum index sayisi sinirsiz



Tabii ki bunlar sinirsiz degildirler, fakat eldeki disk alanina ve hafiza/swap alanina bagimlidir.Bu degerler normalin disinda büyük olursa performans sorunu yasanabilir.





Oracle



Bir tablodaki maxiumum index sayisi sinirsiz



Maximum icice altsorgu (nested queries) sayisi 255



Maximum Database user'i 65525



Bir tablodaki maximum alan sayisi 1000



Bir tablodaki maximum satir sayisi sinirsiz



Maximum Tablespace sayisi 64K



Maximum block sayisi 16Kb



Kaynak : http://download-uk.oracle.com/docs/html/A97297_01/ch1_admin.htm#i92495



Informix



Maximum Database büyüklügü 2 Terabyte



Maximum alan sayisi 32000



Maximum tablo sayisi 2^31-1



MYSQL



Büyük Database'ler olusturmak mümkündür.50 milyon kayit iceren bazi Database'ler kullaniyoruz ve 60000 tablo ve yaklasik 5 milyar satir sayisi olan kullanicilar biliyoruz.Bir tabloda maxiumum 32 index kullanilabilir.Her bir index 1 ile 16 arasinda alandan olusabilir. Maximum index genisligi ise 500 byte'dir.



http://www.mysql.com/doc/en/Features.html
Kullanıcı çevrimdışı Yazıcıya Gönder
 

Sayfayı yazdır  |  Önceki Konu  |  Sonraki Konu
Hızlı Menü
 




Forum istatistikleri
Konular:241, İletiler:325, Kullanıcılar:435
Aramıza en son katılan üyemiz, iNsAn
Doğum Günü Olanlar
muro (18)