Komunitas Cloud Indonesia

Datastore di Google App Engine (#1)

Penulis :   |   September 1, 2012

Google App Engine menyediakan sebuah fitur penyimpanan data yang disebut sebagai Datastore. Fitur ini dapat dianalogikan dengan program-program database server yang sudah umum dipakai, walaupun terdapat beberapa perbedaan yang cukup signifikan. Tulisan ini akan memperkenalkan konsep Datastore serta implementasinya dan terbagi atas beberapa tulisan, mengingat cukup banyak materi yang harus dibahas.

Pengenalan

Datastore bersifat schemaless, tidak memiliki semua struktur yang seragam seperti halnya pada konsep database secara umum. Untuk mempermudah pemahaman atas Datastore, penulis membayangkannya sebagai sebuah struktur data berbentuk tree. Atau untuk mudahnya, analogikan konsep Datastore dalam susunan folder / direktori dalam sistem operasi anda. Didalamnya ada folder, ada file, kemudian didalam folder terdapat lagi file dan folder lain, begitu seterusnya. Jadi memang  konsepnya berbeda dengan apa yang telah dipahami didalam model database konvensional.

Google App Engine SDK yang anda download telah menyediakan sebuah API low-level-access ke Datastore dengan fungsi-fungsi yang mudah untuk memanipulasi data seperti get, put, delete dan untuk mengambil data yaitu query. SDK ini juga memiliki implementasi dari interface-interface JDO (Java Data Object) dan JPA (Java Persistence API) untuk permodelan dan penyimpanan data. Ini sudah termasuk mekanisme untuk membuat data object dan melakukan query.

Entity dan Pernak-Perniknya

Object didalam Datastore disebut Entity. Data-data anda merupakan salah satu bentuk object. Setiap object memiliki property dan setiap property akan memiliki value. Jika anda sudah terbiasa dengan pemrograman OOP, maka konsep ini tentunya sudah sangat familiar. Sebagaimana didalam struktur data, setiap value akan memiliki tipe yang menentukan bagaimana value ini disimpan dan digunakan. Tipe-tipe data yang didukung didalam Datastore App Engine antara lain:

  • Integer
  • Floating-point
  • Tanggal
  • Data binary
  • Tanggal

Setiap entity didalam Datastore memiliki sebuah key yang secara spesifik mengidentifikasi entity tersebut. Komponen-komponen yang membentuk key ini adalah:

    • Kind. Kind adalah jenis dari entity yang dibuat. Dalam konsep database umum, kind dapat diasumsikan sebagai sebuah tabel.
    • Identifier. ID ini dapat berupa string ataupun numeric.
    • Ancestor. Sifatnya opsional, merujuk ke entity lain sebagai ancestor. Ini menjelaskan analogi struktur data Tree dari Datastore App Engine.

Untuk membuat entity, kita tinggal mengambil service DataStore yang ada lalu memanggil sebuah API yang khusus untuk melakukan penyimpanan entity. Sangat mudah.

import java.util.Date;
import com.google.appengine.api.datastore.*;

DatastoreService ds = DatastoreServiceFactory.getDatastoreService(); Entity mhs = new Entity(“Mahasiswa”, “96113072”); mhs.setProperty(“Nama”, “Bejo”); mhs.setProperty(“NRP”, “96113072”); ds.put(mhs);

Potongan program diatas akan menyimpan sebuah entity dengan kind “Mahasiswa” dan dua buah property: Nama dan NRP. Kebetulan tipe data yang dipakai sebagai contoh adalah String. Anda tetap bisa menggunakan tipe-tipe data yang lain yang memang telah disediakan.

Didalam Datastore, sebagaimana telah dijelaskan sebelumnya, entity-entity tersusun dalam sebuah struktur tree yang mirip dengan model file folder dari setiap sistem operasi yang beredar saat ini. Ketika kita membuat sebuah entity,  kita dapat menentukan apakah entity ini akan “terikat” pada entity lain sebagai “parent”-nya ataukah berdiri sendiri. Sekali hubungan relasi ini dibuat maka sifatnya permanen, tidak bisa lagi dirubah. Entity yang dibuat berdiri sendiri disebut sebagai root entity.

Untuk melakukan attachment sebagai entity ke entity lain, kita hanya perlu mengetahui key dari entity parentnya dan memasukkannya sebagai parameter saat membuat entity baru:

Entity mhs = new Entity("Mahasiswa");
ds.put(mhs);

Entity mhs_nilai = new Entity("Mahasiswa_Nilai", mhs.getKey());
mhs_nilai.setProperty("nilai", 100);
ds.put(mhs_nilai);

Beberapa fungsi dasar pengoperasian Entity yang lain adalah sebagai berikut:

Membaca isi Entity:

Entity mhs = ds.get("96113072");

Update Entity:

ds.put(mhs);

Anda dapat perhatikan bahwa update Entity tidak ada bedanya dengan membuat Entity baru. Jika Entity yang hendak ditulis ternyata telah ada, maka Datastore akan meng-overwrite data lama dengan data yang baru.

Menghapus Entity:

ds.delete(mhs);

Diseri berikutnya, kita akan membahas lebih jauh mengenai App Engine DataStore, seperti konsep Query, Index dan lain-lain.

  1. ACCI – Asosiasi Cloud Computing Indonesia
  2. Lowongan .NET Developer
  3. Lowongan Android Developer
  4. Lowongan Java Developer
  5. Jakarta Cloud Computing Meetup 09.2016

Penulis :

Seorang Technology Enthusiast. Bekerja sebagai Senior Software Developer di sebuah perusahaan Software House. Founder group facebook "GEEK FACTOR", sebuah komunitas bagi para pecinta teknologi (http://www.facebook.com/groups/nerd.factor).

Komentar

Leave a Reply

Your email address will not be published. Required fields are marked *