October 29, 2016 thumb Membuat Download Excel Tanpa Membebani Server Part 1

format excel untuk sebuah laporan sampai detik ini masih diperlukan, terutama sekali untuk sebuah sistem informasi berbasis web. fitur download laporan berupa excel masih sangat diperlukan karena akan digunakan untuk berbagai keperluan, seperti laporan pajak, laporan keluar melalui email. dll.

salah satu tool untuk membuat download excel di web adalah phpexcel. seperti tulisan saya yang sebelumnya tentang download excel, tool ini menjadi andalan bagi para programmer karena memiliki kemampuan yang cukup handal dalam membuat sebuah laporan berbentuk excel.

tetapi tool sehebat apapun phpexcel kalau tidak didukung oleh kemampuan yang baik dari programmer yang memakainya, tentu akan bermasalah, terutama masalah big data. artikel pembuatan file excel yang saya tulis di blog ini sebelumnya, rata-rata menggunakan data yang jumlahnya sangat sedikit. lalu bagaimana jika jumlah datanya sangat besar, misalnya data penduduk seluruh indonesia atau nama desa di seluruh indonesia dilengkapi dengan nama kecamatan, kabupaten , provinsi dan lain sebagainya. tentu jika tidak diimbangi kemampuan programming yang handal maka hasilnya tidak akan optimal. malah sebaliknya, akan membuat server menjadi sangat lambat dan pada akhirnya akan membuat server down.

nah pada tulisan kali ini saya akan membahas bagaimana caranya membuat supaya proses pembuatan excel tidak mengakibatkan server down. sekali lagi tutorial ini saya tulis berdasarkan pengalaman saya, jadi entah sesuai entah tidak. karena memang ini pengalaman pribadi saya di lapangan selama hampir 10 tahun bekerja di dunia IT (sejak SMA, sampai Kuliah, Menikah dan jadi Bapak-bapak 😀 ) dan ketika saya terapkan berhasil mengatasi masalah di lapangan mengenai Big Data.

contoh-contoh yang saya tulisa sebelumnya rata-rata menggunakan metode “On The Fly Creation” yang artinya saat dipangil langsung dibuat dan langsung dihapus, tentu hal ini menjadi tidak efisien ketika pembuatan file excel tersebut ternyata sering digunakan, resource untuk pembuatan file excel tersebut sangat besar. maka cache adalah solusinya,

sementara ini saya bahas teorinya dulu, contohnya codingnya saya bahas ditulisan berikutnya. nggak muat kalau disini. adapun solusi ini saya bagi menjadi 4, sengaja saya kasih nama solusi tersebut untuk memudahkan penjelasan (dan biar kelihatan keren hehehe…) antara lain “DML Caching“, “Flag Synchronize Caching“, “Temporary File Caching” dan “Scheduled Caching”  berikut ini penjelasanya.

  • DML Caching , metode ini biasa saya pakai untuk data-data yang jarang berubah tetapi sering di minta untuk dibuatkan excel-nya. seperti data penduduk (kan tanggal lahir, nama, alamat, status marital , sangat jarang berubah, kalaupun berubah paling juga beberapa tahun sekali), data nasabah, dll. intinya kebanyakan data master adalah data yang jarang berubah. tapi sering diminta untuk dibuatkan excel-nya. metode melakukan caching file excel saat terjadinya proses DML (Data Manipulation Languageinsert, update dan delete. selain melakukan DML pada table MySQL, saat itu juga, saya melakukan DML pada row-row yang ada di excel. sehingga file excel di-create ketika terjadi perubahan. dan waktu di download file excel sudah tersedia. ketika saya meng-insert sebuah row di table, saya pun akan meng-insert sebuah row di excel. ketika saya mengupdate sebuah row di excel saya pun akan meng-update sebuah row di excel. ini seolah-olah saya memiliki dua database pada table penduduk, yang pertama di mysql dan yang kedua di excel. kelemahan dari metode ini adalah akan menjadikan proses DML sangat lambat, oleh karena itu cocok digunakan pada data yang jarang berubah seperti data master barang, master karyawan dan lain-lain.
  • Flag Synchronize Caching , cara ini dipakai untuk mengatasi kelemahan yang ada di DML Caching, yakni untuk data yang sering berubah tetapi juga sering di download. Data – data yang sering berubah dan sekaligus sering di akses adalah data-data yang sifatnya transaksi. seperti data transaksi stok, data transaksi keuangan, data transaksi perbankan. cirinya data yang mengandung foregin key adalah data transaksi. cara kerja dari metode ini adalah dengan menggunakan sebuah penanda dalam kolom table, jadi kita harus menambahkan sebauh kolom di table taruhlah namanya “flag” yang bentuknya int. ketika kita menginsert data baru, taruhlah kita kasih kode 1 pada “flag” yang berarti data itu adalah data baru. ketika kita meng-update sebuah data maka bagian “flag” kita beri tanda 2. dan ketika menghapus sebuah data kita beri tanda 3. khusus ketika kita menghapus kita tidak benar – benar menghapus data. cukup diberi kode 3 (sehingga pada bagian query view data tersebut maka harus dipilah untuk data yang ber-kode 3 tidak diperhitungkan atau di sembunyikan ). ketika ada yang ingin membuat file excel, maka di query seluruh kode “Flag” yang bukan 0 akan di Synchronize degan table di Excel, ketika selesai dibuat excel-nya, maka semua flag harus di 0 kan sebagai penanda bahwa data itu telah di syncuser pertama yang men-download akan sangat lama, karena pada saat itu data belum si Synchronize sama sekali. tetapi user berikutnya yang men-download akan jauh lebih ringan karena data yang diubah cuma tinggal beberapa, tidak mengulang dari awal. kelemahan metode ini yakni kita harus menambah satu buah data flag dan juga harus dipilah data mana yang sudah terhapus tetapi belum di sync, sehingga untuk sistem yang sudah ada , butuh merubah banyak query. jika kebetulan program belum dibuat, maka sebaiknya sejak awal sebaiknya di design untuk menggunakan metode ini.
  • Temporary File Caching, metode ini digunakan utnuk menutupi kekurangan pada metode sebelumnya. daripada harus merubah query yang sangat banyak, atau memilah data mana yang update data mana yang delete dan data mana yang hidden. cukup kita menggunakan file atau table lain yang khusus untuk menyimpan data perubahan table transaksi. jadi perubahan data yang ada pada table yang ingin kita excel-kan  kita catat ID mana saja yang berubah, ID mana saja yang dihapus dan ID mana saja yang ditambahkan. sehingga ketika file excel di buat sinkronisasi data file perubahan tersebut. ketika selesai, file tersebut dikosongi. kelemahan dari metode ini adalah, jika kebetulan data berubah lama sekali gak di download. maka pada saat ada user pertama yang men-download, akan sangat lama sekali, karena kebetulan banyak data yang harus di Sync.
  • Scheduled Caching, metode ini menggabungkan metode sebelumnya dengan Scheculed Event.  cocok untuk data yang sering berubah, tapi di-download cuma pada waktu tertentu, seperti laporan bulanan, hanya pada akhir bulan saja banyak orang download. dariapda melakukan Sync seluruh data pada waktu pertama di downlaod di akhir bulan. akan lebih baik dibuat jadwal bahwa setiap sekian menit. system secara otomatis melakukan sync data. tekniknya sama dengan Temporary File Caching setiap perubahan akan di simpan di file tertentu, dan setiap jam. sebuah daemon atau thread akan mengecek file tersebut, ketika ada data yang perlu di Sync maka segera Thread tersebut melakukan Sync.  sehingga user hanya tinggal download satu file yang sudah selalu Sync. karena dijalankan oleh thread lain, maka tidak akan mengganggu DML yang dilakukan sekaligus user yang men-download tidak perlu menunggu lama karena langsung download. kelemahan metode ini cuma satu, yakni kadang system belum selesai sync user sudah download, tapi hal ini jarang terjadi. biasanya saya akali dengan cara sebelum user mendonwload akan saya cek apakah data telah tersinkronisasi semua, kalau belum saya akan tampilan pesan ke user bahwa data belum tersinkronisasi semua, mohon tunggu sejenak.

oke itulah metode yang biasa saya pakai, untuk mengerjakan proyek data besar, saya kebetulan membuat software untuk beberapa rumah sakit yang datanya mencapai ratus ribuan, bahkan pernah dapat project data penduduk satu kabupaten. selama ini saya pakai metode ini dan Alhamdulillah berjalan lancar. untuk implementasinya akan saya kasih contoh bertahap ditulisan berikutnya. saya sudah terlanjur janji pada seorang pembaca. insya Allah akan saya penuhi. untuk saat ini saudara dede sabar dulu, maklum sudah malam, istri udah nggerundel.

Insya Allah akan saya penuhi gan, tapi sekarang masih belum.

Insya Allah akan saya penuhi agan dede, tapi sekarang masih belum.

oke, cukup sampai disini untuk kali ini, sampai jumpa di tulisan saya berikutnya, Okey Donkey, Salam Gobloge.

Comments

total comments