Map Reduce
Setiap
istilah perlu definisi, dan harus ada kesepakatan akan definisi tersebut biar
tidak terjadi salah pengertian ataupun salah paham diantara para pengguna
istilah tersebut. MapReduce pun punya definisi. MapReduce adalah model
pemrograman rilisan Google yang ditujukan untuk memproses data berukuran
raksasa secara terdistribusi dan paralel dalam cluster yang terdiri atas ribuan
komputer. Dalam memproses data, secara garis besar MapReduce dapat dibagi dalam
dua proses yaitu proses Map dan proses Reduce. Kedua jenis proses ini
didistribusikan atau dibagi-bagikan ke setiap komputer dalam suatu cluster
(kelompok komputer yang salih terhubung) dan berjalan secara paralel tanpa
saling bergantung satu dengan yang lainnya. Proses Map bertugas untuk mengumpulkan
informasi dari potongan-potongan data yang terdistribusi dalam tiap komputer
dalam cluster. Hasilnya diserahkan kepada proses Reduce untuk diproses lebih
lanjut. Hasil proses Reduce merupakan hasil akhir yang dikirim ke pengguna.
Desain dan Struktur, MapReduce itu sederhana.
Dari definisinya, MapReduce
mungkin terkesan sangat ribet. Untuk memproses sebuah data raksasa, data itu
harus dipotong-potong kemudian dibagi-bagikan ke tiap komputer dalam suatu
cluster. Lalu proses Map dan proses Reduce pun harus dibagi-bagikan ke tiap
komputer dan dijalankan secara paralel. Terus hasil akhirnya juga disimpan
secara terdistribusi. Benar-benar terkesan merepotkan.
Beruntunglah, MapReduce
telah didesain sangat sederhana alias simple. Untuk menggunakan MapReduce,
seorang programer cukup membuat dua program yaitu program yang memuat kalkulasi
atau prosedur yang akan dilakukan oleh proses Map dan Reduce. Jadi tidak perlu
pusing memikirkan bagaimana memotong-motong data untuk dibagi-bagikan kepada
tiap komputer, dan memprosesnya secara paralel kemudian mengumpulkannya
kembali. Semua proses ini akan dikerjakan secara otomatis oleh MapReduce yang
dijalankan diatas.
Program yang memuat
kalkulasi yang akan dilakukan dalam proses Map disebut Fungsi Map, dan yang memuat
kalkulasi yang akan dikerjakan oleh proses Reduce disebut Fungsi Reduce. Jadi,
seorang programmer yang akan menjalankan MapReduce harus membuat program Fungsi
Map dan Fungsi Reduce.
Fungsi Map bertugas untuk
membaca input dalam bentuk pasangan Key/Value, lalu menghasilkan output berupa
pasangan Key/Value juga. Pasangan Key/Value hasil fungsi Map ini disebut
pasangan Key/Value intermediate. Kemudian, fungsi Reduce akan membaca pasangan
Key/Value intermediate hasil fungsi Map, dan menggabungkan atau mengelompokkannya
berdasarkan Key tersebut. Lain katanya, tiap Value yang memiliki Key yang sama
akan digabungkan dalam satu kelompok. Fungsi Reduce juga menghasilkan output
berupa pasangan Key/Value.
Contoh kasus map reduce
adalah misalnya jika kita ingin menghitung jumlah penggunaan huruf dalam sebuah
buku. Misal kita punya satu file teks besar yang berisi seluruh kalimat yang
menyusun sebuah buku. Maka yang dilakukan oleh Map Reduce program yang
menghitung penggunaan kata dalam buku tersebut kurang lebih sebagai berikut:
Proses
Map:
·
Membaca tiap baris kalimat di dalam file teks
tersebut.
·
Membaca tiap kata yang ada dalam beris
tersebut dan membuat sebuah map untuk kata tersebut. Key dari map itu adalah
kata tersebut sedangkan value dari map itu adalah 1.
Sampai disini hasil yang
kita dapatkan dari dua langkah diatas adalah daftar map untuk semua kata dari
file teks tersebut dengan value 1. Karena kita tidak menyatukan perhitungan
kata-kata yang sama dalam satu map, maka tersapat map dengan key yang sama. Misal
ada map kata ‘Dan’ => 1 berulang kali.
Proses
Reduce:
·
Melakukan sorting atau pengelompokan map
dengan kata-kata yang sama.
·
Menjumlahkan untuk mencari total dari
kata-kata yang sama tersebut
Sampai disini maka hasilnya
adalah map dengan key yang unik setiap kata berikut dengan jumlah penggunaannya
di buku tersebut.
NoSQL
NoSQL adalah jenis basis
data yang tidak menggunakan perintah SQL dalam memanipulasi (menyimpan maupun
mengambil data) basis data tersebut. Kebanyakan basis data NoSQL digunakan
dalam dunia aplikasi web waktu nyata (real-time web app).
Berbeda dengan basis data
SQL dimana meskipun berbeda-beda pembuat namun cara kerja maupun cara
penggunaannya relatif sama. Contohnya sama-sama menggunakan tabel yang
dihubungkan oleh relasi-relasi, manipulasi data dengan bahasa SQL, dsb. Basis
data NoSQL bisa sangat berbeda satu sama lain. Dilihat dari cara penyimpanan
data saja basis data NoSQL tersebar dari cara penyimpanan:
·
Key-Value based (disimpan dalam bentuk
kunci-isi berpasangan)
·
Document based (disimpan dalam
dokumen-dokumen)
·
Column based (disimpan dalam kolom-kolom)
·
Graph based (disimpan dalam bentuk graf)
Karena dari cara
penyimpanannya saja sudah beda sudah tentu cara penambahan maupun pengambilan
datanya juga berbeda.