SQL Server 2008 Data Compression – Part I
Sekalian mengingat kembali dan mendokumentasikan apa yang pernah aku presentasikan pada event TechNet Deep Dive SQL Server yang diadakan di Auditorium Microsoft Indonesia tanggal 22 Juli 2008 yang lalu, coba kutuliskan pada tulisan di bawah ini. Semoga bisa bermanfaat.

Secara umum kompresi data (Data Compression) diartikan dengan proses mengubah ukuran suatu file menjadi file yang ukurannya lebih kecil.
Berdasarkan definisi di atas, kompresi data dapat dibagi menjadi 2 jenis, yaitu :
1. Lossy Data Compression
2. Lossless Data Compression
Lossy Data Compression memiliki kelebihan dalam hal kecepatan dan rasio kompresi yang lebih besar, tetapi sebagian data akan hilang (loss) pada saat dilakukan proses uncompression. Salah satu contoh jenis kompresi ini digunakan untuk mengubah file audio menjadi mp3.
Sebaliknya Lossless Data Compression mensyaratkan bahwa data hasil rekontruksi akan persis sama dengan data yang terkompress.
Terdapat 2 teknik kompresi yang umum digunakan dalam Lossless Data Compression yaitu :
1. Berdasarkan pada prinsip data yang sering muncul akan dikodekan dengan lebih sedikit bit. Contoh : Huffman Coding
2. Berdasarkan pada permodelan statistik untuk data teks. Misalkan dengan membangun suatu kamus (dictionary) dari simbol-simbol yang sering muncul pada suatu blok dan kemudian hanya akan diacu (reference) dengan menggunakan pointer. Contoh : LZ (Lempel-Ziv) algorithm.
Nah, bagaimana dengan kompresi pada database? Hal pertama yang harus dipahami bahwa tujuan utama dari kompresi data pada database bukan untuk mendapatkan rasio kompresi yang maksimum, tetapi untuk mendapatkan keimbangan terbaik antara rasio kompresi yang didapat dengan cost dari proses kompresi/dekompresi. Sehingga kompresi yang didapat akan bergantung pada distribusi dan skema data yang ada.
Masalah-masalah terkait kompresi data yang harus kita perhatikan adalah :
- Storage Cost
- Manageability Cost
- Backup/recovery
- Create/Rebuild indexes
- Bulk import
- Consistency Checking
Sebenarnya, Microsoft sudah mulai mengupayakan masalah kompresi data pada database sejak meluncurkan SP2 untuk SQL Server 2005, yaitu dengan mengimplementasikan fitur variable-length decimal storage format.
Sedangkan pada SQL Server 2008 fitur terkait kompresi data diimplementasikan dalam :
- Backup Compression
- Data Compression
- ROW Compression
- PAGE Compression
Pada tulisan berikutnya akan kutuliskan secara lebih detail bagaimana mekanisme kompresi data ini dilakukan oleh SQL Server 2008.