A. Cloud Computing
Cloud
computing adalah gabungan pemanfaatan teknologi komputer dan pengembangan
berbasis internet. Cloud Computing hadir dengan memudahkan akses data dari mana
saja dan kapan saja, karena dengan memanfaatkan internet dan menggunakan
perangkat fixed atau mobile device menggunakan internet cloud sebagai tempat
penyimpanan data, aplikasi dan lainya. Pengguna diuntungkan dengan semakin
mudahnya memperoleh atau mengunduh data secara cepat dan mudah karena banyak
layanan yang dibuka oleh pihak industri. Keuntungan bagi pihak industri pun
tidak kalah besar dengan kemudahan yang didapat oleh pengguna, karena dengan
semakin majunya teknologi cloud computing akan semakin memudahkan industri
untuk memasarkan produk dan menyebarkan informasi secara meluas keseluruh penjuru
dunia.
5
karakteristik dari Cloud Computing:
1.
Resource
Pooling
Sumber daya komputasi
(storage, CPU, memory, network bandwidth, dsb.) yang dikumpulkan oleh penyedia
layanan (service provider) untuk memenuhi kebutuhan banyak pelanggan (service
consumers) dengan model multi-tenant. Sumber daya komputasi ini bisa berupa
sumber daya fisik ataupun virtual dan juga bisa dipakai secara dinamis oleh
para pelanggan untuk mencukupi kebutuhannya.
2.
Broad
Network Access
Kapabilitas layanan
dari cloud provider tersedia lewat jaringan dan bisa diakses oleh berbagai
jenis perangkat, seperti smartphone, tablet, laptop, workstation, dsb.
3.
Measured
Service
Tersedia layanan untuk
mengoptimasi dan memonitor layanan yang dipakai secara otomatis. Dengan
monitoring sistem ini, kita bisa melihat berapa resources komputasi yang telah
dipakai, seperti: bandwidth , storage, processing, jumlah pengguna aktif, dsb.
Layanan monitoring ini sebagai bentuk transparansi antara cloud provider dan
cloud consumer.
4.
Rapid
Elasticity
Kapabilitas dari
layanan cloud provider bisa dipakai oleh cloud consumer secara dinamis
berdasarkan kebutuhan. Cloud consumer bisa menaikkan atau menurunkan kapasitas
layanan. Kapasitas layanan yang disediakan ini biasanya tidak terbatas, dan
service consumer bisa dengan bebas dan mudah memilih kapasitas yang diinginkan
setiap saat.
5.
Self
Service
Cloud Consumer bisa
mengkonfigurasikan secara mandiri layanan yang ingin dipakai melalui sebuah
sistem, tanpa perlu interaksi manusia dengan pihak cloud provider. Konfigurasi
layanan yang dipilih ini harus tersedia segera dan saat itu juga secara
otomatis.
B. NoSQL Database
RDBMS
merupakan suatu sistem khusus yang mengatur organisasi, penyimpanan, akses,
keamanan dan integritas data. RDBMS merupakan sistem pengelolaan basis data
yang paling banyak digunakan saat ini, meskipun terdapat berbagai macam sistem
yang lain. RDBMS menyimpan informasi dalam suatu kumpulan tabel. Suatu desain
RDBMS dikatakan bagus jika terdapat normalisasi basis data didalamnya.
NoSQL merupakan
basis data non relasional dengan schema-free yang memunculkan pertanyaan
bagaimana NoSQL dapat melakukan partisi untuk data yang berukuran besar,
melakukan query, replikasi data, dan mendukung adanya konsistensi. Bagian ini
berisi penjelasan empat model data NoSQL, yaitu column-oriented,
document-oriented, object-oriented dan graph-oriented.
1.
Column-oriented
Penerepan
column-oriented terdapat dalam Casssandra. Cassandra menggunakan distribusi
multidimensional map indexed dengan sebuah key. Baris kunci yang sering
digunakan dalam Cassandra adalah string dengan panjang 16-36 bytes. Setiap
kolom digabungkan menjadi sebuah coloumn families. Wei Kang menerapkan beberapa
konsep dalam penerapan column-oriented. Suatu kolom unit atomic dari informasi
didukung oleh Cassandra yang diekspresikan dengan nama value. Super-column
merupakan gabungan dari kolom dengan nama yang umum dan digunakan untuk
pemodelan tipe data yang komplek. Baris secara unik mengidentifikasikan data
yang terdapat dalam column dan super-column. Dalam Cassandra baris dapat
dikenali dengan sebuah kunci. Column Family merupakan bagian dari suatu unit
abstraksi yang berisi baris kunci yang tergabung dalam column dan super column
yang memiliki struktur data yang tinggi. Keyspace merupakan level teritnggi
dari unit informasi yang terdapat dalam Cassandra. Kumpulan column families
sebenarnya merupakan subordinat dari satu keyspace. Pada intinya model data column-oriented
memungkinkan suatu aplikasi secara bebas untuk mengembangkan bagaimana
informasi disusun berdasarkan suatu desain schema.
2.
Document-oriented
Contoh penerapan model
data document-oriented terdapat dalam CouchDB yang dibangun oleh IBMTM. Basis
data yang memiliki model data document-oriented sangat bermanfaat untuk suatu
domain yang bentuk masukannya dokumen yang tidak terstruktur seperti web pages,
wikis, discussion forums, dan blogs. Data tersimpan dalam basis data CouchDB
yang mencakup serangkaian dokumentasi yang berisi beberapa atribut dan nilai
dengan masing-masing id yang unik dan metadata. CouchDB tidak pernah melakukan
overwrite document, melainkan menambahkan dokumen baru ke basis data bila
diperlukan seperti ketika terjadi proses update.
3.
Object-oriented
Basis data berorientasi
objek adalah model basis data dimana informasi direpresentasikan dalam bentuk
objek yang digunakan dalam pemrograman berorientasi obyek. OrientDB adalah
contoh dari basis data object-oriented. Dokumen OrientDB yang ada dalam suatu
cluster, dapat berupa fisik, logis atau in-memory, yang digunakan untuk
menyimpan link ke dalam data. Cluster adalah cara yang sangat umum untuk
mengelompokkan record, hal ini merupakan suatu konsep yang tidak ada dalam
basis data relasional. Cara ini dapat mengelompokkan semua record pada jenis
tertentu, atau dengan nilai-nilai tertentu. OrientDB menggunakan segmen data
untuk menyimpan isi record. Segmen data mirip dengan file physical cluster yang
menggunakan dua atau lebih file, yaitu satu atau beberapa file dengan ekstensi "oda"
(Orient Data) dan hanya satu file dengan ekstensi "odh" (Orient data
Holes).
4.
Graph-oriented
Basis data grafik (GraphDB) adalah
basis data yang menggunakan struktur grafik yang berisi node, edge, dan property
untuk mewakili dan menyimpan informasi. GraphDB diperlukan untuk data grafik
yang berskala besar, terutama yang dipergunakan oleh para peneliti biologi
jaringan dan situs jaringan sosial, seperti Facebook, dan Twitter. GraphDB memetakan
secara langsung objek ke aplikasi dan lebih intuitif untuk menggambarkan data
set asosiatif. Beberapa keuntungan dari GraphDB adalah Intuitive, dimengerti
oleh pikiran manusia, yaitu menggambarkan entitas dan hubungan sebagai grafik
masalah umum yang akrab dengan manusia; Elemental untuk ilmu komputer, yaitu
grafik, terutama grafik pohon (seperti binary-tree, B+ tree, red-black tree)
berfungsi sebagai struktur data dasar dalam ilmu komputer dan berbagai masalah
(shortest path dan max-flow) dapat diubah dan diselesaikan dengan algoritma grafik;
Ubiquitous, yaitu pemodelan ER ke model jejaring sosial selalu dikelilingi oleh
grafik baik di computer ataupun dalam kenyataan.
Keunggulan
lain dalam GraphDB adalah biasanya lintasan grafik digunakan sebagai pengganti
operasi join yang berpengaruh dalam efisiensi query. GraphDB juga tergantung
pada kurangnya schema yang kaku di mana suatu schema dapat selalu diubah dengan
mudah pada grafik, karena struktur grafik sendiri cukup fleksibel untuk
mewakili perubahan melalui edit edge dan properti. GraphDB juga dapat mendukung
semua fitur basis data yang kuat.
Beberapa
aplikasi berbasis web yang telah menerapkan penggunaan NoSQL diantaranya adalah
Google dengan BigTable, Amazon dengan Dynamo, dan Facebook dengan Cassandra dan
Hadoop. Dengan mengesampingkan aspek ACID, NoSQL menerapkan konsep BASE
(Basically Available, Soft state, dan Eventually consistent) untuk meningkatkan
availability dan partitioning data. Basically Available memastikan bahwa sistem
bekerja sepanjang waktu. Soft state merupakan suatu kondisi dimana sistem tidak
harus konsisten setiap saat, dan Eventually consisten yang menekanakan bahwa
sistem akan menjadi konsisten beberapa waktu kemudian.
Telah
banyak produk basis data NoSQL dengan berbagai keunggulannya masing-masing. Beberapa
diantaranya adalah CouchDB yang memiliki nilai konkruensi dan RESTfull HTTP
request, simpleDB yang memiliki kesederhanaan dan fleksibilitas dalam pemeliharaannya,
dan Google BigTable yang memiliki kuota yang terbatas.
Eric Brewer menyatakan bahwa NoSQL didasarkan pada teori CAP yaitu pemilihan dua
dari tiga aspek yang ada yang harus dipenuhi oleh basis data yaitu
1. Consistency
Avaibility (CA)
Berseberangan dengan Partition-Tolerance
dan biasanya berhubungan dengan replikasi.
2. Consistency
Partition-Tolerance (CP)
Berseberangan dengan Avaibility dalam
penyimpanan data.
3. Avaibility
Partition-Tolerance
Sistem mencapai kondisi eventual consistency melalui
replikasi dan verifikasi yang konsisten dalam node yang telah terbagi - bagi.
Dalam
basis data NoSQL penerapan konsep tersebut diterjemahkan dalam empat konsep
dasar yaitu Non-Relational, MapReduce, Schema Free, dan Horizontal Scaling.
1)
Non-Relational
Konsep Non-Relational
dalam basis data NoSQL meliputi hirarki, graf, dan basis data berorientasi
obyek yang sudah terlebih dahulu ada sejak tahun 1960 sebelum akhirnya basis
data relasional muncul pada tahun 1970 [13]. Penggunaan basis data
non-relational kembali merebak seiring dengan bertambahnya aplikasi berbasis
web yang memerlukan banyak penyimpanan data. Meskipun memiliki kelemahan pada
konsistensi dan redundansi data, namun basis data non-relasional dapat
menyelesaikan beberapa permasalahan terkait dengan avaibility, dan partition tolerance.
Tugas pengecekan konsistensi dan redundansi data diserahkan pada sisi aplikasi,
sedangkan basis data nonrelational hanya bertugas memanipulasi penyimpanan
saja.
2)
MapReduce
MapReduce merupakan
model pemrograman yang diadaptasi dari pemrograman fungsional yang
diimplementasikan untuk mengolah dataset yang sangat besar. Tujuan dari
MapReduce adalah merancang suatu abstraksi baru yang memungkinkan pengguna
untuk membuat antarmuka pemrograman sederhana dan menyembunyikan detail yang rumit
dari pararelisasi, fault-tolerance, distribusi data, dan load balancing dalam
pustaka pemrogramannya. Hasilnya menunjukkan bahwa penerapan MapReduce dapat
menyederhanakan antarmuka pemrograman yang dapat pendukung paralelisasi dan
distribusi komputasi skala besar secara otomatis.
Pemrograman dengan
MapReduce telah sukses diterapkan penggunaannya oleh Google untuk berbagai
tujuan, salah satunya adalah Google indexing. Dalam kinerjanya, Google
menerapakan ribuan mesin yang bekerja pada ratusan terabytes data dengan lokasi
server yang tersebar di beberapa lokasi. Jenis arsitektur seperti ini dapat
mengurangi waktu kinerja yang diperlukan. Pembangunan arsitektur Google dengan
menggunakan MapReduce memerlukan waktu hanya dalam beberapa jam saja
dibandingkan dengan tidak menerapkan MapReduce yang memerlukan waktu selama
berbulan bulan. Penggunaan library dalam MapReduce memiliki beberapa keuntungan
seperti load balancing, optimasi perangkat penyimpanan yang nantinya akan
meningkatkan keefisiensian sistem dan kemudahan dalam penggunaannya. Mudahnya,
MapReduce bekerja dengan membagi proses menjadi dua fase, yaitu tahap map dan
tahap reduce. Seorang programmer dapat memanfaatkan dua fungsi ini bersama
fungsi key-value pairs sebagai input dan output untuk mencapai semua fase.
Berikut ini merupakan
contoh penggunaan fungsi Map() dan Reduce() yang diambil dari makalah Ricky Ho.
Tujuan dari penggunaan MapReduce dalam kasus ini adalah menghitung jumlah
distinct path diantara orang-orang yang memiliki koneksi dan akan disarankan ke
orang dalam suatu situs pertemanan. Fungsi MapReduce digunakan untuk mencari 10
orang teratas yang saling terkoneksi.
Untuk fungsi Map(),
sebuah Cartesian Product dikerjakan untuk semua pasangan teman. Kita juga perlu
menghilangkan pasangan yang terkoneksi langsung. Oleh karena itu fungsi Map()
juga harus memunculkan pasangan orang yang terkoneksi langsung. Kita perlu
mengambil key space sedemikian rupa sehingga semua key dengan pasangan yang
sama akan mempunyai pengurangan yang sama. Disisi lain, kita memerlukan
pasangan yang berhubungan langsung sebelum pasangan yang mempunyai pemisah.
Pada Fungsi Reduce() semua key yang
mencapai reducer yang sama akan diurutkan. Jadi pasangan yang terkoneksi langsung
akan ada sebelum pasangan yang tidak terkoneksi. Reducer hanya perlu untuk
mengecek jika pasangan pertama merupakan koneksi langsung dan jika iya, maka
lanjutnya sisanya.
3)
Schema-Free
NoSQL dan RDBMS
mempunyai perbedaan dalam hal penerapan skema basis data. Dalam basis data
relasional, sebuah tabel didesain dengan peraturan skema yang ketat. NoSQL
menyimpan data dengan aturan yang lebih longgar, artinya tidak seperti basis
data yang berdasarkan SQL tradisional , NoSQL tidak memiliki tabel, kolom,
primary dan foreign key, join, dan relasi. Dalam pengembangan basis data
relasional, developer/database administrator harus berhati-hati dalam
menentukan bagaimana tabel saling berelasi dan field yang ada didalam setiap
tabel. Karena perubahan skema dalam RDBMS dapat menimbulkan masalah
ketergantungan dan integritas, seperti timbulnya kolom null dan relasi kunci
yang tidak cocok. Hal ini bukan masalah dalam NoSQL karena adanya penerapan
schemafree. Setiap dokumen bertanggung jawab terhadap isinya sendiri, maksutnya
null value dapat dihilangkan dalam beberapa baris, dan field baru dapat
didefinisikan dalam setiap dokumen secara indpenden. Salah satu produk basis
data NoSQL yang menerapkan fitur schema-free adalah Cassandra. Dalam Cassandra,
pengembang hanya perlu mendefinisikan keyspace sebagai pertimbangan container
dan contains column families. Keyspace hanya digunakan sebagai logical
namespace yang dapat dimasukkan dalam configurations dan hold column families.
Column families artinya sebuah nama untuk relasi data dan hirarki kolom
(memungkinkan penyisipin tabel dalam kolom). Disamping itu, kita hanya perlu
menambahkan data dalam tabel, menggunakan kolom, tanpa menentukan kolomnya terlebih
dahulu. Dalam Cassandra kita hanya perlu mendefinisikan tabel namespace dan
hirarki kolom didalamnya, memodelkan dan mendesain tabel join adalah masalah
dalam basis data relasional bukan NoSQL.
Manfaat lain dalam
penggunaan schema-free adalah penghematan dalam media penyimpanan. Dalam basis
data relasional, setiap field yang ada dalam tabel harus mempunyai nilai,
walaupun nilai itu null. Model data schema free artinya setiap baris
memungkinkan memiliki nilai sebanyak yang telah didefinisikan dalam tiap
fields, dan tidak perlu menggunakan nilai yang memang tidak diperlukan.
Kelemahan dalam penggunaan schema free adalah memunculkan lemahnya
pendefinisian struktur yang menungkinkan terjadinya penggunaan basis data yang
tidak konsisten. Jika tujuan pembangunan basis data didasarkan pada konsistenti
yang ketat, seperti wiki, document management systems, discussion forums,
blogs, dan support management systems, basis data relasional masih merupakan
pilihan yang tepat.
4)
Horizontal
Scaling
Horizontal scaling
memungkinkan basis data dijalankan pada beberapa server untuk meningkatkan
kemampuan perangkat penyimpanan dan meningkatkan efisiensi waktu. Hal ini
memerlukan kemampuan dinamis pemartisian data dalam serangkaian node (seperti
storage hosts) dalam suatu cluster server. Kemampuan untuk meningkatkan kemampuan
dengan menambahkan beberapa komputer sangatlah penting dilakukan untuk data
yang jumlahnya banyak, karena vertical scaling dilakukan dengan meningkatkan
kemampuan spesifikasi single server (misalnya penambahan prosesor, memori, dan
peralatan penyimpanan) terbatas untuk dilakukan dan lebih mahal.
Horizontal scaling berarti
memungkinkan dilakukannya penambahan server dalam satu jaringan dan user tidak
sadar jika ada hardware yang diganti dari sisi server (transparent). Ada
beberapa teknik partisi yang digunakan dalam basis data untuk melakukan
horizontal scaling, salah satunya adalah consistent hashing yang digunakan
dalam Cassandra dan Amazon Dynamo. Kunci dari menerapkan consistent hashing
adalah membuat suatu lingkaran atau “ring”. Setiap node dalam sistem yang
ditandai dengan random value dalam suatu space yang merepresentasikan posisi
dari ring. Suatu kunci item ditandai dengan sebuah node untuk memperoleh
posisinya pada ring, kemudian berpindah menuju node selanjutya yang sudah
ditandai. Node memerankan peranan penting sebagai koordinator untuk kunci yang
akan digunakan dalam route request. Kemudian, setiap node menjadi tanggung
jawab dari daerah yang ada di ring diantara noder dan node dalam ring
sebelumnya. Pejelasan detail mengenal Dynamo dijelaskan oleh DeCandia dkk.
Konsep
utama dari penerapan NoSQL adalah bagaimana mengatasi jumlah data yang sangat
besar dan ledakan data dalam aplikasi web sebagai paridigma baru dalam
penerapan teknologi basis data. Permasalahan dalam RDBMS mengenai skalabilitas
dan partisi data dapat diatasi dengan menggunakan NoSQL. NoSQL memiliki
beberapa keunggulan seperti basis data non-relasional (meliputi hirarki, graf,
dan basis data object oriented); MapReduce yang diambil dari fungsi pemrograman
diterapkan untuk menghasilkan dataset yang besar; Schema-free yang memungkinkan
dimana tidak terdapat tabel, kolom, kunci primer dan sekunder, join, dan
relasi; Horizontal scaling yang memungkinkan basis data untuk dijalankan
dibeberapa server untuk meningkatkan penyimpanan dan peningkatan waktu akses
untuk mengatasi permasalahan banyaknya data. Empat model data NoSQL juga telah
berhasil diinvestigasi dalam penelitian ini, yaitu column-oriented,
document-oriented, object-oriented, dan graph-oriented. Sistem pembagian data
dapat dilakukan dengan memenuhi dua dari tiga teori CAP.
Untuk
peningkatan horizontal scaling, NoSQL mengorbankan konsistensi. Meskipun
demikian NoSQL merupakan alternatif dari RDBMS dalam hal pendistribusian data,
bukan penanganan masalah secara keseluruhan terutama transaksi yang tinggi.
NoSQL tidak menerapkan konsistensi dan integritas data, hal ini membuat
programmer harus bekerja ekstra dalam untuk mengatasinya dari sisis
pemrograman.