Menggunakan MongoDB dengan Java

Repost dari artikel saya di PC Mild 23/2010

Database menjadi bagian penting dalam sebuah aplikasi. Kegunaan utamanya adalah menyimpan berbagai data dinamis dari aplikasi tersebut. Salah satu kendala dalam penggunaan RDBMS (Relational Database Management System) seperti MySql dan SQL Server adalah kesulitannya dalam membuat struktur penyimpanan data yang tidak tabular dan dengan field yang mudah berubah.

Beberapa kendala lain yang ditemukan dalam RDBMS membuat para developer menciptakan suatu DBMS yang tidak bergantung pada struktur tabel dan syntax SQL. MongoDB adalah salah satu DBMS NoSQL berbasis document-oriented yang sedang berkembang pesat saat ini, karena juga berbasis open source. Untuk lebih jelasnya bisa mengunjungi website resminya di http://www.mongodb.org.

Berikut ini adalah sekilas bagaimana cara menggunakan MongoDB dengan bahasa Java.

  1. Download program mongoDB di website resminya, http://www.mongodb.org/downloads, pilih platform yang digunakan. Dalam artikel ini penulis menggunakan platform Windows 7 64-bit, tetapi program yang tersedia dalam CD adalah untuk Windows 32-bit. Platform lain yang tersedia adalah OS X (Mac), Linux, dan Solaris. Anda juga bisa mendownload source code-nya jika ingin mempelajarinya.

    Tampilan website download MongoDB

  2. Sebelum menjalankan program mongoDB server, pertama-tama siapkan folder “data\db” pada drive C Anda. Secara default MongoDB akan menyimpan seluruh data di folder tersebut.
  3. Setelah itu, extract program dalam MongoDB ke folder “C:\mongoDB”. Untuk menjalankan server MongoDB, jalankan file “mongod.exe”. Sebuah jendela terminal akan muncul menandakan bahwa server telah berjalan. Anda bisa mencobanya dengan menjalankan client MongoDB dengan menjalankan file “mongo.exe”. Ketik “help” untuk bantuan.

    Console MongoDB Server

  4. Sebelum menggunakan MongoDB pada program Java Anda, pertama-tama download terlebih dahulu driver yang disediakan. Ketika artikel ini ditulis, driver MongoDB untuk Java tersedia dalam versi 2.3. Driver ini berfungsi untuk menghubungkan MongoDB dengan bahasa pemrograman yang digunakan. Driver untuk Java bisa didownload pada https://github.com/mongodb/mongo-java-driver/downloads atau tersedia dalam CD.
  5. Install driver tersebut dalam project program Anda. Cara instalasinya berbeda-beda, tergantung IDE (Integrated Development Environment) apa yang Anda gunakan. Dalam artikel ini menggunakan NetBeans IDE versi 6.9.1. Caranya adalah dengan mengklik kanan project, pilih Properties, lalu masuk pada menu libraries. Tambahkan file jar dari driver dengan cara mengklik tombol Add Jar/Folder. Anda bisa langsung menggunakan source code pada CD untuk mencobanya.

    Instalasi driver MongoDB melalui NetBeans

  6. Langkah berikutnya adalah membuat koneksi. Koneksi antara program Java dengan database dapat dengan mudah dibuat. Class yang merepresentasikan koneksi adalah com.mongodb.Mongo. Jika Anda menggunakan MongoDB dalam satu komputer yang sama dengan program Java Anda, maka tidak perlu menentukan host dan port yang digunakan. Jadi pembuatan koneksinya adalah cukup dengan membuat object dari class Mongo. Perlu diketahui bahwa ada beberapa Exception yang harus dideklarasikan dalam try-catch-nya, yaitu com.mongodb.MongoException dan java.net.UnknownHostException.
    import com.mongodb.Mongo;
    
    //...kode lain
    
    Mongo mongo = new Mongo(); // atau new Mongo("host:port");
  7. Setelah koneksi terbentuk, langkah berikutnya adalah menentukan database yang digunakan. Jika dengan MySQL Anda harus membuat terlebih dahulu database-nya melalui client atau phpMyAdmin, dengan MongoDB, jika database belum pernah dibuat, maka secara otomatis MongoDB akan membuatkannya. Dalam driver Java, database direpresentasikan dalam class com.mongodb.DB. Karena itu, cukup membuat object dari class DB tersebut, kemudian mendapatkan data DB dari koneksi yang sudah ada.
    import com.mongodb.Mongo;
    import com.mongodb.DB;
    
    //...kode lain
    
    Mongo mongo = new Mongo();
    DB db = mongo.getDb("rumahsakit");
  8. Bisa dibilang, dalam MongoDB ini tabel dinyatakan dengan nama Collection, yaitu record-record yang tergabung menjadi satu kumpulan. Collection ini bisa didapatkan dari fungsi object database getCollection(), dan disimpan sebagai representasi class com.mongodb.DBCollection. Bagi yang terbiasa menggunakan MySQL, anggap saja ini untuk mendapatkan tabel yang akan dimanipulasi.
    import com.mongodb.Mongo;
    import com.mongodb.DB;
    import com.mongodb.DBCollection;
    
    //...kode lain
    
    Mongo mongo = new Mongo();
    DB db = mongo.getDb("rumahsakit");
    DBCollection collection = db.getCollection("dokter");
  9. Record dalam MongoDB disebut dengan document. Setiap document merupakan bagian dari Collection. Dengan menggunakan driver Java, document direpresentasikan dalam interface com.mongodb.DBObject. Karena itu adalah sebuah interface, maka Anda tidak dapat secara langsung menggunakannya, namun biasanya dengan membuat class yang mengimplementasikan interface tersebut. Namun Anda tidak perlu membuatnya, karena dapat juga menggunakan class com.mongodb.BasicDBObject. Untuk menambahkan document ke dalam collection, buat saja sebuah object dari BasicDBObject. Untuk mengatur field yang akan diisi, gunakan method put(). Kemudian untuk menambahkannya ke dalam collection, gunakan method insert().
    BasicDBObject object = new BasicDBObject();
    object.put("id", "310710040");
    object.put("nama", "Muhammad Fauzil Haqqi");
    
    collection.insert(object); //didapatkan dari kode sebelumnya
  10. Setelah data dimasukkan, untuk mengambilnya dapat menggunakan method find() pada object collection. Nilai kembali dari method ini adalah class com.mongodb.DBCursor, sebuah class yang mirip dengan Iterator, sehingga Anda bisa menelusurinya satu-persatu seperti kode berikut ini.
    ArrayList list = new ArrayList();
    
    DBCursor cursor = collection.find();
    while (cursor.hasNext()) {
       DBObject object = cursor.next();
       list.add(object);
    }
  11. Untuk mengubah nilai dalam document tersebut, dapat menggunakan method update() dari collection. Method ini memiliki 2 parameter, yaitu parameter pertama untuk kriteria (hampir sama seperti WHERE pada SQL), sedangkan parameter kedua adalah document baru yang dimasukkan. Kedua parameter tersebut adalah object dari class DBObject.
    BasicDBObject kriteria = new BasicDBObject();
    kriteria.put("id", "310710040");
    
    BasicDBObject object = new BasicDBObject();
    object.put("id", "310710040");
    object.put("nama", "Muhammad Fauzil Haqqi");
    
    collection.update(kriteria, object);
  12. Untuk menghapus document, hampir sama dengan cara mengupdate. Hanya saja method yang digunakan adalah remove(). Hampir sama seperti syntax SQL DELETE, method ini menerima kriteria document yang akan dihapus, namun dalam bentuk object dari class DBObject.
    BasicDBObject kriteria = new BasicDBObject();
    kriteria.put("id", "310710040");
    
    collection.remove(kriteria);
  13. Untuk menutup koneksi MongoDB, cukup menggunakan object koneksi Mongo sebelumnya, lalu memanggil method close().
    mongo.close();
  14. Beberapa hal lain yang penting Anda ketahui tentang MongoDB adalah:
    • MongoDB secara otomatis akan membuatkan Database, Collection, Document, beserta field di dalamnya jika Anda belum pernah membuatnya. Dengan demikian Anda tidak perlu membuat batch SQL yang begitu panjang untuk persiapan membuat database.
    • Setiap document yang dibuat dalam MongoDB akan selalu memiliki index id yang unik. Hal ini secara global dapat mempercepat proses pencarian data.
    • MongoDB lebih mudah diimplementasikan dalam database berukuran besar yang terpisah dalam banyak server. Berbeda dengan RDBMS yang cukup sulit dalam melakukan konfigurasinya.
    • MongoDB tetap dapat membuat record yang berelasi terhadap record lainnya.

Mudah bukan? Selamat mencoba.

Download source code secara keseluruhanArtikel ini telah dipublikasikan di media cetak tabloid PC Mild edisi 23 tahun 2010 lalu.

8 Comments

  1. Salam kenal nih buat mas Haqqi. Artikelnya bagus dan sangat membantu.
    Sebelumnya saya juga sudah baca artikel mas Haqqi di PCMedia. Mas Haqqi mengatakan ada contoh/artikel mengenai mongoDB yang menggunakan PHP di blog ini. Tapi kok saya gak nemu ya. Mohon petunjuknya, hehe

    Reply
  2. Sukron mas Haqqi, MongoDB Is the best, tetapi masih butuh banyak pembenahan, by the way, mas haki saya mau bertanya nie, klw mau buat reportnya pake iReport dengan RDBMS MongoDB bagaimana ya ?

    maklum mas masih newbie …. hehehhehe

    Reply

Leave a Comment.