2012-11-07

Mencoba JSON dan SERIALIZE

serialize atau json tampaknya menjadi jawaban atas penulisan data yang banyak tetapi fieldnya dinamis. Dinamis disini mungkin membingungkan, tapi ku analogikan kita mengerjakan program rumah sakit atau tepatnya rekam medis. Di dalam rekam medis kita mendapat field umum seperti nama, tanggal lahir, kelamin, kondisi tubuh dan kapan dia berkunjung. Sejalan dengan waktu, rekam medis lalu berkembang dan menambahkan field seperti field kondisi badan, tinggi tubuh dan lain-lain yang membuat anda harus menambahkan field untuk itu.
Bila menambahkan 1-2 mungkin bisa, tetapi bagaimana kalau menambahkan 10! bisa-bisa logicnya harus di ubah semua bahkan  lebih!! hingga harus mengubah fondasi dari program kamu sendiri. Tentu ini bukan cara yang terbaik.



Pada awalnya saya memakai konsep yang saya namakan 3 table berhubungan, dimana ada table yang berfungsi sebagai table

  • utama yang berisi data master yang tidak berubah. Biasanya saya hanya mengisi nama, kapan di input dan status (kalau 0 berarti data di hapus)
  • variabel. Yang berfungsi sebagai nama variable
  • data. yang berfungsi sebagai data bawaan dari utama, disambung ke variable. Jadi datanya diletakkan di table ini. Isi dari table ini hanya 3 yaitu: id_utama, id_variable, nilai data
Keuntungan dari konsep ini adalah data lebih terstruktur, edit hanya pada variabel yang sudah di edit. Bahkan ukuran data tidak besar karena data yang disimpan hanya sebagian saja, sehingga ukurannya lebih kecil. Namun kekurangannya adalah diperlukan logic yang cukup memusingkan agar hasilnya sesuai yang di inginkan.

Tapi konsep di atas saya tidak jelaskan disini. Karena saya ingin lebih memahami JSON dan SERIALIZE!! jadi konsep dasar dari json dan Serialize adalah bagaimana sebuah array digabung jadi 1 lalu bisa diparse menjadi sebuah text.

Untuk ujicoba saya akan memakai array dari $_SERVER. Saya coba memakai json dan serilize dan hasilnya
panjang karakter serialize= 2006
panjang karakter json=1714
kalau kita bayangkan dalam program kita ada arraynya banyak, kita pasti akan memilih JSON. Tetapi bagaimana dengan kecepatannya? Untuk kecepatannya saya akan menguji dengan data yang banyak!! tepatnya saya akan membuat array dengan jumlah 950.000 data. 
start serialize 11:09:11.000000
end serialize 11:09:12.000000
star json_encode 11:10:34.000000
end json_encode 11:10:34.000000
panjang serialize=20723805
json=8471561

Kalau melihat sekilas serialize tampaknya lebih lambat dan juga ukurannya lebih besar!! walaupun hanya berbeda beberapa mili detik!? tapi disini kita mendapat info bahwa proses pembuatannya butuh waktu lebih lama dari serialize dibandingkan json. Tapi bagaimana proses decodenya.
star json_decode 11:16:28.000000
end json_decode 11:16:29.000000
start unserialize 11:16:29.000000
end unserialize 11:16:34.000000
ternyata sama saja. Tetapi untuk info, proses decode json membutuhkan memori lebih besar daripada unserialize. Jadi kembali ke anda, memakai json yang memiliki kemampuan:
  • Proses encode lebih cepat
  • Proses decode lebih cepat
  • proses decode butuh memori yang besar
atau Serialize yang memiliki kemampuan
  • proses encode lebih lambat tapi tidak terlalu terlihat
  • proses decode lebih lambat
  • ukuran hasilnya besar
  • proses decode tidak butuh memori besar
bagaimana untuk penyimpanannya? sebenarnya saya menyarankan memakai text, tetapi text ada bagusnya memiliki ukuran dibawah 800kb atau kita cut 800.000 tetapi pilihan lain adalah blob! Namun perhatikan pemakaian blobnya. untuk manajemen database, saya tidak akan bahas lebih lanjut.

Tidak ada komentar: