Komunitas Cloud Indonesia

Partitioning pada Table Storage Windows Azure

Penulis :   |   August 29, 2012

Pada saat melakukan penyimpanan data dalam bentuk Table storage, anda mungkin akan berhadapan dengan ukuran data yang luar biasa besar, dan pada satu titik dapat mempengaruhi performa dari pengakses data pada aplikasi Windows Azure anda. Salah satu fitur pada Windows Azure yang memungkinkan kita untuk mengatasi hal tersebut adalah partitioning. Sebelum kita melangkah lebih jauh mengenai partitioning pada table storage Azure, perlu kita ketahui bahwa table storage Windows Azure bukanlah relational database seperti yang biasa kita gunakan untuk melakukan penyimpanan data. Untuk mendapatkan informasi mengenai table storage di Windows Azure silakan membaca artikel saya yang berjudul Table Storage Windows Azure dan Implementasinya.

Konsep dari partitioning pada table storage ini adalah melakukan partisi bagian-bagian tertentu dari tabel, sehingga ukuran table menjadi lebih kecil dan pada akhirnya berakibat pada naiknya performa pengaksesan data. Dalam satu buah akun windows Azure, kita dapat memiliki beberapa storage node berbentuk table, sehingga hasil dari partisi tabel tersebut dapat kita pindahkan ke storage node yang baru. Namun, kita harus memastikan bahwa kumpulan data tertentu dapat tetap bersama dalam satu buah storage node, sehingga muncul pertanyaan : bagaimanakah cara kita menentukan pembagian/partisi dari satu buah tabel tersebut? Jawaban dari pertanyaan tersebut adalah dengan sebuah properti partition key yang sudah kita define sebelumnya dalam sebuah table storage. Konsep dari proses partisi dari sebuah table storage dapat kita lihat pada gambar di bawah ini :


Pada ilustrasi di atas terlihat bahwa kita melakukan partisi berdasarkan sebuah partition key yang ditentukan oleh field document name. Dengan adanya partition key tersebut, kita dapat memastikan bahwa entity/row data dengan document name yang sama akan terkumpul menjadi satu sehingga dapat kita simpan pada storage node yang terpisah.

Dengan adanya fitur partitioning table tersebut, maka akibat yang muncul adalah :

1. Menjaga skalabilitas table

Dengan adanya partitioning, maka jumlah data yang berukuran besar dalam satu buah storage node dapat didistribusikan menjadi beberapa table dengan ukuran yang lebih kecil. Pada saat banyak akses data menuju tabel yang sudah dipartisi, maka secara otomatis traffic tersebut akan terbagi kepada setiap partisi dari tabel. Proses ini dapat dijelaskan dengan analogi pengambilan karcis pada sebuah loket, dimana pada saat banyak orang ingin mengambil karcis dari sebuah loket tentu antrian dari loket tersebut akan sangat tinggi, sehingga solusinya adalah dengan membuat loket-loket lainnya untuk menyeimbangkan traffic.

2. Entity Group Transactions

Untuk setiap entity yang berada pada table dan partisi yang sama, sebuah aplikasi dapat melakukan transaksi yang melibatkan entity tersebut. Hal ini memungkinkan aplikasi untuk melakukan proses CRUD (Create, Update, Delete) secara atomik untuk setiap entity, selama entity-entity tersebut berada pada table dan partisi yang sama.

3. Entity Locality

Dengan menempatkan beberapa entity pada suatu partisi yang sama, hal tersebut dapat memungkinkan kita untuk melakukan proses query (querying) dalam partisi tersebut. Dengan adanya data locality (penempatan data yang serupa pada suatu area) tersebut, maka proses caching dari data dapat lebih efisien sehingga secara tidak langsung performa dari aplikasi kita dapat meningkat.

 

 

Konsep, pembahasan, dan ilustrasi mengenai partitioning ini saya ambil dari artikel berjudul Windows Azure Table Storage White Paper yang dikarang oleh Haridas, Nilakantan, dan Calder (2009). Artikel tersebut mendeskripsikan best practice yang perlu kita lakukan demi menjaga efektifitas dan efisiensi aplikasi Windows Azure yang kita kembangkan.

  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 yang saat ini bekerja sebagai mahasiswa pascasarjana di NUS Singapura. Dapat dihubungi via email ke [email protected] Silakan mengunjungi http://enricobudianto.wordpress.com/ untuk melihat hasil-hasil tulisan yang pernah dibuat.

Komentar

Leave a Reply

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