Ana içeriğe atla

Zengin yedek kulubesi

Yaptığınız bir yazılımın birden fazla veritabanı ile gayet sorunsuz çalıştığını düşünün. Programı çalıştırıyorsunuz, program size bir liste içerisinde kullanabileceğiniz veritabanlarının bir listesini gösteriyor ve siz listeden size uygun olanı seçerek programı çalıştırıyorsunuz. Bunun hem size hem de kullanıcıya maddi anlamda çok büyük bir rahatlık getireceği aşikar. Daha fazla hız ve daha fazla güvenlik istenen bir ortamda Oracle kullanabileceğiniz gibi orta ve küçük ölçekli yerlerde mySql, Firebird gibi veritabanlarını kullanabilirsiniz. Bu tür işler için geliştirilmiş başka teknolojiler var mıdır bilmiyorum ama benim etrafımda görebildiğim bir kaç teknolojiden bahsetmek istiyorum. İlk söylemek istediğim aslında böyle birşeyin olamayacağı :) Tıpkı "bir kere derle, her işletim sisteminde çalıştır" sözü gibi... Yani extra kod yazmadan böyle bir şeyin çok sağlıklı bir şekilde yapılabileceği şimdilik uzun bir hayal çünkü veritabanı sistemleri arasında oldukça büyük farklar var. Birisi Stored prosedürleri destekler birisi desteklemez, birisinde tetikleyiciler vardır diğerinde yoktur, birinde otomatik artan sayı vardır diğerinde yoktur v.s. v.s. (Aslında bırakın bu tür yapısal farklılıkları sql lehçelerinde bile inanılmaz farklılıklar var.) 3 yol var : 1 - Case Veritabanı Of mySql: bla1 bla1 ; firebird: bla2 bla2; oracle : bla3 bla3; sybase: bla4 bla4; end; tarzı kodlarla farklı olan yerleri manuel olarak biz yönetecez ve bu da programdaki kod ve hata sayısının kabarıklaşmasına neden olacak. Kafamızı karman çorman etmesini hiç söylemiyorum bile... 2- Kullanmak istediğimiz her veritabanının ortak alt kümesi belirlenir ve bu şekilde sadece connection stringi değiştirerek aynı programla birden fazla veritabanına destek vermiş olursunuz. İşin güzel yanı; fazla kod yoktur, fazla kafa karışıklığı yoktur, hata oluşma şansı çok azdır fakat alacağınız performans çok azdır. Hiçbir veritabanının üstün özelliklerinden faydalanamazsınız. 3- 1. ve 2. maddelerin karışımını uygulamak ve çok büyük hayaller kurmamak :) Böyle birşey çok elzemse Firebird + Oracle ikilisiyle sorunsuz şekilde çalışan bir uygulama yazın ve öpüp başınızın üzerine koyun. Gelelim kullanılabilecek teknolojilere...
Yukarıdaki resimde bu teknolojilerin bir kısmını görebiliyoruz. Tabi biz olaya sadece Delphi penceresinden bakacağımız için burda Delphi ile standart olarak gelen teknolojilere bakacaz. Bunların haricinde daha başka birşeyler bulmak pekala mümkün. Örnek : ZeosLib (http://sourceforge.net/projects/zeoslib/) dbGO : Borlandın Ado'ya erişmek için kullandığı kütüphane. dbGo kullanarak odbc üzerinden bütün veritabanlarına bağlanabilirsiniz. Ado.net ne durumdadır bilemiyorum ama şahsen ado'yu Access ve Ms SQL haricinde bir veritabanı ile kullanmayı pek tercih etmem. Ado'nun asıl sorunu sadece Windows platformunda çalışması. Yani ben o kadar kasacam, birden fazla veritabanı ile çalışan bir program yazacam ve bu program sadece windows ortamında çalışacak. Olmaz kardeşim :) Bde : Bde olmaz. Neden ? 1- Artık geliştirilmiyor. 2- Kylix için mevcut bir sürümü yok dbExpress : Borlandın ado ve bde'ye alternatif olarak geliştirdiği kütüphane. Özellikleri : 1- Veritabanı yönetim sistemleri ile çalışması 2- Kylix desteği sayesinde linux platformunu desteklemesi 3- Terminal bilgisayarlarda extra bir sürücü yüklemeye gerek kalmaması 4- Hızlı olması 5- Sürücü kütüphanesinin 3. şahıslar tarafından da geliştirilebilmesi dbexpress'in mantığı çok basit aslında. Bir veritabanına bağlanmak ve programdan gelen sql sorgusunu çalıştırıp dönen sonuçları direkt olarak tekrar programa göndermek. dbexpress'in önemli bir özelliği sadece ileriye yönelik imleçler içermesi. Bunun anlamı bir dbexpress tablosunu dbGride bağlayıp üzerinde hareket edemezsiniz. Kayıtlar üzerinde sadece ileriye doğru hareket edebilirsiniz. Bu ne işe yarar gibi gelebilir ilk başta ama dbexpresi ilginç yapan özellik bu :) Eğer kayıtlar üzerinde ileri geri sağa sola hareket etmek istiyorsanız clientdataset bileşenine göz atabilirsiniz... bu konuyla ilgilenmeye devam edecem. konu hakkında yorumlarınızı esirgemeyin. bu konuda cahal kalmayayım :)

Yorumlar

Adsız dedi ki…
Esasında ben veritabanı işlerini önce ikiye ayırıyorum.

a ) Genel işlemler
b ) Tablo işlemleri

Tablo işlemlerini ise 3'e ayırıyorum :

a ) Veri girme
b ) Veri silme
c ) Veri güncelleme

Esasında yapılan işlemler bundan fazlası olmuyor çoğu zaman.

Burada ise yapılacak ne vardır diye aradığımızda akla en mantıklı gelen OOP oluyor.

OOP'de ise iki tür programlama yapmak mümkün.

a ) Genel olarak VT işlemlerininin tanımlandığı üst sınıf ve özel işlemlerin tanımlandığı alt sınıf. (Mesela üst sınıfta sadece genel olarak "giriş" yapan bir sınıf vardır. Alt sınıfta ise bu girişin sql paremetreleri vardır, gibi...)

b ) Her bir veritabanı için tek bir sınıf.

Mantıklı olan ise a şıkkındaki gibi genel bir G/Ç işlemleri sınıfı ve onun altında özel olarak o VT sunucusu için yazılmış sınıflar.

Şöyle bir yapı çıkıyor ortaya :

+ Class DB
+++ Class mySQL
+++ Class msSQL
+++ Class SQLite

Burada özel class'lara da alt classlar tanımlayarak işi daha bir ağaç yapısına kavuşturmak (=çoğu zaman işi daha fazla karıştırmak) mümkün.

Kod içinden programcı bunları yapabilir. Basit bir yöntemdir aslında. Şu sıralarda oldukça sık kullanılmaktadır. Daha soyut kod yazıldığı için P programcısının yazdığı bir sınıfı diğer bir programcı alıp kolayca programına ekleyip, programını P programcısının sınıfı ile yazabilmektedir.

Bu blogdaki popüler yayınlar

Yazılımı Oluşturan Bileşenler Nelerdir?

Yazılımı oluşturan bileşenlerden daha önce söz etmiştik. Şimdi bu bileşenlerin neler oldukları üzerinde biraz duralım. Yazılımı oluşturan bileşenler = Mantık + Veri + Belge + İnsan + Program. Bu bileşenlerin az çok neler olduğunu, neleri kapsadığını biliyoruz ama biz yine de kıyısından köşesinden açıklayalım. Zaten bu yazıdaki asıl amaç yazılım bileşenlerinden belgelemenin yerini ve önemi (dökümantasyon) vurgulamak. Mantık = Yazılım herşeyden önce bir işin bilgisayar aracılığı ile yapılması amacına yöneliktir. Bu nedenle bilgisayarlaştırılmak istenen işin mevcut mantığı bir şekilde yazılıma da yansılıtılmak zorundadır. Veri = Her tür yazılım mutlaka bir veri üzerinde çalışmak durumundadır. Veri işlemeyen yazılımın geliştirilmesi söz konusu değildir. Söz konusu olan veri dış ortamdan alınabileceği gibi yazılımın içerisinde de üretilebilir. Zaten yazılımın temel amacı veriyi bilgiye dönüştürmektir. İnsan = Doğal olarak yazılımın insan bileşeni iki boyutludur. Yazıl

Leyse li'l-insâni illâ mâ seâ

"Leyse li'l-insâni illâ mâ seâ" derken Hudâ; Anlamam hiç meskenetten sen ne beklersin daha? Mehmet Akif Ersoy / Durmayalim Leyse li'l-insâni illâ mâ seâ : Necm Süresi 39. Ayet. [İnsan için ancak çalıştığı vardır.] Meskenet: 1 . Miskinlik, beceriksizlik. 2 . Yoksulluk, fakirlik. (Türk Dil Kurumu) Olay zaten yeterince acik. Yan gelip yatma kardesim. Calis. Bu misralar yazildigi donemde bu anlami tasiyordu fakat zaman ilerledikce baska bir gercegi de gozler onune seriyor.Gerci bu gercek cok kapsamli bir kac satirla anlatilabilecek bir sey degil kaldiki benim bilgim de buna yeterli degil zaten. Ben giris cumlelerini verebilirim gerisini arastirmak yaziyi okuyanlara kalmis. (Matrix gibi bisey oldu bu yaw. Neo'nun kahinle bulusup yanindan ayrildiktan sonra Morpheus ile konusma sahnesi.) Yani kisaca sunu demek istiyorum. Ben bu misrayi ilk okudugumda hic birsey anlamadim. Bu misralari anlayabilmek icin kuran mealine ve turkce sozluklere bakmak zorunda k

Yunus sen bu dünyaya niye geldin?

Göçtü Kervan Ah nice bir uyursun uyanmaz mısın Göçtü kervan kaldık dağlar başında Çağrışı tellallar inanmaz mısın Göçtü kervan kaldık dağlar başında Emr-i hac göçeli hayli zamandır Muhammed cümleye dindir imandır Delilsiz gidilmez yollar yamandır Göçtü kervan kaldık dağlar başında Yunus sen bu dünyaya niye geldin Gece gündüz Hakkı zikretsin dilin Enbiyaya uğramaz ise yolun Göçtü kervan kaldık dağlar başında Yunus Emre