Kekurangan dan Keterbatasan Teknologi Big Data, terkait Partisi

Posted by

Tekhnologi big data adalah solusi untuk beberapa masalah yang membutuhkan distributed system baik untuk kebutuhan storage atau komputasi karena suatu masalah sudah tidak lagi dapat diselesaikan dalamsatu mesin (single node/ host) dan kemampuan mesin sudah tidak dapat lagi di tingkatkan (scale up).Salah satu fitur utama dari tools atau framework big data adalah partisi, yang dapat menjawab permasalahan tersebut [1]. Namun hal tersebut bukan merupakan solusi untuk semua masalah. Partisi sendiri memiliki beberapa keterbatasan yang cukup mengikat (strict) sehingga tidak semua model data atau permasalahan komputasi bisa diselesaikan dengan teknologi big data.

Struktur Data Tidak Fleksibel

Masalah utama dari partisi adalah struktur data yang tidak fleksibel. Struktur data yang kita operasikan pada teknologi big data pada umumnya sangat merepresentasikan efektifitas dan efisiensi pemrosesan yang nantinya kita lakukan. Untuk mempermudah penjelasan masalah coba kita simplifikasi menggunakan analogi dan contoh sederhana, asumsikan kita memiliki data transaksi user dari sebuah e-commerce fiktif dengan struktur data sebagai berikut yang telah tersimpan pada sebuah big data storage.

/user-transaction-dir
  ...
  /user-agus
    ...
    /date-2016-09-19
      /. transaction-1
      /. transaction-2
      /. transaction-3
      ...
    /date-2016-09-20
      /. transaction-1
      /. transaction-2
      /. transaction-3
      ...
    /date-2016-09-21
      /. transaction-1
      /. transaction-2
      /. transaction-3
      ...
    ...
  /user-imron
    ...
    /date-2016-09-19
      /. transaction-1
      /. transaction-2
      /. transaction-3
      ...
    ...
  /user-bayu
    ...
    /date-2016-09-19
      /. transaction-1
      /. transaction-2
      /. transaction-3
      ...
    ...
  ...

Dari contoh tersebut, kita akan dapat dengan mudah mencari suatu hal apabila partisi telah diketahui, misal:

  1. “Berapa jumlah pembelian Pak Imron pada tanggal 2016–09–19?”
    Kita dapat melakukan agregasi penjumlahan langsung menuju partisi “/user-transaction-dir/user-imron/date-2016–09–19”.
  2. “Berapa kali Pak Bayu telah berbelanja di toko kita?”
    Kita dapat melihat pada partisi “/user-transaction-dir/user-bayu” dan melakukan perhitungan jumlah transaksi yang telah dilakukan. Hal ini bisa jadi membutuhkan sumber daya (resource) yang tinggi apabila Pak Bayu telah melakukan transaksi sejak lama dan banyak sehingga partisi dan data didalamnya cukup besar, tapi masih memungkinkan untuk dilakukan.

Namun untuk beberapa contoh kasus berikut, struktur data diatas tidak lagi relevan:

  1. “Pada tanggal 2016–09–19 ada berapa user yang melakukan transaksi?”
  2. “Berapa total transaksi yang jumlahnya diatas satu juta rupiah?”

Dua contoh diatas mengharuskan kita harus melacak semua partisi, yang berarti kita melakukan full scan table(terminologi HBase/ Cassandra), karena kita tidak mengetahui partisi utama dari suatu data. Hal tersebut tidak reliable dilakukan karena mindset awal pemanfaatan teknologi big data, data kita berjumlah sangat banyak, ratusan terabyte, petabyte, bahkan tak terbatas. Sehingga melakukan full scan table jelas tidak masuk akal dilakukan. Bisa membutuhkan berjam-jam, bahkan berbulan-bulan hanya untuk melakukan satu operasi sederhana. Itu adalah salah satu contoh keterbatasan teknologi big data terkait fitur atau prinsip partisi data, yaitu struktur data sangat erat mempengaruhi efektifitas dan efisiensi suatu operasi, baik pencarian, penyimpanan, maupun komputasi, bergantung dari teknologi yang kita pakai.

Pembengkakan Konsumsi Penyimpanan

Solusi untuk permasalahan struktur data yang telah dijelaskan diatas salah satunya adalah dengan menggunakan struktur data sekunder atau spesifik sesuai dengan kebutuhan.

Contoh, anggap lah struktur data yang telah dicontohkan diatas merupakan struktur untuk memenuhi kebutuhan terkait transaksi oleh pelanggan (user transaction), kita dapat membuat struktur baru untuk memenuhi kebutuhan terkait rentang waktu (time based transaction) untuk menjawab pertanyaan nomor 1 sebagai berikut.

/time-transaction-dir
  ...
  /year-2016
    ...
    /month-09
      ...
      /date-19
      /. transaction-1
      /. transaction-2
      /. transaction-3
      ...
    ...
  ...

Sedangkan untuk menjawab pertanyaan nomor 2, dapat dibuat struktur data berikut.

/amount-transaction-dir
  /amount-0-1000000
    /. transaction-1
    /. transaction-2
    /. transaction-3
  /amount-1000001-2000000
    /. transaction-1
    /. transaction-2
    /. transaction-3
  ...

Dari dua struktur data tambahan tersebut otomatis data yang perlu disimpan akan berlipat semakin banyak setidaknya 3x dari awal. Pada suatu kasus ada kalanya pembengkakan konsumsi penyimpanan data tidak dapat lagi terelakkan, khususnya untuk teknologi big data yang menawarkan solusi penyimpanan seperti HDFS, HBase, Cassandra. Walaupun hal tersebut dapat dilakukan dengan pendekatan lain, tanpa perlu menduplikasi data mentah (raw data) dengan cara melakukan pre komputasi, tentunya dengan kekurangan dan kelebihan lain yang berbeda (diluar topik tulisan ini).

Proses Komputasi Tidak Efisien

Hal ini khususnya untuk teknologi big data yang menawarkan distributed computation seperti Hadoop MapReduce dan Apache Spark. Asumsikan kita melakukan suatu proses dengan pendekatan berbeda pada jumlah data yang sama dengan struktur partisi yang dapat ditukar, misal pada contoh diatas yang awalnya “/user/date/” menjadi “/date/user”.

  • Semakin banyak partisi berarti semakin banyak proses yang mengantri, hal ini dapat mengakibatkan bottle neck, apabila jumlah node yang kita assign terlalu sedikit, hal ini akan menjadi advantages kalau kita memang memiliki jumlah node yang banyak.
  • Begitu pula sebaliknya apabila semakin sedikit partisi, yang berarti jumlah data akan semakin banyak dalam satu partisi, maka jumlah antrian job akan semakin sedikit, namun dalam satu proses akan memakan sumber daya yang lebih banyak (lebih lama), hal ini cocok apabila node yang kita assign berjumlah sedikit atau kapasitas komputasi (RAM dan core) dalam satu node tinggi.

Kesimpulan

Partisi memang merupakan fitur dasar dan utama dalam teknologi big data terkait lokasi fisik dimana proses dilakukan atau data disimpan. Hal tersebut merupakan solusi dari beberapa masalah skalabilitas sehingga kita dapat memberi solusi secara scale out. Namun partisi sendiri juga memiliki beberapa keterbatasan dan keterikatan yang perlu dipertimbangkan, karena struktur data yang merepresentasikan partisi sangat mempengaruhi efektifitas dan efisiensi dari suatu operasi pada teknologi big data baik penyimpanan, komputasi, dan pengolahan lain. Bisa jadi besarnya biaya investasi yang telah kita keluarkan untuk teknologi big data tidak memberikan dampak apapun kalau desain struktur data kita tidak tepat.

Leave a Reply

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