Get Gifs at CodemySpace.com

Minggu, 13 November 2011

SQLite pada RDBMS


Sejarah SQLite
D. Richard Hipp dirancang SQLite pada musim semi tahun 2000 saat bekerja untuk General Dynamics pada kontrak dengan Angkatan Laut Amerika Serikat . Hipp adalah merancang perangkat lunak yang digunakan di kapal rudal perusak dipandu kapal, yang awalnya didasarkan pada HP-UX dengan IBM Informix database back-end. Tujuan desain dari SQLite adalah untuk memungkinkan program untuk dioperasikan tanpa menginstal sistem database manajemen atau administrasi . Pada bulan Agustus 2000, versi 1.0 dirilis SQLite, berdasarkan gdbm (GNU Database Manager). SQLite 2,0 gdbm diganti dengan kustom B-pohon implementasi, menambahkan dukungan untuk transaksi. SQLite 3.0, sebagian didanai oleh America Online , menambahkan internasionalisasi , mengetik nyata , dan perbaikan besar lainnya.
Pengertian RDBMS
Relational Database Management System (RDBMS) atau Sistem Manajemen Basisdata Relasional adalah sebuah program komputer (atau secara lebih tipikal adalah seperangkat program komputer) yang di desain untuk mengatur/memanajemen sebuah basis data sebagai sekumpulan data yang disimpan secara terstruktur, dan melakukan operasi-operasi atas data atas permintaan penggunanya. Contoh penggunaan DBMS ada banyak sekali dan dalam berbagai bidang kerja, misalnya akuntansi, manajemen sumber daya manusia, dan lain sebagainya.
Pengertian SQLite
SQLite merupakan sebuah sistem manajemen basis data relasional yang bersifat ACID-compliant dan memiliki ukuran pustaka kode yang relatif kecil, ditulis dalam bahasa C. SQLite merupakan proyek yang bersifat public domain yang dikerjakan oleh D. Richard Hipp.
Tidak seperti pada paradigma client-server umumnya, Inti SQLite bukanlah sebuah sistem yang mandiri yang berkomunikasi dengan sebuah program, melainkan sebagai bagian integral dari sebuah program secara keseluruhan. Sehingga protokol komunikasi utama yang digunakan adalah melalui pemanggilan API secara langsung melalui bahasa pemrograman. Mekanisme seperti ini tentunya membawa keuntungan karena dapat mereduksi overhead, latency times, dan secara keseluruhan lebih sederhana. Seluruh elemen basisdata (definisi data, tabel, indeks, dan data) disimpan sebagai sebuah file. Kesederhanaan dari sisi disain tersebut bisa diraih dengan cara mengunci keseluruhan file basis data pada saat sebuah transaksi dimulai.
Fitur-fitur pada SQLite
Pustaka SQLite mengimplementasikan hampir seluruh elemen-elemen standar yang berlaku pada SQL-92, termasuk transaksi yang bersifat atomic, konsistensi basisdata, isolasi, dan durabilitas (dalam bahasa inggris lebih sering disebut ACID), trigger, dan kueri-kueri yang kompleks. Tidak ada pengecekan tipe sehingga data bisa dientrikan dalam bentuk string untuk sebuah kolom bertipe integer. Beberapa kalangan melihat hal ini sebagai sebuah inovasi yang menambah nilai guna dari sebuah basisdata, utamanya ketika digunakan dalam bahasa pemrograman berbasis script (PHP, Perl), sementara kalangan lain melihat hal tersebut sebagai sebuah kekurangan.
Beberapa proses ataupun thread dapat berjalan secara bersamaan dan mengakses basisdata yang sama tanpa mengalami masalah. Hal ini disebabkan karena akes baca data dilakukan secara paralel. Sementara itu akses tulis data hanya bisa dilakukan jika tidak ada proses tulis lain yang sedang dilakukan; jika tidak, proses tulis tersebut akan gagal dan mengembalikan kode kesalahan (atau bisa juga secara otomatis akan mencobanya kembali sampai sejumlah nilai waktu yang ditentukan habis). Hanya saja ketika sebuah tabel temporer dibuat, mekanisme penguncian pada proses multithread akan menyebabkan masalah. Update yang terkini (versi 3.3.4) dikatakan telah memperbaiki masalah ini.
Sebuah program yang mandiri dinamakan sqlite disediakan dan bisa digunakan untuk mengeksekusi kueri dan memanajemen file-file basisdata SQLite. Program tersebut juga merupakan contoh implementasi penulisan aplikasi yang menggunakan pustaka SQLite.
Integrasi dengan Bahasa Lain
·         SQLite termasuk dalam framework REALbasic, yang memungkinkan aplikasi yang dikembangkan dengan menggunakan REALbasic dapat memanfaatkan basisdata SQLite.

·         Pustaka SQLite bisa digunakan secara langsung pada bahasa C/C++, namun untuk Tcl dan beberapa bahasa pemrograman berbasis script juga tersedia.

·         Modul DBI/DBD untuk Perl juga tersedia pada CPAN, DBD:SQLite, namun modul ini bukanlah antarmuka dengan SQLite melainkan memasukkan SQLite secara keseluruhan dalam modul tersebut.

·         Modul Python juga tersedia (PySQLite) yang diimplementasikan pada DB API Python versi 2.0 (PEP 249)

·         PHP dimulai dengan PHP5 telah memasukkan SQLite, versi PHP4 sebelumnya bisa juga digunakan untuk mengakses SQLite, namun modul SQLite tidak dimasukan secara standar bawaan.

·         Dimulai Lazarus versi 0.9.8 dan Free Pascal 2.0.0, SQLite didukung untuk digunakan oleh para programmer. Tutorial tersebut bisa didapatkan disini.

·         Meskipun borland tidak mempaketkan SQLite secara standar bawaan, Delphi sudah mendukung SQLite juga menggunakan pustaka yang dibuat oleh pihak ketiga (Aducom dan Zeos). Banyak program administrasi basisdata SQLite baik komersil ataupun bebas yang menawarkan kemudahan-kemudahan dalam memanajemen basisdata SQLite terdapat di internet dibuat dengan menggunakan bahasa ini.

·         SQLite juga termasuk dalam paket yang dibundle secara standar bawaan pada Mac OS X, dan digunakan sebagai salah satu pilihan mekanisme penyimpanan data pada API Apple.

SQLite Database Server
Pada prinsipnya SQLite merupakan library C yang diimplementasikan secara embeddable (tertanam) sebagai SQL database engine. Hal ini akan memungkinkan program yang berhubungan dengan SQLite dapat mengakses database tanpa menjalankan proses RDBMS secaraterpisah, sebagaimana pada umumnya ketika anda menggunakan MySQL Server, PostgreSQL, Oracle, dan sebagainya.
Kemasan praktis inilah yang memberikan banyak sekali keuntungan, di mana anda tidak perlu melakukan manajemen database server terpisah. Selain itu, ukuran kecil yang sengaja didesain pada SQLite memungkinkan kita untuk membuat aplikasi yang ringan dengan kinerja tinggi.
Kelebihan dan Kekurangan pada SQLite
Kelebihan Sqlite :
Sqlite merupakan salah satu embbeded database yang wajib dipertimbangkan untuk digunakan pada aplikasi bukan enterprise karena memiliki beberapa kelebihan yaitu :
·         Secara umum cukup stabil
·         Perfomanya lebih efesien dan cepat dibandingkan database yang lain
·         Sedikit menggunakan memory, hanya membutuhkan sigle library untuk mengakses database
·         Berjalan dibanyak platform yang berbeda, dan dapat dipindahkan dengan mudah tanpa setting administrasi yang rumit.
·         Memenuhi standart ACID (Atomicity, Consistensy, Isolation, dan Durability )
·         Mendukung ANSI 92 SQl Standar.
·         Mempunyai API untuk bahasa C++, PHP, Perl, Phyton, dan Tcl.
·         License public domain, free untuk redistributed.
Kekurangan Sqlite :

Meskipun merupakan database server yang cukup sederhana dengan beberapa fasilitas, bukan berarti SQLite tidak memiliki kekurangan. Beberapa fasilitas yang tidak didukung oleh SQLite sengaja ditiadakan untuk mempertahankan SQLite sebagai embeddable database server. Berikut beberapa fasilitas yang umum ada pada database server dan tidak dimiliki atau tidak didukung oleh SQLite.
·         CHECK constraint
Fasilitas ini umumnya digunakan sebagai pemeriksa, namun ditiadakan karena masih dapat digantikan oleh NOT NULL serta UNIQUE.

·         Variabel subquery
Meskipun memiliki arti yang penting, penggunaan subquery atau perintah query di dalam query ini tidak didukung.

·         Foreign Key Constraint
Sama halnya dengan CHECK constraint, fasilitas ini sengaja dihilangkan oleh SQLite.

·         Alter Table
Oleh karena tidak memiliki fasilitas ini, maka untuk mengubah struktur tabel harus dilakukan dengan menghapus tabel kemudian membuat ulang.

·         Grant dan Revoke
Fasilitas ini cukup penting untuk keamanan, namun karena SQLite melakukan pembacaan serta penulisan pada file disk, maka hak izin akses bergantung pada sistem operasi yang digunakan.

·         Right dan Full Outer Join
Meskipun penggunaan right serta full outer join tidak diperkenankan, akan tetapi SQLite masih menyediakan left outer join.

·         Penulisan pada View
SQLite hanya memperbolehkan penggunaan view untuk dapat dibaca saja, dengan demikian anda tidak dapat melakukan modifikasi pada view. Sebagai gantinya, SQLite menyediakan trigger yang dapat digunakan untuk memodifikasi view.

Harus diakui memang, dengan kekurangan-kekurangan yang ada, SQLite kurang begitu cocok untuk dijadikan database server pada aplikasi client/server berbasis dekstop. Mengapa? Kebanyakan aplikasi dekstop yang digunakan untuk mengelola aplikasi bisnis memerlukan fitur-fitur yang kompleks. Meski demikian, untuk keperluan aplikasi web, bisa dikatakan SQLite mampu mengganti semuanya.
Tipe Data pada SQLite
SQLite menggunakan sistem tipe lebih umum dinamis. Dalam SQLite, tipe data dari nilai dikaitkan dengan nilai itu sendiri, tidak dengan kontainer. Sistem tipe dinamis SQLite adalah kompatibel dengan sistem yang lebih umum jenis statis mesin database lain dalam arti bahwa pernyataan SQL yang bekerja pada database statis diketik harus bekerja dengan cara yang sama di SQLite. Namun, dinamis mengetik di SQLite memungkinkan untuk melakukan hal-hal yang tidak mungkin dalam database kaku diketik tradisional.

Penyimpanan Kelas dan Datatypes

Setiap nilai yang disimpan dalam database SQLite (atau dimanipulasi oleh mesin database) memiliki salah satu kelas penyimpanan berikut:
·         NULL . Nilai adalah nilai NULL.
·         INTEGER . Nilai adalah integer ditandatangani, disimpan dalam 1, 2, 3, 4, 6, atau 8 byte, tergantung pada besarnya nilai.
·         REAL . Nilai adalah nilai floating point, disimpan sebagai nomor 8-byte IEEE floating point.
·         Nilai adalah string teks, disimpan menggunakan pengkodean database (UTF-8, UTF-16BE atau UTF-16LE).
·         BLOB . Nilai adalah gumpalan data, disimpan persis seperti itu masukan.
Perhatikan bahwa kelas penyimpanan adalah sedikit lebih umum daripada sebuah datatype. Kelas penyimpanan INTEGER, misalnya, termasuk 6 tipe data bilangan bulat yang berbeda dari panjang yang berbeda. Tapi begitu nilai-nilai INTEGER dibaca off disk dan ke dalam memori untuk pemrosesan, mereka akan dikonversi ke tipe data yang paling umum (8-byte signed integer). Dan untuk sebagian besar, "kelas penyimpanan" tidak dapat dibedakan dari "datatype" dan kedua istilah ini dapat digunakan secara bergantian.
Ø  Boolean Datatype
SQLite tidak memiliki kelas penyimpanan terpisah Boolean. Sebaliknya, nilai Boolean disimpan sebagai bilangan bulat 0 (false) dan 1 (benar).
Ø  Date and Time Datatype
SQLite tidak memiliki kelas penyimpanan disisihkan untuk menyimpan tanggal dan / atau waktu. Sebaliknya, built-in Date and Time Fungsi dari SQLite mampu menyimpan tanggal dan waktu sebagai TEXT, REAL, atau INTEGER:
o    TEXT sebagai ISO8601 strings ("YYYY-MM-DD HH: MM: SS.SSS").
o    REAL angka hari Julian, jumlah hari sejak tengah hari di Greenwich pada tanggal 24 November, 4714 SM menurut kalender Gregorian proleptic.
o    INTEGER as Unix Time, jumlah detik sejak 1970/01/01 00:00:00 UTC.
Aplikasi dapat memilih untuk menyimpan tanggal dan waktu dalam salah satu format dan mengkonversi antara format bebas menggunakan built-in fungsi tanggal dan waktu.
Structured Query Language
Sebelum kita mulai bekerja dengan SQLite, kita mendefinisikan beberapa istilah penting. Sebuah query database adalah mencari informasi dari database. Sebuah permintaan yang ditulis dalam bahasa SQL. Structured Query Language (SQL) adalah bahasa komputer yang digunakan untuk membuat, mengambil, update dan menghapus data dari database. Ini dikembangkan oleh perusahaan IBM. SQL memiliki tiga subset :
1. DDL (Data Definition Language) adalah statement yang digunakan untuk mendefinisikan skema atau struktur dari suatu database. Terdiri dari :
  • CREATE - membuat suatu objek dalam database.
  • ALTER - mengubah struktur objek dari suatu database.
  • DROP - menghapus objek dari suatu database.
  • TRUNCATE - menghapus semua record dari sebuah tabel, termasuk semua alokasi ruang untuk record tersebut ikut dihapus.
  • RENAME - mengganti nama suatu objek database.
2. DML (Data Manipulation Language) adalah statement yang digunakan untuk mengelola data di dalam skema atau struktur objek.
  • SELECT - mendapatkan data dari suatu database.
  • INSERT - memasukkan data ke dalam sebuah tabel.
  • UPDATE - mengubah data yang sudah ada dalam sebuah tabel.
  • DELETE - menghapus record dari sebuah tabel, alokasi ruang tidak dihapus.
3. DCL (Data Control Language).
  • GRANT - memberikan hak akses pengguna ke database.
  • REVOKE - mencabut atau menarik kembali hak akses yang telah diberikan dengan statement GRANT
SQL pada SQLite
SQLite telah memahami sebagian besar syntax SQL. Dalam tutorial kali ini pembahasan materi terbatas pada beberapa syntax SQL saja. Yaitu : CREATE, INSERT, UPDATE, DELETE, dan SELECT.


CREATE
Ketikkan perintah berikut ke dalam SQLite console anda :
CREATE TABLE MHS(
   npm char(15) primary key,
   nama char(25),
   jenkel char(10),
   alamat char(10),
   notlp char(15)
);
Penjelasan :
  • Statement CREATE TABLE - statement untuk membuat tabel. Di sini kita akan membuat TABLE dengan nama MHS di mana field-field-nya terdiri dari : npm, nama, jenkel, alamat, notlp.
  • Primary Key - suatu nilai dalam database yang digunakan untuk mengidentifikasi suatu baris dalam tabel.
  • Data Type (seperti char dll)

INSERT
Ketikkan perintah berikut ke dalam SQLite console anda :
INSERT INTO MHS(
   npm, nama, jenkel, alamat, notlp)
   VALUES(
   '200843500123','Suradi Sanjaya','laki-laki','Jakarta','021-55555555');
INSERT INTO MHS(
   npm, nama, jenkel, alamat, notlp)
   VALUES(
   '200843500124','Rani Desti','perempuan','Jakarta','021-56565656');
INSERT INTO MHS(
   npm, nama, jenkel, alamat, notlp)
   VALUES(
   '200843500125','Ronny Siantar','laki-laki','Jakarta','021-45564565');
Penjelasan :
  • Statement INSERT di atas merupakan syntax SQL untuk memasukkan data ke dalam suatu TABLE. Dalam hal ini kita memasukkan data tentang mahasiswa ke dalam TABLE MHS.
SELECT
Ketikkan statement berikut ke dalam SQLite console anda :
SELECT * FROM MHS;
Bila perintah di atas kita eksekusi, akan menghasilkan output seperti ini :
200843500123
Suradi Sanjaya
laki-laki
Jakarta
021-55555555
200843500124
Rani Desti
perempuan
Jakarta
021-56565656
200843500125
Ronny Siantar
laki-laki
Jakarta
021-45564565
Penjelasan :
Statement SELECT di atas berguna untuk mengambil atau memanggil satu atau lebih record dalam suatu TABLE. Operator ( * ) bertugas sebagai perwakilan dari semua field. Artinya jika kita menggunakan ( * ) maka yang kita panggil adalah record semua field.
UPDATE
Ketikkan perintah berikut ke dalam SQLite console anda :
UPDATE MHS SET
   nama="Ranny Destia",
   alamat="Bandung"
   WHERE
   npm="200843500124";
Penjelasan :
Statement UPDATE di atas digunakan untuk mengubah record yang sudah ada dari suatu TABLE. Dalam hal ini kita akan merubah nama & alamat dari mahasiswa yang memiliki npm 200843500124. Perlu diingat bahwa penggunaan klausa WHERE dalam statement UPDATE sangat penting. Karena apabila kita tidak mengikut sertakan klausa WHERE tersebut dijamin semua record (nama & alamat) pada TABLE MHS akan ikut berubah

Perintah SQLite jika dibandingkan dengan MySQL
Membuat database 
mysql> create database nama_db
d:/sqlite/> sqlite3 nama_db 
Untuk membuat database pada SQLite, kita langsung mengakses file sqlite3.exe dan menuliskan nama database. Jika tidak ditemukan database tersebut maka SQLite akan membuatkan untuk kita, jika ditemukan SQLite akan mengakses database tersebut dan masuk ke dalam console SQLite
 
Menghapus database 
mysql> drop database nama_db 
Tidak perlu menggunakan perintah, cukup hapus file database tersebut.
 
Membuat table 
mysql> create table nama_tabel (nama_field tipe_data(ukuran));
sqlite> create table nama_tabel (nama_field tipe_data(ukuran));
Perintah yang sama persis antara MySQL dan SQLite.
 
Menampilkan semua table 
mysql> show tables;
sqlite> .tables 

Menghapus table 
mysql> drop table nama_tabel;
sqlite> drop table nama_tabel; 

Menampilkan deskripsi (skema) tabel 
mysql> desc nama_tabel;
sqlite> .schema nama_tabel 

Menambahkan field baru pada tabel 
mysql> alter table nama_tabel add nama_field tipe_data(ukuran)
sqlite> alter table nama_tabel add nama_field tipe_data(ukuran)

Mengubah nama tabel 
mysql> alter table nama_tabel rename nama_tabel_baru;
sqlite> alter table nama_tabel rename nama_tabel_baru;

Menghapus field 
mysql> alter table nama_tabel drop nama_field;
Pada sqlite tidak ada perintah untuk menghapus field
 
Menginputkan data 
mysql> insert into nama_tabel values (nilai_1,nilai_2,nilai_3);
sqlite> insert into nama_tabel values (nilai_1,nilai_2,nilai_3); 

Menghapus data 
mysql> delete from nama_tabel [where kondisi]
mysql> delete from nama_tabel [where kondisi]
Cara penggunaan kondisi pada MySQL dan SQLite juga tidak berbeda
 
Mengubah data 
mysql> update nama_tabel set nama_field1 = nilai1, nama_field2 = nilai2 [where
kondisi]
mysql> update nama_tabel set nama_field1 = nilai1, nama_field2 = nilai2 [where
kondisi] 

Menampilkan data 
mysql> select [nama_field|*] from nama_tabel [where kondisi]
sqlite> select [nama_field|*] from nama_tabel [where kondisi]

Penggunaan kondisi (contoh menggunakan select) 
mysql> select * from nama_tabel where nama_field1 = nilai and nama_field2 like
“string%”
sqlite> select * from nama_tabel where nama_field1 = nilai and nama_field2 like
“string%” 

Natural Join (relasi sederhana) 
mysql> select * from nama_tabel1 join nama_tabel2 on (nama_tabel2.field =
nama_tabel1.field)
sqlite> select * from nama_tabel1 join nama_tabel2 on (nama_tabel2.field =
nama_tabel1.field) 

Right Join 
mysql> select * from nama_tabel1 right join nama_tabel2 on (nama_tabel2.field =
nama_tabel1.field) 
Sayangnya SQLite juga tidak mensupport right join dan full outer join 


Instalasi SQLite

Meskipun secara built-in SQLite sudah didukung oleh PHP, akan tetapi untuk dapat menginteraksikannya, anda membutuhkan SQLite database server. Dapat dikatakan instalasi SQLite merupakan istalasi yang apaling praktis dari sekian program aplikasi anda. Sebab di sini anda tidak perlu melakukan tahap-tahap instalasi yang cukup panjang.
1.         Umumnya anda akan mendapatkan file sqlite dalam bentuk terkompres, untuk itu dilakukan ekstrak dan anda akan mendapatkan file aplikasi kecil dengan nama sqlite. Sebaiknya anda tidak perlu mengubah nama file tersebut.
2.         Letakkan file padadirektori yang mudah diakses, disini anda dapat menggunakan direktori C:\.
3.          Sampai disini proses instalasi sudah selesai, dan anda dapat mencoba untuk menggunakan SQLite melalui program kecil bernama sqlite.
4.         Namun demikian, untuk memudahkan anda dalam menjalankan serta melakukan pengaksesan, tambahkan lokasi tempat anda meletakkan SQLite ke dalam konfigurasi path.
Jika anda memberikan konfigurasi path, anda dapat mengakses SQLite dari sembarang direktori. Hal ini akan membantu anda ketika harus membuat database pada lokasi lain selain drive utama. Apabila anda menggunakan Windows 9x, cari dan buka file autoexec.bat kemudian tambahkan baris pada path.
SET PATH=C:\
Konfigurasi di atas dengan asumsi bahwa anda meletakkan file sqlite pada direktori C. Selain itu, jika anda menggunakan Windows 2000/XP, lakukan konfigurasi path dengan melakukan klik kanan ikon My Computer > Properties > Advance > Environment Variables. Selanjutnya klik ganda pada PATH lalu tambahkan konfigurasi PATH.

Sumber :



1 komentar: