Diberdayakan oleh Blogger.

Sabtu, 04 Februari 2012

Menyimpan File di Database atau di Filesystem?

by Joielechong sipayung  |  in Sistem Informasi at  Sabtu, Februari 04, 2012

Dalam artikel ini saya tidak akan mencoba memberikan pendapat tentang mana yang terbaik, menyimpan File* di Database atau di Filesystem, tetapi saya akan mengulas dan merangkumkan pendapat-pendapat dari beberapa sumber mengenai hal ini. Baiklah, saya mulai ulasan ini.

Pertama, saya akan memberi penjelasan singkat tentang apa itu database dan Filesystem.

A. Database :  Dalam istilah sederhana, sebuah database adalah sebuah koleksi dari informasi terstruktur. Database didesain secara khusus untuk memanajemen informasi dalam ukuran besar dan menyimpan data dengan cara yang terorganisasi dan terstruktur sehingga pengguna dengan mudah dapat memanajemen dan mengambil kembali data saat diperlukan (1). Database merupakan sistem untuk menyimpan informasi terstruktur, dimana diorganisasi dan disimpan dalam cara tertentu yang memungkinkan pengambilan informasi kembali secara cepat dan efisien (2). Database adalah kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut. Perangkat lunak yang digunakan untuk mengelola dan memanggil kueri (query) basis data disebut sistem manajemen basis data (database management system, DBMS). Sistem basis data dipelajari dalam ilmu informasi (3).

B. Filesystem: Adalah suatu cara untuk mengatur data yang diharapkan untuk dipertahankan setelah program berakhir dengan menyediakan prosedur untuk menyimpan, mengambil dan memperbarui data, serta mengelola ruang yang tersedia pada perangkat yang menampungnya. Sebuah Filesystem mengatur data dengan cara yang efisien dan disetel dengan karakteristik khusus perangkat. Biasanya ada kopling ketat antara sistem operasi dan sistem file. Beberapa filesystem menyediakan mekanisme untuk mengontrol akses ke data dan metadata. Memastikan keandalan merupakan tanggung jawab utama dari sistem berkas. Beberapa filesystem menyediakan sarana untuk beberapa program untuk memperbarui data dalam file yang sama di hampir saat yang sama (4).

Apakah lebih baik menyimpan file di database atau di filesytem? Tergantung kepada lingkungan kerja dan tujuan dari sistem penyimpanan yang dibangun.
Ada beberapa hal yang perlu diperhatikan:
1. Apakah File yang disimpan berubah secara dinamis?
2. Apakah File yang disimpan akan dipakai dan dipertahankan dalam waktu yang lama, misalnya 6 tahun?
3. Apakah sistem penyimpanan yang dipakai memerlukan backup yang konsisten?
4. Apakah File yang disimpan memerlukan kontrol akses yang rumit?
5. Apakah File yang disimpan berkapasitas kecil atau besar?
6. Apakah Sistem Penyimpanan yang dipakai harus ACID compliance?.
7. Apakah sistem penyimpanan yang dipakai memerlukan sinkronisasi dengan beberapa server?

Menyimpan File di Filesystem
Menyimpan file ke filesystem kelihatan merupakan pendekatan terbaik dengan beberapa alasan. Penyimpanan file ke filesytem lebih mudah untuk diatur. Saat kita butuh untuk mengambil file, kita hanya perlu mengambil 'path' dari database dan kemudian memasang file dari sana. File dapat dengan mudah ditinjau dan dengan metode ini informasi tentang file akan terpisah dengan filenya sendiri. Kekurangan dari menggunakan filesystem dalam menyimpan file adalah sebagai berikut:
- File di filesystem dapat dengan mudah di-rename atau dihapus.
- File di filesystem rentan terhadap infeksi virus (khususnya jika kita memakai windows)
- Jika aplikasi yang digunakan merupakan aplikasi web, tambahan ukuran keamanan haurus dilakukan untuk mengamankan file dari pengkopian yang tidak sah, linking dan lain-lain.

Menyimpan File di Database
Penyimpanan file pada tabel database dapat diterapkan pada file dimana ukuran database tidak menjadi masalah utama, biasanya diterapkan pada aplikasi dimana diharapkan memiliki jumlah informasi yang sedikit dan tidak membutuhkan banyak koneksi yang bersamaan. Cara ini memberikan kita penyimpanan yang tersentralisasi untuk semua sumber daya aplikasi. tetapi untuk aplikasi yang mmerlukan informasi yang besar, pendekatan dengan database harus dihindari karena beberapa alasan berikut:
- Penyimpanan file di tabel akan memperbesar ukuran database sehingga menurunkan performansi
- Menyimpan dan mengambil kembali file dari tabel memerlukan teknik pemrograman tambahan untuk mengubah file dari byte data array dan sebaliknya.
- File pada database tidak mudah untuk ditinjau
- File Dump dari tabel SQL anda akan memakai ruangan cukup besar untuk penyimpanan.
- Saat database tidak tersruktur dan tidak dijaga baik, File yang besar akan menyebabkan korupsi tabel/database.

jadi mana yang lebih baik, menyimpan file di database atau di filesystem?, jawabannya, "Tergantung". Tentu saja hal ini tergantung pada server database dan pendekatannya terhadap bagaimana file disimpan juga bagaimana file diakses.
File berukuran lebih kecil dapat disimpan dan dikirimkan secara efisien menggunakan database sebagai mekanisme penyimpanannya.File yang lebih besar mungkin akan lebih baik disimpan menggunakan sistem file, terutama jika mereka akan sering dimodifikasi/diperbaharui (fragmentasi file akan menjadi masalah dalam hal kinerja). Berikut ini adalah poin tambahan yang perlu diingat. Salah satu alasan yang mendukung penggunaan database untuk menyimpan File adalah ACID compliance.(5)



*File yang saya maksud di sini adalah Binary Large Object (BLOB) seperti file gambar, file executable, file suara dan lain sebagainya.

Referensi:
1. Beginning VB 2008 Databases From Novice to Professional, by Vidya Vrat Agarwal and James Huddleston, 2008 Apress hal 25.
2. Mastering Visual Basic.Net Database Programming, By Evangelos Petroutsos and Asli Bilgin, 2002 Sybex.
3. http://id.wikipedia.org/wiki/Basis_data
4. http://en.wikipedia.org/wiki/File_system
5. http://research.microsoft.com/apps/pubs/default.aspx?id=64525
6. http://akashkava.com/blog/127/huge-file-storage-in-database-instead-of-file-system/
7. http://www.sourcecodester.com/comment/20676
8. http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay



0 comments:

Silahkan tinggalkan komentar anda: