Eksplorasi: Object Oriented Database

June 11, 2009

Part 1 of Object Oriented Database (OODB) Exploration
by Elvina (13507082)


Sebelumnya, ingin review sedikit tentang Object Oriented.

Objek merupakan pemodelan sistem yang lebih natural dan di dalam dunia nyata, objek bisa dilihat di mana saja. Konsep objek ini diturunkan menjadi kelas, yaitu blue-print dari objek itu sendiri.
Object oriented tidak bisa dipisahkan dari konsep:
1. Encapsulation (pemaketan data berserta metode)
2. Inheritance (penciptaan kelas baru dengan mewarisi karakteristik yang telah ada ditambah karakteristik unik kelas baru)
3. Polymorphism (satu nama kelas yang dapat menyatakan objek yang berbeda-beda).

Apa sih OODB itu??

Object-oriented database atau object database adalah sebuah model basis data yang informasinya direpresentasikan dalam bentuk objek, seperti yang digunakan pada pemograman berorientasi objek. OODB direkomendasikan ketika ada kebutuhan bisnis untuk memproses data yang kompleks.Sesuai dengan namanya, OODB adalah gabungan kemampuan basis data yang dikombinasikan dengan bahasa pemograman berorientasi objek. Lebih lanjut, OODB ini tidak hanya menjadi jenis baru dari basis data, tapi juga menghasilkan sistem manajemen basis data (SBD) yang dinamakan Object Database Management System (ODBMS).Kemampuan yang dimiliki oleh bahasa pemograman berorientasi objek antara lain: tipe data abstrak, inheritance (pewarisan), dan identitas objek. Jika dikombinasikan dengan basis data, akan menjadi OODB yang: persisten, mendukung adanya transaksi, query yang simple untuk data yang besar, akses dan control yang konkuren, keamanan, dan data recovery.Beberapa basis data berorientasi objek didesain agar bisa bekerja dengan baik dengan bahasa pemograman tertentu seperti Phyton, Perl, Java, C#, Visual Basic .NET, Objective-C, dan Smalltalk.

Sejarah OODB..

Istilah OODB pertama kali muncul pada tahun 1985. Proyek-proyek yang terkenal dari perkembangan OODB ini antara lain:-          Encore-Ob/Server (Brown University)
–          EXODUS (University of Wisconsin-Madison)
–          IRIS (HP)
–          ODE (Bell Labs)
–          ORION (Microelectronic and Computer Technology Corporation)
–         dll.Produk komersial awal yang memakai konsep OODB ini adalah Gemstone, Gbase, dan Vbase. Pada awal sampai pertengahan tahun 1990-an, berkembang produk komersial lain dan produk-produk baru lainnya terus berkembang menggunakan OODB ini.Untuk ODBMS sendiri, konsep yang ditekankan adalah persistensi yang dimiliki oleh bahasa pemograman objek. Produk komersial awalnya diintegrasikan dengan bahasa yang bermacam-macam seperti GemStone memakai bahasa Smalltalk, Gbase yang menggunakan LISP, Vbase menggunakan COP, dan lain sebagainya. Di tahun 1990-am, C++, Java, dan C# mendominasi pasaran ODBMS.

Mulai tahun 2004, OODB bisa berkembang dengan sangat pesat ketika ada sistem open source OODB muncul dan secara umum mudah untuk digunakan.

Kenapa OODB??
Dilihat dari sisi industry, OODB memberikan pelayanan integrasi data dan data sharing. OODB adalah kombinasi terintegrasi yang baik dari operating sistem, basis data, bahasa pemograman, spreadsheets, word-processor, dan expert system intelegensia buatan.

OODB memungkinkan Referential Sharing, yaitu aplikasi, produk,atau objek yang berbagai macam yang bisa dibagi menjadi sub-object. Referential sharing inilah yang mendukung diterapkannya identitas objek dan pewarisan.

==================================================

Part 2 of Object Oriented Database (OODB) Exploration
25 Juni 2009

Struktur Object di OODB

Paradigma OODB didasarkan pada enkapsulasi data dan kode. Seperti yang telah diketahui, enkapsulasi menyebabkan isi dari sebuah objek tidak terlihat di dunia luar objek tersebut. Secara konsep, semua interaksi antara objek dan sistem di luar dirinya dilakukan via messages. Interface antara objek dan sistem di luar dirinya inilah yang dinamakan kumpulan dari pesan (set of messages).

Secara umum, sebuah objek berasosiasi dengan

1. Sebuah himpunan variable (a set of variables) yang mengandung data untuk objek dan variable yang berkorespondensi dengan atribut di model E-R.

2. Sebuah himpunan pesan (a set of variables); kesinilah objek member respon. Tiap pesan bisa mempunyai 0, 1 atau banyak parameter.

3. Sebuah himpunan method (a set of variables) ; masing-masingnya adalah badan kode untuk mengimplementasikan pesan. Method mengembalikan nilai sebagai respon pesan.

Diilustrasikan dengan mengambil contoh entitas employee dalam basis data bank. Misalnya gaji tahunan karyawan dihitung dengan cara yang berbeda untuk tiap karyawan. Manajer mendapatkan bonus sesuai dengan performa bank, sedangkan teller mendapat bonus berdasarkan jumlah jam mereka bekerja. Dalam kasus ini, semua objek employee berhubungan dengan message gaji-tahunan, tapi mereka dihitung dengan cara yang berbeda. Dengan mengenkapsulasi informasi bagaimana mendapatkan gaji tahunan karyawan dalam objek employee, semua objek employee bisa menampilkan interface yang sama. Karena hanya interface external yang ditampilkan oleh sebuah objek adalah a set of message yang berhubungan dengan objek tersebut, maka dimungkinkan untuk memodifikasi definisi method dan variable tanpa mempengaruhi sisa sistem lain.

Dalam OODB, kita mengekspresikan atribut turunan dari entitas model E-R sebagai read-only message. Read-only message tidak mempengaruhi nilai dari variable dalam objek. Setiap atribut pada entitas HARUS mempunyai variable dan pasangan messages dari objek yang berhubungan dalam model OO. Misalnya atribut address dari entitas employee bisa direpresentasikan dengan:

  • Variable address
  • Message get-address
  • Message set-address (dengan parameter new-address untuk mengupdate address).

Object Classes dalam OODB

Biasanya, ada banyak objek yang sama dalam basis data. Sama di sini maksudnya mereka merespon message yang sama, menggunakan method yang sama, dan mempunyai variable untuk nama dan tipe yang sama. Akan sangat sia-sia jika kita harus mendefinisikan masing-masing objek secara terpisah. Oleh karena itu, kita menggabungkan objek-objek yang sama ini dalam sebuah class (kelas). Masing-masing objek adalah instansiasi dari kelasnya.

==================================================

Part 3 of Object Oriented Database (OODB) Exploration
10 Juli 2009

Inheritance (Pewarisan)

Sebuah skema OODB biasanya membutuhkan banyak kelas. Namun, kebanyakan dari kelas-kelas ituserupa. Misalnya, OO untuk aplikasi bank, customer dan employee bank bisa dikatakan serupa karena mempunyai atribut/variable yang sama, seperti nama, alamat, dll. Namun, tentu saja tidak semuanya sama dan ada variable spesifik yang hanya dimiliki oleh customer atau employee saja. Objek yang mempunyai beberapa variable yang sama ini bisa didefinisikan dalam sebuah representasi jika kita menggabungkannya dalam satu kelas.  Representasi langsungnya bisa dengan menyediakan tempat untuk kelas dalam sebuah spesialisasi hierarki (“ISA” relationship). Kita bisa mengatakan bahwa employee adalah sebuah spesialisasi dari person dan customer juga spesialisasi dari person, karena sama-sama memiliki atribut yang dimiliki oleh person.
Konsep dari hierarki kelas serupa dengan konsep dari hierarki spesialisasi yang kita kenal dalam model ER. Variable dan method yang dimiliki oleh employee dan customer bisa diasosiasikan dengn kelas person. Spesialisasi kelas ini dikenal juga dengan subclass. Maka employee adalah subclass dari person, customer juga subclass dari person.
ISA(2) Dalam banyak kasus, bisa terjadi multiple inheritance, yang mengizinkan sebuah kelas untuk menurunkan variable dan method dari multiple superclasses. Hubungan kelas-subkelas direpresentasikan dengan adanya directed acyclic graph (DAG) di mana setiap kelas bisa memiliki lebih dari satu superclass.

Contoh kasus multiple inheritance ini adalah basis data sebuah universitas. Dalam sebuah universitas, person bisa menjadi student ataupun teacher. Jadi di basis data universitas ada kelas student dan ada kelas teacher, yang merupakan subclass dari person. Tapi terdapat juga kasus di mana ada student yang juga bekerja sebagai teacher-assistant, yang mana kelas teacher-assistant ini adalah subkelas dari kelas student dan kelas teacher.
Pada kasus-kasus tertentu terjadi ambiguitas jika ada variable yang sama, misalnya student mempunyai departemen tertentu, begitu juga dengan teacher. Ambiguitas akan terjadi pada teacher-assistant, di mana sebagai student dia memiliki departemen dan sebagai teacher juga begitu. Namun, hal ini bisa diakali dengan memberi nama berbeda untuk departemen tiap kelas (jangan hanya menggunakan kata ‘dept’, tapi pakai ‘student-dept‘ dan ‘teacher-dept’), atau membuat treat error untuk kasus seperti ini, atau jika susah, user terpaksa membuat kelas baru, yaitu kelas teacher-assistant. Tapi diingatkan lagi, kasus ambiguitas ini tidak selalu terjadi.

Contoh multiple inheritance:

DAG(2)

Object Identity (Identitas Objek)

Sebuah objek akan menyimpan identitasnya walaupun ada beberapa atau semua nilai dari variablenya berubah-ubah atau method-nya didefinisikan ulang. Sistem OO biasanya menggunakan sebuah object-identifier untuk mengidentifikasi objek. Objek identifier harus unik, yang artinya tidak ada 2 objek yang memiliki identifier yang sama. Sebaiknya, user langsung membuat identifier yang unik untuk setiap objek dan tidak menggunakan system-generated identifier karena identifier yang dibuat akan bergantung pada sistem dan bisa menjadi redundan.
Identitas objek bisa berupa nilai (value), misalnya primary key objek yang mengidentifikasi objek tertentu; atau bisa menggunakan nama (biasanya dipakai pada sistem file, satu file dengan file lain dibedakan dari namanya).

Object Containment

Terkadang, ada objek yang mengandung objek lain. Objek ini disebut complex object atau composite object. Misalnya, pada sebuah sepeda. Sepeda adalah satu objek, yang memiliki roda. Roda adalah objek baru, namun dimiliki oleh sepeda. Roda sendiri juga memiliki ban, jeruji/velg. Makanya, containment ini juga bisa memiliki banyak level, yang menciptakan hierarki containment antar objek. Hubungan antar kelas dalam containment ini adalah is-part-of, bukan is-a. Hubungan antar  kelas digambarkan dalam skema dengan menggunakan DAG juga.

Dengan adanya containment, user yang berbeda bisa melihat data-data tertentu sesuai dengan kebutuhannya. Misalnya seorang wheel-designer bisa fokus pada kelas roda, tanpa terlalu memperhatikan objek lain yang juga merupakan komponen penyusun sepeda seperti rem, dll.

==================================================

Part 4 of Object Oriented Database (OODB) Exploration
24Juli 2009

Nah, pada part sebelumnya, yaitu part 2 dan 3, sudah dijelaskan mengenai konsep dasar OO dalam level yang masih abstrak. Untuk menggunakan konsep dasar itu, kita harus mengekspresikannya dalam sebuah bahasa pemrograman OO. Kita bisa melakukannya dalam 2 cara:
1. Menggunakan konsep OO murni sebagai design tool dan menuliskan kodenya, misalnya basis data relasional. Kita menggunakan pendekatan ini ketika kita menggunakan entity-relationship diagram ke model data, lalu secara manual mengubah diagramnya menjadi kumpulan relasi.
2. Kita mengkombinasikan konsep OO dalam sebuah bahasa yang kita lakukan untuk memanipulasi data. Dengan pendekatan seperti ini, ada beberapa bahasa yang bisa diintegrasikan. Misalnya dengan menggunakan SQL yang ditambah dengan tipe kompleks dan OO.

Tapi, bisa juga dengan menggunakan bahasa pemrograman yang sudah ada dan memperluas cakupannya dengan basis data. Nah, bahasa seperti inilah yang disebut persistent programming languages.

Kita akan membahas lebih lanjut mengenai persisten programming languages ini.

Persistent Programming Languages

Bahasa basis data berbeda dengan bahasa pemograman tradisional karena bahasa basis data secara langsung memanipulasi data secara persistent, yaitu data yang terus ada bahkan ketika program yang dibuat telah dihentikan.
Untuk mengakses basis data hanyalah salah satu komponen dati aplikasi nyatanya (real world application). SQL memang efektif untuk memanipulasi data, tapi bahasa pemogramanlah yang dibutuhkan untuk mengimplementasikan komponen lain dari aplikasi, seperti user interface atau keterhubungan dengan komputer lain.

Persistent programming language adalah bahasa pemrograman yang diperluas dengan konsep yang meng-handle data yang persistent.

Untuk persistent programming language, untuk eksplorasi kali ini, saya akan memakai contoh bahasa C++.

Persistent C++ Systems

C++ menyediakan features yang bisa mendukung persistansi data tanpa mengubah bahasa itu sendiri. Misalnya, kita mendeklarasikan sebuah kelas yang disebut Persisten_Object dengan atribut dan method untuk mendukung persistensi ini; kelas lain juga harus persisten sehingga bisa dibuat subclassnya ataupun pewarisannya juga persisten.
Bahasa C++ juga mengizinkan kita untuk kembali mendefinisikan sendiri nama dan operator fungsi-fungsi standar, seperti +, -, pointer referens (->), dan lain lain. Kemampuan ini disebut overloading.

C++ menyediakan kemampuan agar data bisa persisten dengan class library mempunyai keuntungan kita bisa membuat perubahan yang kecil sehingga gampang untuk diimplementasikan.

ODMG C++

Standardisasi dari perluasan bahasa C++ ini agar bisa persisten dilakukan oleh Object Database Management Group (ODMG) di mana tahun 1993 mengeluarkan versi pertama dan tahun 1997 mengeluarkan versi kedua (ODMG 2.0). Untuk tugas eksplorasi ini, karena banyak mendapatkan referensi dari ODMG 2.0, versi ini akan digunakan sebagai bahan contoh.

Ekstensi dari ODMG C++ ini dibagi menjadi 2 bagian:
(1) C++ Object Definition Language (C++ ODL)
(2) C++ Object Manipulation Language (C++ OML)

C++ ODL

C++ ODL memperluas sintaks definsi tipe C++.
Contoh kode yang ditulis dalam C++ ODL:

class Branch: public d_Object{
public:
d_String branch_name;
d_String address;
d_Long assets;
};
class Account: public d_Object{
private:
d_Long balance;
public:
d_Long account_number;
d_Set<d_Ref<Customer>> owners;
d_Long find_balance();
int unpdate_balance(d_Long delta);
};
class Person: public d_Object{
public:
d_String name;
d_String address;
};
class Customer: public Person{
public:
d_Date member_from;
d_Long customer_ID;
d_Ref<Branch> home_branch;
d_Set<d_Ref<Account>>accounts;
};

Dalam contoh di atas, skema terdiri dari 4 kelas. Masing-masing kelas adalah subclass dari d_Object. Kelas Branch, Account, Person adalah subclass langsung dari d_Object, kelas Customer subclass dari Person, sedangkan Person subclass dari d_Object, jadi secara tidak langsung Customer juga subclass dari d_Object. Tipe d_String, d_Long, d_Date adalah tipe standar yang didefinisikan ODMG 2.0.

Kelas d_Ref<> dan d_Set<> adalah kelas template yang sudah didefinisikan juga oleh ODMG 2.0.
Pada contoh, d_Ref<Branch> digunakan di kelas Customer sebagai referens atau persistent pointer. Tipe d_Set<d_Ref<Customer>> yang digunakan di kelas Account adalah kumpulan pointer ke objek Account.

C++ OML

Contoh:

int create_account_owner(String name, String address){
d_Database bank_db_obj;
d_Database *bank_db =& bank_db_obj;
bank_db->open(“Bank-DB”);
d_Transaction Trans;
Trans.begin();
d_Ref<Account> account = new(bank_db,”Account”) Account;
d_Ref<Customer> cust = new(bank_db,”Customer”) Customer;
cust->name=name;
cust->address=address;
cust->accounts.insert_element(account);
account->owners.insert_element(cust);

//kode lain untuk cust_id, acc_num, dll
Trans.commit();
bank_db->close();
}

Awalnya, program membuka basis data untuk memulai transaksi. Lalu program membuat objek account dan pemilik baru  menggunakan operator new. Pada OML ini, kelas d_Object punya operator new yang akan mengalokasikan memori untuk menyimpan data baru.

Kelas template d_Set<> memiliki method yang digunakan untuk menyisipkan customer dan account dalam kumpulan yang tepat setelah objek customer dan account dibuat.

Di akhir program menjalankan transaksi dan akhirnya keluar dari basis data.

Object-oriented Database Query

Pertama, kita akan membahas tentang Object Query Language (OQL).
Dalam OODBS, query-qurey diekspresikan seperti notasi SQL, yang disebut OQL. OMDG OQL ini juga menyerupai SQL declarative language yang menyediakan lingkungan yang luas untuk melakukan query objek database, termasuk high-level untuk kumpulan objek dan struktur objek.

OQL ini memiliki object extension untuk identitas objek, compleksitas objek, path expression, keterlibatan operasi, dan inheritance. OQL menjaga integritas objek dengan menggunakan method objek yang telah terdefinisi, bukan operator update. Namun, harus dikatakan bahwa OQL bukanlah sebuah bahasa yang lengkap karena tidak ada operator update seperti insert, delete yang secara eksplisit disediakan. Tapi untungnya OQL bisa meminta method state-altering (perubahan state) seperti create(), add(), delete(), dan lain-lain untuk mendapat fungsi yang tak sediakan tersebut.

Contohnya:
Person(name: “Atika”, birthdate: 11/25/1988, salary: 1000000)
untuk membuat objek person yang baru dan kita memerlukan atribut data.

OQL Query Forms

OQL adalah bahasa yang fungsional (expression-oriented), di mana setiap  query adalah typed expression. Type ini bisa jadi atomic object, collection object, atau literal.
Ada 3 bentuk query dalam OQL:
1. Sebuah extent name mempunyai kumpulan objek yang akan mengembalikan kumpulan objek tersebut.
Contoh: person -> set<Person>
2. Sebuah objek yang telah diberi nama adalah query yang legal. Misal  seorang karyawan mempunyai nama “budi”, dari situ didapatkan 2 query,  yaitu objek itu sendiri dan subordinat nya, yang mengembalika tipe Person dan kumpulan objeknya.
Contoh:  budi -> Person
budi.subordinates -> set<Person>

3. Query select mengembalikan sebuah tipe literal dari bag, set, atau list  barang yang di-select dengan dibantu oleh ‘form’ dan ‘where’
Contoh:

SELECT <collection>
FROM {<collection> [<iterator var>]}*
[WEHERE <cond expr>]
[GROUP BY <group expr>]
[HAVING <cont expr>]
[ORDER BY <order cond>]

Jika benar-benar dicontohkan dalam bahasa OQL, akan mirip dengan  bahasa SQL namun OQL mempunyai object extensions. Misal

select c.address
from Person p, p.children c
where p.address.street = “Bay Street” and
count (p.children) >=1 and c.address.city != p.address.city

Query ini akan mencari semua anak dari setiap orang yang tinggal di Bay Street yang memiliki paling tidak 1 anak, yang akan mengembalikan alamat dari anak yang tidak tinggal di kota yang sama dengan orang tuanya. Ini diarahkan dari kelas Person, dengan menggunakan referensi child untuk instansiasi lain dari kelas Person, lalu baru menggunakan kelas Address dan City.

Path Expression

OQL ini adalah bahasa yang navigational, yang artinya bahasa ini bisa  mengikuti referensi dari objek yang di-retrive untuk mendapatkan objek lain yang diinginkan. Nah, path expression inilah yang merupakan mekanisme navigasinya.
Path expression dimulai dengan variable yang terinstansiasi oleh sebuah  objek yang diikuti sebuah period(.) atau arrow(->), dan diikuti lagi oleh atribut atau nama hubungannya.

Misalkan p adalah variable yang terinstansiasi oleh type Person. 2 contoh  path expression yang ekuivalen berikut mengembalikan kota di mana objek spouse tinggal.

p.spouse.address.city.name

p->spouse->address->city->name

Karena tadi kita sudah membahas bahasa C++ yang mempunyai sistem persisten untuk diterapkan dalam basis data, contoh implementasinya dalam OQL misalnya:

query untuk mendapatkan semua account yang dimiliki oleh orang tertentu, sebut saja “John” yang mempunyai balance besar dari 100.000 Rupiah. Berikut kodenya:

d_Set<d_Ref<Account>> result;
d_OQL_Query q1(“select a from Customer c, c.accounts a
where c.name=”John” and a.find_balance()>100″);
d_oql_execute(q1, result);
)

==================================================

Part 5 of Object Oriented Database (OODB) Exploration
05 Agustus 2009

Setelah mengenal OODB lebih jauh, sekarang kita akan melihat kelebihan dan kekurangannya.

Kelebihan OODB

1. Desain data yang bagus🙂

Terkadang pada sistem yang dinamis, programmer merasa kesulitan dalam menangani masalah data. Dengan OODB, masalah ini bisa lebih dikurangi. Karena dengan orientasi obyek maka proses penyimpanan dan pengambilan data jauh lebih sederhana sehingga bisa menghemat waktu dan tenaga.

Konsep OO bisa membuat program dan data terintegrasi dengan baik. Paradigma OO dapat menyederhanakan application modelling, kebutuhan design tool serta visualisasi sisten dan desainnya. Dengan menggunakan, OODB kita tidak hanya mendapatkan persistensi data saja, melainkan juga keseluruhan obyek database, bahkan termasuk implemented behaviour-nya. Selain itu, kita dapat memanggil suatu method dari obyek tertentu pada database di server sehingga distribusi aplikasinya lebih mudah.

Dalam Relational Database (RDB), untuk melaksanakan hal ini kita harus memasukkan stored procedure atau suatu komponen obyek. Sehingga arsitektur dari aplikasi jadi lebih rumit dan membutuhkan keahlian pemrograman lebih lanjut.

2. Pembuatan aplikasi lebih sederhana

Dengan OODB kita dapat menyederhanakan pembuatan aplikasi dengan meminimalisasi penggunaan bahasa pemrograman dan implementasi teknologi yang dibutuhkan. Kadang kala, biaya suatu proyek bisa tinggi karena faktor teknis seperti penggunaan tool, bahasa pemograman, dan aplikasi yang bermacam-macam dalam satu lingkungan kerja. Dengan penyederhanaan pembuatan aplikasi ini, biaya keseluruhan bisa lebih ditekan pula.

Selain itu, kemampuan teknis yang dibutuhkanpun menjadi berkurang karena programmer cukup menguasai konsep dan bahasa OO (seperti C++ dan Java ^^) dengan sedikit tambahan mengenai koneksi ke database. Programmer bisa tinggal memfokuskan pada persistensi obyek dan tidak perlu lagi meguraikan obyek ke tabel, memikirkan relasi antar tabel, dan sebaliknya.

3. Kinerja tangguh

Pada produk ODBMS yang tepat dan sesuai dengan aplikasi yang dibuat, OODB dapat meningkatkan kinerja aplikasi dengan peningkatan yang tinggi.

Tak seperti RDB, Programmer tidak perlu memetakan data dengan objek lagi, menguraikan tabel ke objek, dan lain-lain. Tidak perlunya pemetaan dan pelaksanaan query-query ini membuat kinerja program jadi lebih cepat karena program langsung mengakses data dengan obyeknya…

Pada beberapa produk ODBMS bahkan dimungkinkan adanya client caching. Kecepatan yang dapat dihasilkan akan menjadi besar karena program hanya perlu mengakses cache dari database yang sudah ada di client.

Kelemahan OODB

Di balik kelebihannya, tentu saja OODB mempunyai kelemahan. Kelemahan OODB:

Pertama, hal yang bisa kita soroti adalah resiko migrasi dari RDB ke OODB atau sebaliknya. Cara penyimpanan dan pengambilan data pada OODB sangat berbeda dengan RDB. Demikian juga cara pengaksesannnya. Itu sebabnya, apabila kita bermigrasi dari RDB ke OODB, kita harus terus menggunakan OODB. Setelah mengimplementasikan OODB, sangat sulit untuk kembali ke RDB.

Kedua, tight application coupling. Pada banyak implementasi OODB, data berpasangan erat dengan aplikasinya sehingga sulit untuk dipisahkan. Hal ini menyederhanakan desain dan kode, tapi menghilangkan batas antara basis data dengan aplikasi. Juga menyebabkan suatu kendala baru bila kita ingin bermigrasi ke produk ODBMS yang berbeda atau kembali kedalam RDBMS.

Contoh tight coupling adalah bahasa COBOL di mana ada kesulitan untuk  mengakses basis data COBOL dengan bahasa pemprograman lain.

Ketiga, kecacatan kinerja. Memang, dari kinerjanya yang tangguh dalam hal mengakses data secara efisien, namun pada kondisi tertentu mungkin saja OODB menghasilkan kinerja yang buruk. Misalnya OODB yang lemah dalam pelaksanaan ad-hoc query. Kehilangan arah data juga bisa menjadi masalah karena optimisasi dan fungsionalitas OODB biasanya ketinggalan dengan produk RDBMS yang telah lebih lama beredar di pasaran.
Beberapa implementasi OODB tidak menyediakan penguncian yang cukup kecil terhadap data akibatnya penguncian bisa saja terjadi pada kumpulan objek padahal yang dituju hanya satu objek tertentu saja.

Keempat, dukungan platform yang terbatas.

Pada dasarnya OODB dapat diterapkan pada bahasa pemrograman orientasi obyek apa saja, tapi produk ODBMS yang ada masih kebanyakan diorientasikan untuk digunakan dalam bahasa Java dan C++. Disamping itu juga belum banyak tersedia komponen untuk pengaksesan OODB untuuk bahasa pemrograman lainnya.

Bahkan, walaupun OODB diimplementasikan dengan Java, kita harus tetap mencari jaminan bahwa implementasi dapat diterapkan pada platfrom yang bermacam-macam meningat Java juga memiliki aneka nuansa dan keanehan-keanehan bila diterapkan pada lingkungan yang berbeda.

Kelima, query yang kompleks.
Terkadang, cara query pada OODB bisa berbeda-beda tergantung bahasa pemograman yang digunakan. Akses data juga tak bisa dilakukan dengan melihat ID-Object saja atau primary key saja, namun kadang juga berdasarkan range, pola, dll. Oleh sebab itu, OODB butuh logika yang mendalam pula.

Selanjutnya, orang yang mempunyai kemampuan spesifik OODB lebih sedikit daripada orang yang memahami RDB atau orang yang menguasai MS-Access, MS-SQL, Oracle, dll. Peralihan paradigma dari  RDB ke OODB juga membutuhkan pelatihan khusus karena banyak perbedaan pendekatan seperti performa, join, locking, query, dsb.

Dari eksplorasi yang dilakukan, bisa ditarik kesimpulan:

1. OODB memodelkan data sebagai sebuah objek sehingga jika programmer yang ingin menambahkan tipe data baru dengan membuat proyek baru. Pengaksesan dan pengolahan data murni dilakukan dengan pemograman OO.

Hal ini tentu saja berbeda dengan RDB yang memodelkan data dengan tabel terformat. Tabel-tabel inilah yang berisi tipe data.

2. Melihat masih cukup banyaknya kekurangan OODB ini, sebelum memutuskan untuk memakai ODBMS ada baiknya mempertimbangkan kekurangan yang sudah diuraikan di atas. Saya sendiri pribadi masih menyukai RDB🙂

3. Mempertimbangkan faktor kebutuhan dan ketersediaan aplikasi serta platform. (masih termasuk kekurangannya tadi).

Pada beberapa aplikasi tertentu penggunaan OODB mungkin sangat tepat. Sebaliknya untuk beberapa aplikasi lainnya OODB mungkin akan menjadi hambatan serius. Contohnya OODB tidak cocok digunakan untuk menyimpan data transaksi yang besar seperti data keuangan, kepegawaian dan data transaksi bank. Di sini mungkin lebih baik memilih RDB.

OODB bagus digunakan menggunakan tipe data multimedia dan data yang sifatnya kompleks.

DAFTAR REFERENSI

Heryanto, Bambang, “Esensi-esensi pemograman Java”, Penerbit Informatika, Bandung: 2007

http://www.geocities.com/a_alaydrus/oodb/bab2.html

http://www.cs.pitt.edu/~chang/156/19oodb.html

http://en.wikipedia.org/wiki/Object_database

http://archive.devx.com/dbzone/articles/sf0601/sf0601p.asp

There’s a hero if you look inside your heart
You don’t have to be afraid of what you are.
There’s an answer if you reach into your soul
and the sorrow that you know will melt awayAnd then a hero comes along
with the strength to carry on
and you cast your fears aside
and you know you can survive.So, when you feel like hope is gone
look inside you and be strong
and you’ll finally see the truth
that a hero lies in you.It’s a long road when you face the world alone,
No one reaches out a hand for you to hold.
You can find love if you search within yourself
and the emptiness you felt will disappear.And then a hero comes along
with the strength to carry on
and you cast your fears aside
and you know you can survive.So, when you feel like hope is gone
look inside you and be strong
and you’ll finally see the truth
that a hero lies in you.

oh….Lord knows dreams are hard to follow,
But don’t let anyone tear them away.
Hold on, there will be tomorrow,
In time you’ll find the way

And then a hero comes along
with the strength to carry on
and you cast your fears aside
and you know you can survive.

So, when you feel like hope is gone
look inside you and be strong
and you’ll finally see the truth
that a hero lies in you
that a hero lies in … you
mmmm that a hero lies in…..you.

2 Responses to “Eksplorasi: Object Oriented Database”

  1. Makasih yah tentang penjelasannya
    saya jadi sangat terbantu dalam tugas Sistem Basis Data saya……
    GOD BLESS YOU

  2. bisa minta alamat email nya bang?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: