Dalam posting ini, disebutkan bahwa semua data yang disimpan dalam database, berbentuk binary. Hanya saja, demi kemudahan dalam komunikasi data, bentuk binary tersebut direpresentasikan dalam bentuk yang lain seperti character dan numeric dengan batasan tertentu. Sebagai contoh, jika kita membuat sebuah field dengan tipe character, secara default mempunyai panjang 1. Dengan menambahkan panjang sampai dengan batas maksimum, kita bisa menyimpan banyak character. Lebih lengkapnya, baca di posting ini.
Biner bisa direpresentasikan dalam bentuk tipe yang lain. Jadi, kita pun bisa mengubah sebuah gambar menjadi bentuk yang lain, umumnya berupa character. Tapi, character mempunyai panjang maksimum yang tidak melebihi 255 character (pada beberapa DBMS). Padahal sebuah gambar, besarnya bisa mencapai kilobytes (KB) sampai dengan beberapa puluh megabytes (MB). Kalau diubah kedalam character, butuh berapa panjang character? Sebagai informasi, 1 character disimpan menjadi 1 byte.
Sangat tidak mungkin kita menyimpan gambar dalam bentuk character dalam DBMS. Oleh karena itu, kita butuh tipe data yang mampu menyimpan sampai dengan puluhan MB. Solusinya adalah dengan menggunakan tipe data BLOB (Binary Large Object) yang di-klaim mampu menyimpan 2^31 bytes. Itu sama saja dengan 2.147.483.648 bytes atau sampai dengan 2 gigabytes (GB). Benar-benar LARGE!
Karena tipe data ini dikeluarkan oleh IBM ANSI, maka setiap DMBS mempunyai tipe data ini. Dan beberapa membuat extend-nya. Pembuatan field-nya pun sangat mudah, dan masih sama seperti field dengan tipe data yang lain. Sebagai contoh, kita coba membuat field FOTO dalam SQL Server yang telah mempunyai tipe data khusus yaitu IMAGE.
CREATE TABLE Pegawai(
NIK CHAR(20),
Nama VARCHAR(100),
Foto IMAGE);
Untuk DMBS lain, hanya mengganti [Foto IMAGE] dengan [Foto BLOB]. Sebagai informasi, Oracle mempunyai BLOB dan CLOB (Character Large Object). CLOB dikhususkan untuk penyimpanan data dalam bentuk karakter dan dalam jumlah yang besar, sampai dengan 2 GB. Di DMBS lain, CLOB disamakan dengan tipe data text, memo, atau long character.
Untuk penyimpanan datanya, kita masih menggunakan cara yang satu itu, DML (Data Manipulation Language) – INSERT, UPDATE, DELETE. Namun, values-nya sedikit berbeda karena kita harus mengubah dulu dari file yang dibaca path-nya menjadi bentuk binary. Contoh berikut dipakai untuk meng-INSERT-kan sebuah data kedalam tabel Pegawai, menggunakan SQL Server.
INSERT INTO Pegawai
SELECT ‘060603’, ‘Tegar’,
BulkColumn FROM OPENROWSET(BULK N’c:\foto.jpg’, Single_Blob) as Foto;
Hasilnya: 1 row(s) affected
Jika kita select,
SELECT * FROM Pegawai;
Hasilnya: kolom Foto menampilkan karakter biner ‘0x89405E…’
Semoga bermanfaat…