0
0
0
share
#nodejs#ibm#nosql#Bluemix
0 Komentar
Belajar Menggunakan Layanan IBM Bluemix Cloudant NoSQL
Cloudant adalah layanan database yang fully-managed dan dapat diperluas secara global, berjalan tanpa henti serta menangani berbagai skema secara fleksibel dengan pengembangan yang cepat. Anda tinggal mengirimkan request HTTP dengan menggunakan payload JSON, misalnya PUT JSON in
dan GET JSON out
. Layanan ini terintegrasi dengan Indexing Engines untuk Lucene full-text search dan Geospatial querying. Menarik, bukan?
Cloudant dibangun dengan Apache CouchDB™ dan berkontribusi dengan proyek open-source. Namun, kenapa Cloudant/CouchDB menjadi pilihan pertama? Sederhana, karena fitur replikasi dan sinkronisasinya.
Berbeda dengan sistem database tradisional, semua replikasi tersedia untuk operasi baca dan tulis. Kemampuan Cloundant CouchDB dalam melakukan replikasi dan sinkronisasi, cocok untuk pengembangan aplikasi mobile maupun web, tentunya dengan desain dan prinsip offline-first. Dengan kata lain akses data pada device atau browser dapat dilakukan dengan sinkronisasi dalam penyalinan data secara jarak jauh melalui teknologi Cloud, dan sebaliknya.
Drivers dan Querying
Tidak ada binary drivers yang diperlukan untuk Cloudant, Anda tinggal mengakses layanan melalui HTTP/S saja. Adapun library yang digunakan dapat Anda dilihat disini.
Querying dalam Cloudant bekerja dengan cara yang berbeda dengan database relasional lainnya. Index yang harus ada sebelum Anda menjalankan query. Untuk pengguna baru, jangan khawatir. Banyak tutorial yang berkaitan dengan Cloudant, Anda bisa membaca dokumentasinya.
Tahap 1: Daftar Akun Bluemix
Jika anda belum memiliki akun, silahkan daftar melalui website resmi IBM Bluemix. Pilih Start Free in Bluemix dan isi form yang tersedia.
Periksa inbox email anda untuk verifikasi akun.
Tahap 2: Login ke IBM Bluemix
Kunjungi halaman Login IBM Bluemix, kemudian masukan identitas akun anda.
Anda akan diarahkan ke halaman dasbor IBM Bluemix. Pilih Create Application.
Anda akan diarahkan pada halaman katalog IBM Bluemix.
Pada tutorial ini, akan dibahas seputar penggunaan Cloudant dengan NodeJS. Pilih NodeJS pada katalog tersebut.
Isilah App name dan Host name sesuai keinginan Anda. Pilih Create.
Anda akan diarahkan ke halaman rincian Aplikasi Anda.
Anda bisa melihat aplikasi yang telah Anda buat pada halaman https://{{ Nama Aplikasi Anda}}.mybluemix.net/
, misal https://salando.mybluemix.net/.
Tahap 3: Menggunakan Layanan IBM Bluemix Cloudant NoSQL
Tahap selanjutnya ialah menggunakan layanan Cloudant NoSQL melalui command line Cloud Foundry Apps. Anda bisa mengunduhnya di https://github.com/cloudfoundry/cli/releases.
Apabila Cloud Foundry CLI sudah terpasang, Anda bisa memeriksanya dengan mengetikan cf
pada terminal.
Silahkan login dengan menggunakan perintah dibawah ini:
$ cf login https://api.ng.bluemix.net
Masukan email dan* password* Anda.
Langkah selanjutnya adalah membuat layanan Cloudant NoSQL menggunakan perintah dibawah ini:
$ cf create-service cloudantNoSQLDB Lite salandodb
Hubungkan aplikasi Anda dengan layanan Cloudant NoSQL menggunakan perintah dibawah ini:
$ cf bs `Nama Aplikasi Anda` `Nama Database Cloudant Anda` $ cf bs salando salandodb
Sesuaikan Env Variable agar aplikasi Anda berjalan dengan baik.
$ cf restage salando
Agar lebih mudah memahami penggunaan layanan Cloudant, silahkan unduh sampel aplikasi CRUD (Create Read Update Delete) dengan menggunakan perintah dibawah ini:
$ git clone https://github.com/IBM-Bluemix/nodejs-cloudantdb-crud-example.git
Salin sampel aplikasi tersebut sesuai dengan nama Aplikasi Anda.
$ cp odejs-cloudantdb-crud-example salando -r
Masuk ke folder aplikasi sampel tersebut dan modifikasi berkas manifest.yml
.
declared-services: cloudant-nodejs: label: cloudantNoSQLDB plan: Shared applications: - path: . memory: 256M instances: 1 domain: mybluemix.net name: salando host: salando disk_quota: 1024M services: - salandodb
Apabila sudah selesai memodifikasi berkas manifest.yml
, Anda bisa mengunggahnya dengan perintah dibawah ini.
$ cf push salando
Setelah prosesnya selesai, Anda bisa melihat aplikasi sampel CRUD tersebut melalui tautan sebelumnya,
Anda bisa melihat aplikasi sampel CRUD tersebut pada halaman https://{{ Nama Aplikasi Anda}}.mybluemix.net/
, misal https://salando.mybluemix.net/.
Anda bisa mencoba satu per satu operasi CRUD pada aplikasi tersebut. Misal penambahan data (Create). Pilih Create Name, Isi, dan Add Name.
Pilih Read Names, Anda dapat melihat hasilnya.
Sekarang coba, operasi Update. Pilih Update Names. Jangan lupa muat ulang halamannya ya.
Ganti ANDY
menjadi MILA
. Pilih Update Name.
Sekarang muat ulang halaman, pilih Read Names dan Anda bisa melihat perubahannya.
Sekarang pilih Delete Name, kemudian hapus data tersebut.
Sekarang muat ulang halaman, dan pilih Read Names. Anda bisa melihat perubahannya.
Tahap 4: Memahami Penggunaan Layanan Cloudant dalam Aplikasi NodeJS
Pada tahap sebelumnya, Anda telah menggunakan Cloudant NoSQL dan NodeJS. Pada tahap selanjutnya adalah memahami bagaimana layanan tersebut dapat bekerja. Silahkan buka, berkas index.html
pada path {Nama Aplikasi Anda}/public/index.html
.
Ketika Anda memilih button Create Name
, fungsi Javascript show_new_name_form()
yang dipanggil adalah menampilkan form penambahan nama.
<div class="col-sm-3 operations_options"> <button class="btn btn-success crud" type="button" onclick="show_new_name_form()"> Create Name </button> </div>
Setelah Anda mengisi nama baru, dan memilih button Create Name maka fungsi NodeJS yang dipanggil adalah /add_name
. Lihat berkas {Nama Aplikasi Anda}/public/js/name_actions.js
.
... $("#add_name_button").click(function(e){ e.preventDefault(); //In 'data' parameter, send new name to be added to 'url', to be received by back end for further processing $.ajax({ url: "/add_name", type: "GET", dataType: "json", data:{new_name: $("#newname").val()}, contentType: "application/json", cache: true, timeout: 5000, complete: function() { //called when complete console.log('process complete'); }, success: function(data) { ...
Pada kode diatas Anda dapat melihat request AJAX yang menggunakan method GET dengan tipe payload JSON. Secara kasar, ketika Anda memanggil fungsi /add_name
, aplikasi tersebut menyimpan nama baru ke dalam JSON sebagai payload request AJAX.
... data: {new_name: $("#newname").val()} ...
Request AJAX tersebut berjalan dengan mengirimkan query melalui berkas app.js
.
... app.get('/add_name',function(req, res){ //to add a city into the database console.log("Name to be added : = " + req.query.new_name); req.query.new_name = req.query.new_name.toUpperCase(); //convert to uppercase and trim white space before inserting req.query.new_name = req.query.new_name.trim(); //Search through the DB completely to check for duplicate name, before adding a new name var url = cloudant_url + "/names_database/_design/names_database/_view/names_database"; var name_present = 0; //flag variable for checking if name is already present before inserting var name_string; //variable to store update for front end. //In this case, check if the ID is already present, else, insert a new document request({ url: url, json: true }, function (error, response, body) { if (!error && response.statusCode === 200) { //Check if current input is present in the table, else add. If present then return with error message var user_data = body.rows; console.log("length of table: " + user_data.length); var loop_len = user_data.length; for(var i=0; i< loop_len; i++) { var doc = user_data[i]; console.log("in Db : " + doc.value[1]); if(req.query.new_name === doc.value[1]) { name_present = 1; break; } } if(name_present === 0) //if city is not already in the list { db.insert(req.query, function(err, data){ if (!err) { console.log("Added new name"); name_string="{\"added\":\"Yes\"}"; res.contentType('application/json'); //res.contentType and res.send is added inside every block as code returns immediately res.send(JSON.parse(name_string)); } else { console.log("Error inserting into DB " + err); name_string="{\"added\":\"DB insert error\"}"; res.contentType('application/json'); res.send(JSON.parse(name_string)); } }); } else { console.log("Name is already present"); name_string="{\"added\":\"No\"}"; res.contentType('application/json'); res.send(JSON.parse(name_string)); } } else { console.log("No data from URL. Response : " + response.statusCode); name_string="{\"added\":\"DB read error\"}"; res.contentType('application/json'); res.send(JSON.parse(name_string)); } }); }); ...
Secara sederhana data tersebut disimpan dengan menggunakan kode dibawah ini:
... db.insert(req.query, function(err, data){ if (!err) { console.log("Added new name"); name_string="{\"added\":\"Yes\"}"; res.contentType('application/json'); //res.contentType and res.send is added inside every block as code returns immediately res.send(JSON.parse(name_string)); } ...
Nah, untuk operasi Read, Update dan Delete bisa Anda jelajahi sendiri dengan alur yang sama pada operasi Create.
Dan buat kamu yang ingin belajar dan mengenal lebih banyak tentang Bluemix, kamu bisa mengikuti Akademi Dicoding Belajar Membangun Aplikasi Android dengan IBM Bluemix atau bisa juga melalui tutorial-tutorial di Dirakit. Semoga bermanfaat. Selamat belajar.
Referensi
[1] https://developer.ibm.com/clouddataservices/docs/cloudant/
[2] https://developer.ibm.com/clouddataservices/docs/cloudant/get-started/
[3] https://developer.ibm.com/clouddataservices/docs/cloudant/get-started/connect-to-bluemix/
[4] https://github.com/IBM-Bluemix/nodejs-cloudantdb-crud-example
0
0
0
share