OODBMSe giriş ve db4o

OODBMS’e giriş ve db4o Bu makale http://www.25hoursaday.com/WhyArentYouUsingAnOODBMS.html adresinden tercüme edilip geliştirilmiştir.. Bundaki amaç OODBMS hakkında daha geniş bilgi verebilmektir)Neden OODBGü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 verilerini 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 bize OOP bir yapı sağlayan ve RDBMS"in bir çok dezavantajını ortadan kaldıran 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 saklayabilmelidir. 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ı Birleşik nesneler ve ilişkilerBir OODBMSdeki nesneler, istenildiği kadar obje tutabilir. Biraz daha açacak olursak: Küçük sınıf(class)lardan oluşan orta boyutlu bir sınıf, başka bir büyük sınıfın parçası olabilir(sınırsız). Bu, RDBMS de ya çok sayıda kolon içeren devasa bir tabloyla mümkün, ya da normalize edilmiş küçük tablolar arasında PK-FK ilişkisi kurularak yapılabiliyordu. PK-FK ilişkisini kullanmak(bire-bir veya bire-çok ilişki) performans kaybına yol açabilir. Ayrıca programlama dünyasında nesneye ait referansları tutmak daha iyi bir modeldir. Sınıf(Class) HiyerarşisiUygulamaları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. İlişkisel Veritabanı Nesne-Yönelimli Veritabanı Query diline ihtiyacı yokRDBMSlerde olanın tam tersine OODBMSlerde Query diline ihtiyacınız yok ama isterseniz kullanabilirsiniz. RDBMS de Belge ve Departman tablolarının Başlık ve Ad sütununu birleştirip göstermek istediğimizde"select belge.belgeId, Departman.Ad from belge inner join Departman ON departman.departmanid=belge.departman" şeklinde bir sorgu kullanmamız gerekirdi..OODBMS"de ise(özellikle db4o(*)"da)Belge b=new Belge();ObjectSet x=DB.get(b);dedikten sonraBelge a=x[0]; şeklinde bir ifade ile objectsetin belli indexindeki nesneyi Belge tipine çevirip a.Departman.Ad diyip departman adına ulaşabiliriz... Ayrıca query yazmamız da mümkün. Haritalama yokRDBMSlerde 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. RDBMS ve OODBMS"in saklama grafikleri Birincil Anahtar YokRDBMS"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şiklikleriRDBMSde ş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"in geleceğiOODBMS henüz yeni bir kavram. Ama arkasına OOP"u alması onu güçlü bir yapı kazandırıyor. Programlarımıza ek çaba sarfetmeden uygulanması, performans getirileri ve kolay kullanılması onu RDBMS sistemlere göre açık ara öne geçiriyor. OODBMS benim için de yeni bir kavram. Bunu öğrenmek için biraz zahmet gerekecek ama eminim ki sonucuna değecek. Piyasada çeşitli OODB ler mevcut. Bunlardan en bilinenleri db4o ve versant. Bunlardan en popüleri ve en iyisi diyebileceğim ve aynı zamanda opensource olması sayesinde geliştirmeye açık yapı sunan db4o. Makalelerimizin devamında db4o ya ağırlık verilecektir. *DB4O hakkında bilgiBu 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 1. ağızdan cevap alıyorsunuz. Gerçekten bir problem varsa ileriki versiyonlarda düzeltiyorlar..DB4O hakkında istatistiki grafikler Performans Grafikleri Veri Saklama Şeması DB4O"nun avantajları

Döküman Arama

Başlık :

Kapat