Makale Özeti

Günümüz uygulamalarının çok büyük bir kısmı İlişkisel veritabanı sistemi kullanıyor(RDBMS). Bu programcıyı kısıtlıyor ve aynı zamanda performans düşüklüğüne sebep olabiliyor. Bu yazımızda RDBMS'e alternatif ve daha güçlü bir yapıya sahip olan Nesne yönelimli Veritabanı Sistemleri(Object Oriented Database Management System-OODBMS)e bir giriş yapacağız. Geri kalan makalelerimizde ise opensource proje olan do hakkında bilgi vereceğim.

Makale

Neden OODB
Günümüzde veritabanı kullanmak kaçınılmaz bir gereklilik. Bu uygulamaların çoğu OOP kullanırken veriyi saklamak amacıyla İlişkisel veritabanı sistemlerini kullanmak zorunda kalıyorlar(RDBMS). Bunun sonucunda verielrini ilgili yerlere yazmaları, bunun sonucunda çeşitli kodlar yazarak çekmek zorunda kalıyorlar. Verilerin ilgili tablolara gönderilmesi, ilgili kolonlara yazılması bir performans sorununu beraberinde getiriyor. Bu makalede OODBMS e giriş yapacağız. OODBMS Nedir?
Aslında OODBMS Nesne yönelimli programlama(OOP) ilkeleri ile Veritabanı Yönetim ilkelerinin birleşmesinden oluşur. OOPun inheritance, polymorphism gibi özellikleri ve DBMSin ACID özelliği, adhoc query dili OODBMS de bir araya geliyor.

Bir OODB, objeleri en düşük kısıtlama ile saklayasbilmelidir. Saklanan objeler kendi içlerinde başka objelere sahip olabilir, aynı zamanda inheritance da destekleyebilmelidir. Her nesnenin OID denilen ve o objenin tek olmasını sağlayan bir ID si vardır. OIDler süreklidir, sistem tarafından üretilir ve kesinlikle içerdiği üyelere bağlı değildir. OID ler, başka objeler için referans tutmayı kolaylaştırır ama referential integrity(örneği bir objeyi sildiğinizde başka bir obje silinen objeye ait bir referans tutuyor olabilir). RBDMS dünyasının temel özellikelrinden olan transactionlar, yüksek boyutlu veri saklama yeteneği, indexler, deathlock yakalama, yedek alma ve yedeği geri yükleme gibi özelliklerinin hepsi OODBMS dünyasında vardır.

OODBMSin birincil özelliği veritabanından gelen obje ile hafızadaki objeyi çağırmak arasında hiçbir farkın bulunmamasıdır. Bu RDBMS deki SQL yapısından ve ADO gibi bir ara katman kullanılmasından çok farklıdır. Veritabanından bir obje çağırıldığında ister bağımsız(hafızadaki objedeki değişiklik veritabanını etkilemez) bir obje ister bağımlı bir obje(objed yapılan değişiklik veritabanına yansır) olarak kullanılabilir.

RDBMS ile OODBMS karşılaştırması OODBMS in avantajları

  • Sınıf(Class) Hiyerarşisi
    Uygulamalarımızda veriler hiyerarşik bir yapıya sahiptir. Çok sık kullanılan Yönetici, Çalışan uygulamasına bakalım(yöneticinin aynı zamanda çalışan olduğunu hatıralyalım). RDBMS de bu tabloda isYonetici tarzı bir kolonla veya Foreign key belirtilerek başka bir tablo ile tutulurdu. Ama OODBMSde, Çalışan zaten Yönetici sınıfının bir üst sınıfıdır.
  • Query diline ihtiyacı yok
    RDBMSlerde olanın tam tersine OODBMSlerde Query diline ihtiyacınız yok ama isterseniz kullanabilirsiniz.
  • haritalama
    RDBMSlerde veritabanını objenize haritalamanız(mapping) gerekir, aynı şekilde objenizi veritabanına. Bu hem performans kaybıdır hem de sorun açma riski yüksektir. OODBMS lerde "haritalama" yapmanıza gerek olmadığı için hata riskini azaltır ve performansı arttırır.
  • Birincil Anahtar Yok
    RDBMS'de verilerin tekliğini sağlamak için Birincil anahtar(pk-primary key) kullanırdık ve bunları birbirlerine FK ile bağlardık. OODBMSlerde bu sorun ortadan kalktı(daha önce söylediğim OIDler aracılığıyla sağlanıyor).

    OODBMS'in dezavantajları
  • Şema değişiklikleri
    RDBMSde şema değişikliğine sebap olan tablo yaratma,silme,düzenleme gibi işlemler, uygulamadan bağımsızdır. Fakat OODBMS sistemde, class ekleme,silme,değiştirme; bu class ile ilişki içinde olan diğer classlarda da yapılmalıdır. Bu, OODBMS de şema değişikliklerinin sistemin tekrar derlenmesine sebep olacaktır. Bu da veritabanı büyüklüğüne ve içeriğine bağlı olarak bir zaman alacaktır.


    OODBMS benim için de yeni bir kavram. OODB olarak open source bir proje olan db4o'yu kullanıyorum ve ilerleyen makalelerimizde bunu anlatacağım..

    Proje hakkında bilgi Bu proje ilk olarak 2000 yılında Carl Rosenberger tarafından başlatıldı. OpenSource olan bu proje .net desteğinin yanısıra Java ile de uyumlu.. Ekipleri gerçekten iyi çalışıyor ve forumlarında direkt ekip ile iletişim kurabiliyorsunuz ve . ağızdan cevap alıyorsunuz. Gerçekten bir problem varsa ileriki versiyonlarda düzeltiyorlar..