Database Scalability, Elasticity, and Autonomy in the Cloud
Beberapa orang akan berpendapat bahwa teknologi penyimpanan data telah memperkaya kehidupan pengguna juga telah menimbulkan beberapa tantangan dan kompleksitas baik dari sudut pandang pengguna maupun dari penyedia layanan atau perspektif sistem. Dari sudut pandang pengguna, pengguna harus menavigasi beberapa platform komputasi dan penyimpanan melalui web untuk menyelesaikan pekerjaan mereka. Singkatnya, tren teknologi saat ini adalah teknologi yang menjadikan internet sebagai pusat pengelolaan data dan aplikasi, di mana pengguna komputer diberikan hak akses baik perseorangan maupun banyak orang (sharing) disebut sebagai cloud.
Tantangannya sekarang adalah untuk mengembangkan platform aplikasi server-centric yang tersedia untuk jumlah pengguna yang hampir tidak terbatas 24×7 melalui internet menggunakan kebanyakan teknologi berbasis web modern. Pengalaman yang diperoleh dalam dekade terakhir dari beberapa pemimpin teknologi yang menyediakan layanan melalui internet (misalnya Google, Amazon, eBay, dll.), menunjukkan bahwa infrastruktur aplikasi dalam konteks cloud harus sangat andal (reliability), tersedia (available), dan memiliki kemampuan skalabilitas (scalability) yang tinggi. Reliabilitas adalah persyaratan utama untuk memastikan akses berkelanjutan ke layanan dan didefinisikan sebagai jaminan bahwa aplikasi atau sistem yang diberikan akan berfungsi ketika diperlukan selama jangka waktu tertentu. Demikian pula, ketersediaan adalah persentase waktu yang diberikan sistem akan berfungsi sesuai kebutuhan. Persyaratan skalabilitas muncul karena fluktuasi beban terjadi dalam konteks layanan berbasis web. Bahkan fluktuasi beban ini terjadi pada berbagai frekuensi: harian, mingguan, dan periode yang lebih lama.
Ada kekhawatiran bahwa DBMS dan RDBMS tidak ramah dengan sistem penyimpanan cloud. Ini karena tidak seperti komponen teknologi lain untuk layanan cloud seperti server web dan server aplikasi, yang dapat dengan mudah menskalakan dari beberapa mesin menjadi ratusan atau bahkan ribuan mesin), DBMS tidak dapat diskalakan dengan sangat mudah. Bahkan, teknologi DBMS saat ini gagal untuk menyediakan alat dan panduan yang memadai jika penyebaran database yang ada perlu skala dari beberapa mesin ke sejumlah besar mesin.
Perbedaan utama adalah bahwa dalam DBMS tradisional, semua data dalam database diperlakukan sebagai “keseluruhan kesatuan data” dan itu adalah tanggung jawab DBMS untuk menjamin konsistensi seluruh data. Dalam konteks penyimpanan key-value, hubungan ini sepenuhnya dipecah menjadi key-value di mana setiap entitas dianggap sebagai unit independen dari data atau informasi dan karenanya dapat dipindahkan secara bebas dari satu mesin ke yang lain. Selanjutnya, atomicity aplikasi dan akses pengguna dijamin hanya pada level single-key. Penyimpanan key-value bersama dengan kerangka kerja komputasi cloud telah bekerja dengan sangat baik dan sejumlah besar aplikasi web telah menggunakan kombinasi teknologi komputasi cloud ini.
Skalabilitas adalah properti yang menunjukkan kemampuan untuk menangani jumlah beban kerja yang semakin berkembang atau kemampuan untuk meningkatkan throughput ketika sumber daya tambahan (biasanya perangkat keras) ditambahkan. Ada dua metode untuk skalabilitas yaitu secara vertikal dan horizontal. Untuk menskalakan secara vertikal (meningkatkan) berarti menambahkan sumber daya ke satu node dalam suatu sistem, biasanya melibatkan penambahan prosesor atau memori ke satu komputer. Untuk skala horizontal (skala keluar) berarti menambahkan lebih banyak node ke sistem, seperti menambahkan komputer baru ke aplikasi perangkat lunak terdistribusi.
Key-value store menyediakan skalabilitas yang hampir tak terbatas di mana setiap entitas dapat (berpotensi) ditangani oleh node independen, persyaratan aplikasi baru muncul yang memerlukan banyak entitas (atau kunci yang setara) untuk diakses secara atom. Berbagai penyimpanan key-value berbeda dalam hal model data, ketersediaan, dan jaminan konsistensi, tetapi properti yang umum untuk semua sistem adalah abstraksi key-value di mana data dilihat sebagai pasangan key-value dan akses skala kecil hanya didukung pada perincian single-key. Semantik akses atom tunggal ini secara alami memungkinkan partisi data horizontal efisien dan menyediakan dasar untuk skalabilitas dan ketersediaan dalam sistem ini. Meskipun mayoritas aplikasi web saat ini memiliki pola akses kunci tunggal, banyak aplikasi saat ini, dan sejumlah besar aplikasi Web 2.0 (seperti yang didasarkan pada kolaborasi) melampaui semantik akses satu tombol dan terjun ke ruang akses multi-key.
Paradigma Big Data yang muncul, karena proliferasi teknologi, telah menarik perhatian banyak solusi manajemen basis data. Karena variasinya, volume dan variasinya, sulit untuk mengumpulkan, mentransfer, dan menyimpan data sambil menjanjikan kinerja yang baik dalam hal skalabilitas. Karena ledakan big data dan kebutuhan untuk skala aplikasi yang sesuai, merancang sistem database scalabel telah melihat serangkaian solusi. Namun penyebaran dan penskalaan aplikasi melalui cloud telah menghadapi banyak tantangan dan untuk mengatasi tantangan ini, solusi yang ada telah mengadopsi berbagai skalabilitas metrik seperti partisi, replikasi, kontrol konkurensi, dan konsistensi. Keputusan desain ini memastikan skalabilitas baca/tulis, load balancing tingkat sistem, ketersediaan dan elastisitas. Karena fitur-fitur penting tertentu seperti kemampuan untuk menskalakan secara horizontal, memiliki skema yang fleksibel, konsistensi santai, ketersediaan tinggi (high availibility), kemampuan untuk menyimpan data dengan cara terdistribusi dan query sederhana, database NoSQL muncul sebagai pilihan yang mungkin untuk penyimpanan big data. Beberapa basis data skalabel utama termasuk Bigtable Google, Dynamo DB Amazon, dan PNUTS milik Yahoo.
- Solusi penyimpanan big data:
- Google Bigtable
Bigtable adalah peta terdistribusi multi-dimensi yang diindeks menggunakan baris dan kunci kolom dan stempel waktu. Setiap nilai dalam bigtable adalah array byte yang tidak diinterpretasi yaitu: (baris: string, kolom: string, timestamp: int64) -> string. Baris dipartisi secara dinamis ke dalam sejumlah rentang baris yang disebut tablet. Tablet berfungsi sebagai dasar untuk load balancing dan partisi. Klien dapat menggunakan konsep ini untuk membentuk kelompok-kelompok lokalitas dan karenanya menghemat waktu untuk secara efektif mencari serangkaian kunci baris. Kunci kolom dikelompokkan bersama untuk membentuk keluarga kolom yang masing-masing mewakili aspek tertentu dari aplikasi. Kunci kolom membentuk dasar untuk kontrol akses di bigtable. Cap waktu memungkinkan penyimpanan beberapa salinan atau versi dari objek yang sama di setiap sel dengan nilai timestamp unik.
- Amazon’s Dynamo DB
Model data Dynamo terdiri dari pasangan kunci-nilai yang disimpan dalam struktur seperti tabel. Setiap baris dalam tabel memiliki banyak kolom. Ini berbeda dari bigtable dalam konteks bahwa ia tidak memiliki keluarga kolom tetapi memiliki pasangan nama-nilai kolom [4]. Dynamo Amazon menerapkan sejenis arsitektur peer-to-peer yaitu semua node simetris dan berbagi kumpulan tanggung jawab yang sama. Dynamo melakukan dua operasi: get (key) dan put (key, context, object), untuk mencari atau menambahkan objek data. Konteks digunakan untuk memverifikasi validitas objek.
- Yahoo’s PNUTS
Tidak seperti Google’s Bigtable, ia memiliki model data relasional yang terdiri dari rekaman dan atribut. Tabel dapat diimplementasikan seperti yang diperintahkan atau didistribusikan dengan hash menyimpan data atau bahkan keduanya. Dalam penyimpanan data yang dipesan, tabel diurutkan berdasarkan kunci primer dan dalam penyimpanan data yang di-hash adalah hash dan kemudian nilai hash itu digunakan untuk mengakses catatan tabel. Predikat atau operasi multi-get digunakan untuk memindai rekaman tertentu. Di kemudian satu set kunci primer dilewatkan ke fungsi dan beberapa catatan kemudian diambil. Ini tidak memiliki fitur batasan referensial. Tabel lebih lanjut dibagi secara horizontal menjadi sekelompok catatan yang disebut tablet yang tersebar di server yang berbeda.
- Google’s BigData
Implementasi Bigtable memiliki tiga komponen utama: satu server master, banyak server tablet dan sebuah perpustakaan yang terhubung ke setiap klien. Server master bertanggung jawab untuk mengalokasikan, menghapus atau mempertahankan beban tablet, dll. Server tablet lebih lanjut menangani permintaan baca/tulis ke tablet yang dimuat di bawahnya dan membagi tablet ke lebih banyak tablet jika peningkatan ukuran melampaui ambang batas. Dengan demikian, skalabilitas dicapai secara otomatis segera setelah ukuran tablet melewati ambang batas. Bigtable menggunakan tiga model hierarki tingkat untuk implementasinya seperti yang ditunjukkan pada. Chubby menyimpan file yang berisi lokasi tablet root. Tablet root di sisi lain berisi lokasi tablet yang berbeda di tabel Metadata. Tablet akar diperlakukan khusus dengan cara yang tidak pernah terpecah. Tablet metadata berisi set tabel pengguna
- Dynamo DB dari Amazon
Salah satu persyaratan desain utama Dynamo adalah skalabilitas inkremental. Untuk mencapai ini, partisi dinamis dilakukan menggunakan hashing konsisten. Rentang output hashing yang diambil sebagai cincin melingkar untuk mencapai replikasi, setiap objek data direplikasi pada N host lain. Selain mereplikasi item data, kunci juga direplikasi pada N-1 searah jarum jam node di cincin. Ini menghindari korban di antara versi melalui rekonsiliasi menggunakan jam vektor. Dynamo menggunakan jam vektor, dari format [node, counter], untuk menentukan korban di antara berbagai versi objek.
- FluteDB: An efficient and scalable in-memory time series database for sensor-cloud
Kepopuleran dari Internet of Things (IoT), wireless sensor network (WSN), Smart City (SC), dan lain sebagainya yang berhubungan dengan internet hotspot membuat banyaknya data time series tergenerate secara terus menerus untuk mengantri dalam hal pemrosesannya. Dengan adanya kepopuleran data time series secara terus menerus berbagai penemuan algoritma mining telah banyak dikembangkan, seperti Real Time Vehicle Traffic (RTVT), Smart Grid (SG). Sebagai dasar beberapa downstream algoritma, cara penyimpanan dan query pada data time series yang efisien serta stabil merupakan fokus perhatian utama dalam servis cloud. Peningkatan permintaan source data dan komputasi realtime pada servis cloud, perangkat multimedia yang tersedia dan interval yang sangat cepat beberapa waktu terakhir ini mengakibatkan perkembangan skala yang sangat cepat pada data time series langsung. Disamping itu, servis yang terpercaya serta ketersediaan jaminan servis time series juga harus dipersiapkan sebaik mungkin untuk mengindari kesalahan dan recovery data yang sangat diperlukan.
Beberapa spesifikasi yang menjadi target dari proyek time series database (TSDB) adalah efisiensi, reliabilitas, dan ketersediaan dari semua sub modul dan sistem didalamnya. Beberapa batasan baku pada TSDB diantaranya:
Write yang mendominasi: kebutuhan primer pada TSDB adalah untuk menjaga servis tetap stabil walaupun dengan rata-rata keadaan write yang sangat tinggi. Karena realita saat ini aplikasi cloud (time series servis) selalu write jutaan permintaan pada tiap detiknya.
Manajemen Query: pada kenyataannya mendapatkan query yang efisien masih sangat sulit pada skala time series data yang sangat besar
Kontrol Sumber Daya: Kualitas hardware (mencakup memory dan disk) adalah indikator yang penting dalam evaluasi penyimpanan cloud. Karena dengan banyaknya logs, teks, dan streaming data akan sangat banyak mengonsumsi banyak ruang penyimpanan,
Reliabilitas dan ketersediaan yang tinggi: apabila kedua indicator ini terpenuhi maka kemampuan servis cloud yang normal dan fault tolerant akan terpenuhi.
FluteDB adalah TSDM terbarukan dimana dapat menjawab segala batasan yang telah dijelaskan sebelumnya, serta menyediakan efisiensi, skalabilitas, dan kestabilan servis cloud. Salah satu ide dibalik fluteDB adalah untuk membuat keseluruhan arsitektur lebih cenderung untuk optimasi operasi write yaitu mengubah performa write saat operasi query maupun penerimaan data yang presisi. Untuk mencapai tujuan tersebut maka fluteDB mengubah pengaturan sruktur indexing, komponen query, optimasi konfigurasi, kompressi data, enkapsulasi data serta penggunaan dari berbagai resource yang berbeda.
- SCADIS: Supporting Reliable Scalability in Redis Replication on Demand
Melalui replikasi, Redis telah memainkan peran utama dalam peningkatan keandalan dan kinerja sistem database NoSQL di samping menerapkan karakteristik tambahan seperti fleksibilitas dan skalabilitas basis data. Namun, sementara Redis memungkinkan replikasi data yang cukup mudah, replikasi menjadi sulit ketika diterapkan ke database bervolume tinggi. Akibatnya, scalling database yang efektif menjadi tugas besar dalam pengembangan dan pemeliharan skala besar. Pendekatan baru, SCADIS, dapat meringankan masalah kritis dalam skalabilitas database. Pendekatan ini menyajikan tiga fitur utama: 1) mengurangi waktu konfigurasi selama proses yang mendukung pada foreground atau background, 2) kemampuan master node failover otomatis, dan 3) layanan High Availability (ketersediaan tinggi) untuk monitoring cluster Redis.
Scadis dijalankan dengan Zookeeper dan ditulis dengan bahasa pemrograman Java. SCADIS dirancang ke dalam dua bagian. Salah satu bagiannya adalah Daemon Server, yang mengeksekusi background untuk memantau database cluster. Selain untuk pemantauan, Daemon Server juga menyediakan layanan pemberitahuan untuk program klien. Bagian kedua adalah client stub dimana penulis menyediakan/menyesuaikan kode berdasarkan requirement yang berbeda. Arsitektur Scadis terdiri dari 3 modul:
- Modul Konfigurasi. Modul ini menawarkan waktu konfigurasi ulang paling sedikit yang juga mendukung proses background dan foreground ketika slave node sedang dijalankan ataupun tidak.
- Modul Failover Otomatis. Modul ini menyediakan cluster database yang handal melalui manipulasi master node dan slave node dengan gangguan seminimal mungkin. Jika pada master node mengalami kegagalan, maka slave node secara otomatis menggantikan master node tersebut. Setelah master node tadi sudah pulih, ia akan secara otomatis diturunkan menjadi slave node.
- Modul Monitoring HA (High Availability). Modul ini sangat berkaitan dengan layanan Zookeeper. Karena properti koordinasi (the coordination property) dalam Zookeeper, Modul Monitoring HA menjadi dapat diprogram dan dikelola untuk memantau metadata, status server, dan beban kerja semua node dalam Scadis.
Note:
* Konsep failover menggambarkan apabila suatu node down maka node yang lainnya akan mengambil alih tugas node yang down tersebut. Dalam infrastruktur high availability cluster yang hanya terdiri dari dua node, hal ini dapat diistilahkan sebagai hubungan antara master (primary) dan slave (secondary). Jika pada master node mengalami kegagalan, maka slave node yang akan bertugas menggantikan tugas dari master node tersebut.
Referensi:
Agrawal D., Abbadi A., Das S., Elmore A., 2011, Database Scalability, Elasticity, and Autonomy in the Cloud. University of California Santa Barbara. Santa Barbara.
Kaur P., Sharma., 2015, Scalable Database Management in Cloud Computing, International Conference on Eco-friendly Computing and Communication System.
Li Z., Kimm H., Kimm H., 2017, SCADIS: Supporting Reliable Scalability in Redis Replication on Demand, 2017, IEEE International Conference on Smart Cloud.
Li C., Li B., Bhuiyan M., Wang L., Si J., Wei., Li J., 2018, FluteDB: An Efficient and Scalable In-memory Series Database for Sensor-cloud, J. Parallel Distrib. Comput, 122(2018) 95-108.
Comments :