Database Secimi

**Ankesenamon**

Kıdemli Üye
8 Eki 2007
2,220
21
34
Öncelikle konuya tamamen yeni olanlara yönelik olarak „Database“ nedir sorusunun cevabini verelim:
Database (türkcesi Veritabani ama bundan böyle Database kelimesini kullanacagim):
Database, icerigi kolaylikla erisilebilir, yönetilebilir ve güncellenebilir sekilde düzenlenen bir data toplulugudur.En cok taninan Database tipi ise birkac farkli yoldan yeniden düzenlenebilen ve erisilebilen data olan „relational Databse“ yani Iliskisel Database’dir.
Burada karsimiza günümüzde cok kullanilan ve aslinda Database denilince aslinda „Relational Database“ kastedilen bir terim ortaya cikmaktadir :
Iliskisel bir Database, database tablolarini yeniden düzenlemeden birkac farkli yoldan erisilebilen ya da yeniden derlenen datayi teskil eden düzenli-tanimli tablolardan olusan bir data toplulugudur.Iliksisel Database 1970 yilinda E.F:Codd tarafindan gelistirilmistir.
Iliskisel Database’e olan standart kullanici ve uygulama programi arabirimi „Structured Query Language“ (Yapisal Sorgulama Dili, kisaca SQL).SQL ifadeleri hem interaktif sorgular (query) icin hem de raporlar icin data elde etmek icin kullanilir.
Buraya kadar kafalarda olusan mantiksal ve fiziksel kavramlari örneklerle aciklamaya calisalim :
Database tablolardan (table) olusur.Tablolar ise alanlardan (column) olusur.Temelde string ve sayi olma üzere degisik alan tipleri vardir.Bir Database’de birden fazla tablo olabildigi gibi bir tablonun da birden fazla alani olabilir.Bir sistemde ayni isimde bir Database, o Database’de ayni isimde bir tablo ve o tabloda ayni isimde bir alan olabilir.
Bu kavramlar asagidaki sekil üzerinde daha anlasilir olacaktir :
databimage001.jpg
Desktop Database – Server Database

Aslinda Database’leri genel olarak iki kisma ayirabiliriz.Birincisi „Desktop Database“ ve ikincisi „Server Database“.Desktop Database’lere örnek :
· Microsoft Access
· FoxPro
· FileMaker Pro
· Paradox
Desktop Database’lerin avantajlari :
· Desktop database’ler pahali degildirler
· Desktop database’ler kullanici dostudur (user-freindly).
· Desktop database‘ler web cözümlerini destekler.
Bunlari söyledikten sonra, „Server Database“ leri „kim kullanir ki o zaman?“ sorusuna Desktop Database’lerin dezavantajlarini siralayarak cevap verelim :
· Desktop Database’ler genelde bir kullanici desteklerler.Düreticilerin demeclerine ragmen genelde desktop databaseler ayni anda sadece bir kisinin database’i degistirmesine izin verirler.Cok kullanicili bir ortamda desktop Database’i kullanmak cok kötü sonuclar dogurabilir.Genel olarak söylenen eger Database’i birden fazla kisi kullanacaksa „Server Database“ kullanilmasi tercih edilmelidir.
· Desktop Database’lerin güvenligi zayiftir. Cogu desktop Database‘i basit bir sifre mekanizmasina sahiptir.Eger güvenlik ve log tutma özelliklerini istiyorsaniz kesinlikle „Server Database“ kullanmalisiniz.
· Dekstop database'ler internet icin tasarlanmamistir. Eger basit olarak datanizi internete acmak istiyorsaniz bir desktop Database’i yeterli gelebilir.Fakat, internet kullanicilarinin datayi degistirebildigi ve yeni datanin girebildigi interaktif bir sistem olusturmak istiyorsaniz server tabanli bir Database kullanmaniz gerekmektedir.
Server Database’ler ise gercekten daha büyük imkanlar sunmaktadir.Baslica dünyada en cok kullanilan ve tanilan Server Database’ler sunlardir :
· Oracle
· Informix
· MS-SQLServer
· Sybase
· DB2
· MySQL
· Postgresql
Server Database’lerin genel olarak avantajlari ya da sagladiklari yararlar sunlardir :
· Esneklik. Desktop kuzenlerinin tam tersine, server tabali database’ler onlara yüklediginiz her data yönetim probleminin üstesinden gelebilirler.Programcilar cok severler cünkü Database merkezli özel uygulamalarin hizli gelisimini saglayan programci-dostu uygulama programci arabirimleri (Application Programmer Interface, yani API) vardir.Hatta Oracle, Informix, Sybase, DB2 gibi Database‘ler farkli platformlari (Isletim Sistemleri) destekjlemektedir.
· Güclü performans. Server tabanli Database’leristediginiz kadar güclü olabilirler.Önemli Database’ler sizin kurabileceginiz cok uygun donanimlarda cok verimli bir sekilde calisacaktir.Modern Database’ler birden fazla yüksek hizli islemcilerle, cluster sunucularla, yüksek bandgenisligine sahip aglarla ve hata toleransli depolama teknolojisiyle (fault tolerant storage technology )calisabilirler.
· Ölceklenebilirlik (Scalability). Bu özellik öncekiyle cok yakindir.istenildigi sekilde gerekli donanimlari artirarak gerekli kullanici sayisi veya disk alani genisletilebilir.
Tabi hersey bir anda tozpembe degil, Server Database’lerin de dezavantajlari vardir :
· Özel bilgi/egitim gereklidir. Server tabanli Database’ler tabii ki oturdunuz yerden ögrenilecek birsey degildir.Donanim ve yazilima yatirima baslamadan önce gerekli özel egitimi almaniz tavsiye edilir.Bu egitim bu önemli yatirimda ihtiyaclari ortaya koyamada faydali olacaktir ve gerekli altyapiyla etkili bir büyüme ve gerceklestirme stratejisi saglayacaktir.
· Pahalidir. Server tabanli Database’le saglanan yararlar tabii ki size maddi maliyeti vardir.Öncelikle bircok Database’in bagli oldugu pahali yüksek performansli sistemleri satin almak icin önemli bir doananim yatirimi yapmaniz gerekecektir.Daha sonra , basit tek islemicili bir sistem icin 3000$ ile 15000$ arasinda lisans parasi ödemeye hazir olmaniz gerekir.
· Son kullanicilar icin zordur. Genel olarak , satin almadiginiz müddetce son kullanicilariniz kullanici dostu arabirimlere sahip olmayacaktir ve kullanicilariniz SQL ögrenmesi icin tabii ki sabir göstermeniz gerekir.Desktop Database’ler genelde server tabanli Database’ler icin iyi birer arabirimdir.Örnek olarak , bircok organizasyon server tabali Database’lere ulasmak icin bilinen kullanici dostu arabirim olan Microsoft Access’i kullanmaktadir.
Simdi asil konumuza gelelim ve Database secerken gözönünde bulundurmamiz gereken noktalara deginelim. Diyelim ki siz bir Uygulama gelistireceksiniz , bu bir web uygulamasi, ögrenci isleri programi, taksitli satis programi ya da su faturasi tahsilat programi olabilir.Herseyden önce ihtiyaclarinizi ortaya koymaniz gerekir.Bu aslinda en zor olan kisimdir.Cünkü teorik olarak ihtiyaclarinizi belirledikten sonra bir de pratikte ortaya cikan ihtiyaclar bazen sizi zor durumda birakabilir.Bunun icin „en kötü durumda“ faktörü ve data’nin ve sistemin (kullanici acisindan) büyüme faktörü gözönünde buludurulmalidir.
Konuyu daha fazla uzatmadan bir Database’e karar verebilmek icin gerekli olan sorular genel olarak sunlardir :
· Hangi platformlari (isletim Sistemlerini) destekliyor?
· Destekledigi arabirimler neler (odbc, jdbc, DBD, native)?
· Database ne derecede güvenli?
· Backup/Restore (Yedekleme/Yedek Dönme) imkani sunuyor mu?
· Lisans Stratejisi nedir?
· Warm Backup özelligi var mi?
· Transaction Destegi var mi?
· Trigger destegi var mi?
· Support (Destek)‘u var mi ve ne kadar güvenilebilir?
· Administration (Yönetim ve bakimi) kolay mi?
· Mirroring destegi var mi?
· Replication özelligi var mi?
· Parallel Server (Clustering) özelligi var mi?
· Lojiksel olarak limitleri nelerdir?
Bu sorulari cogaltmak tabii ki mümkün.
Bu sorularin detaylarina girmek sanirim yazinin genel amacina uygun olacaktir.
Hangi platformlari (isletim Sistemlerini) destekliyor?
Aslinda öncelikle Database’imizi hangi Isletim Sistemi üzerinde calistirmak istedigimiz önemli.Diyelim ki Database Server’in Linux üzerinde calismasini istiyorsak ve bu tek secenegimiz ise, otomatik olarak MS-SQL Server’i elemis oluyoruz cünkü MS-Sqlserver sadece Windows platformunu desteklemektedir.Ayrica bazi Database’lerin belirli Isletim Sistemlerini desteklemedigini göz önünde bulundurmak gerekir.En cok kullanilan Isletim Sistemleri : HP-UX, AIX, Linux, Solaris, Windows NT, Windows 2000, Windows XP, Digital UNIX, Open BSD, FreeBSD vs.
Destekledigi arabirimler neler (odbc, jdbc, DBD, native)?
Uygulamamizla dogrudan alakali olan bir nokta, cünkü kullandigimiz programlama dilinin destekledigi baglanti türlerini Database’imizin de desteklemesi gerekir.Örnegin bir Database’in ODBC sürücüsü yoksa o Database’le Herhangi bir Visual Basic-ODBC tabanli bir program yazamayiz.
Örnegin perl ile bir program yazacaksak mutlaka o Database’in DBD sürücülerinin üretici tarafindan saglanmasi gerekmektedir.Ayni sekilde java uygulamalari icin de bu durum gecerlidir.
Database’in güvenlik stratejileri?
Düsünün ki bir bankacilik uygulamasi gelistiriyorsunuz , bu durumda Database’de tutulacak bilgilerin güvenligi ve gizliligi sizin icin cok önemlidir.Fakat bir web uygulamasinda cok da önemli olmayabilir.
Burada dikkat etmemiz gereken diger bir özellik ise Database’in kendi icinde saglamis oldugu güvenlik stratejisidir.Mesela tablo bazinda belirli kisilere yetkilendirme yapilabiliyor mu?
Buna informix’ten bir örnek verecek olursak :
grant select,update on table fatura to mehmet; mehmet kullanicisina fatura tablosu üzerinde select (okuma) ve update (kayit degistirme) yetkisi vermektedir.
Mesela Oracle’da yeni cikan bir özellik ise column (alan) bazinda belirli kullanicilara yetkiler verilebiliyor.
Backup/Restore (Yedekleme/Yedek Dönme) imkani sunuyor mu?
Cok önemli uygulamalarda yedek alma islemi cok önemlidir ve de online yani 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?
Öncelikle 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.Diyelim ki kullanici alisverisi sonlandirmak icin devam etti ve 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).
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.