Rabu, 15 Desember 2010

SQLite

SQLite merupakan sebuah library proses yang menerapkan serverless (mandiri tanpa server), zero configuration, database SQL transaksional. Kode untuk SQLite berada dalam public domain dan dengan demikian bebas untuk digunakan untuk tujuan apa pun, komersial atau swasta. SQLite saat ini banyak digunakan dalam aplikasi yang banyak kita jumpai, termasuk dalam beberapa high-profil project.


SQLite merupakan mesin database SQL embedded. Tidak seperti kebanyakan database SQL lainnya, SQLite tidak memiliki proses server yang terpisah. SQLite membaca dan menulis secara langsung ke disk. Database SQL lengkap dengan multiple tabel, indices, triggers, dan views, semua terdapat dalam sebuah disk file tunggal. Format file database adalah cross-platform yaitu kita bebas mengcopy database antara 32-bit dan sistem 64-bit atau antara arsitektur big-endian dan little-endian. Fitur-fitur ini membuat SQLite menjadi pilihan populer sebagai Application File Format. Berbicara tentang SQLite, SQLite bukan sebagai pengganti untuk Oracle tetapi sebagai pengganti fopen()

SQLite adalah compact library. Dengan semua fitur yang telah diaktifkan, ukuran library bisa kurang dari 300KiB, tergantung pada pengaturan compiler optimization. (Optimasi compiler seperti aggressive function inlining dan loop unrolling dapat menyebabkan kode obyek yang akan jauh lebih besar). Jika beberapa fitur opsional dihilangkan, ukuran library SQLite dapat berkurang hingga di bawah 180KiB. SQLite bisa juga berjalan dalam ruang stack yang minimal (4KiB) dan heap yang sangat sedikit (100KiB), membuat SQLite menjadi engine database pilihan populer di memori gadget seperti ponsel, PDA, dan MP3 player. Ada tradeoff antara penggunaan memori dan kecepatan. SQLite umumnya berjalan lebih cepat sejalan dengan semakin banyak memori yang Anda berikan. Namun demikian, kinerja biasanya sudah cukup baik bahkan di lingkungan rendah memori.

SQLite diuji dengan sangat hati-hati sebelum setiap rilis dan memiliki reputasi yang dapat diandalkan. Kebanyakan kode sumber SQLite ditujukan murni untuk pengujian dan verifikasi. Sebuah automated test suite (tes otomatis) menjalankan jutaan kasus yang diuji melibatkan ratusan juta individual SQL statements dan mengarsipkan 100% branch test coverage. SQLite merespon kegagalan alokasi memori dan disk I/O error. Transaksi ACID bahkan jika terputus oleh sistem crash atau gangguan listrik. Semua ini dibuktikan oleh tes otomatis menggunakan tes khusus harnesses yang mensimulasikan system failure. Tentu saja, bahkan dengan segala tes ini, masih ada bug. Tapi tidak seperti beberapa proyek serupa (terutama pesaing komersial) SQLite terbuka dan jujur tentang semua bug dan menyediakan daftar bug termasuk daftar bug kritis dan kronologis tiap menit dari laporan bug dan perubahan kode.


Basis kode SQLite didukung oleh tim pengembang internasional yang bekerja pada SQLite secara full-time. Para pengembang terus memperluas kemampuan SQLite dan meningkatkan kehandalan dan kinerjanya, tetap menjaga kompatibilitas dengan spec antarmuka yang telah diterbitkan, syntax SQL, dan format file database. Source Code ini benar-benar bebas untuk siapa saja yang menginginkannya, namun dukungan profesional juga tersedia.
Para pengembang berharap bahwa customer mendapatkan manfaat dari SQLite dan meminta customer untuk menggunakannya dengan baik: untuk membuat produk yang baik dan cepat, handal, dan mudah digunakan.

Membuat Database Baru
  1. Pada shell atau DOS prompt, masukkan: "sqlite3 test.db". Ini akan membuat database baru bernama "test.db". (Anda dapat menggunakan nama yang berbeda).
  2. Masukkan perintah SQL pada prompt untuk membuat dan mengisi database baru.
  3. Dokumentasi tambahan tersedia di http://www.sqlite.org/sqlite.html
Menulis Program Menggunakan SQLite
Di bawah adalah sebuah program TCL sederhana yang menunjukkan bagaimana menggunakan antarmuka TCL untuk SQLite. Program mengeksekusi pernyataan SQL yang diberikan sebagai argumen kedua pada database yang didefinisikan oleh argumen pertama. Perintah untuk melihatnya adalah perintah sqlite3 pada baris 7 yang berfungsi membuka database SQLite dn menciptakan peritnah TLC baru bernama "db" untuk mengakses database, invocation dari perintah db pada baris 8 untuk mengeksekusi perintah SQL terhadap database,d an penutupan koneksi pada baris terakhir script.

#!/usr/bin/tclsh
if {$argc!=2} {
  puts stderr "Usage: %s DATABASE SQL-STATEMENT"
  exit 1
}
load /usr/lib/tclsqlite3.so Sqlite3
sqlite3 db [lindex $argv 0]
db eval [lindex $argv 1] x {
  foreach v $x(*) {
    puts "$v = $x($v)"
  }
  puts ""
}
db close



Di bawah adalah sebuah program C sederhana yang menunjukkan bagaimana menggunakan interface C/C++ untuk SQLite. Nama database diberikan oleh argumen pertama dan argumen kedua merupakan satu atau lebih pernyataan SQL untuk mengeksekusi database. Fungsi memanggil untuk mereferensikan bahwa di sini adalah panggilan untuk sqlite3_open() pada baris 22 berfungsi untuk membuka database, sqlite3_exec() pada baris 27 berfungsi untuk mengeksekusi perintah SQL terhadap database, dan sqlite3_close() pada baris 31 berfungsi untuk menutup koneksi database.



#include <stdio.h>
#include <sqlite3.h>
 
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
  int i;
  for(i=0; i<argc; i++){
    printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
  }
  printf("\n");
  return 0;
}
 
int main(int argc, char **argv){
  sqlite3 *db;
  char *zErrMsg = 0;
  int rc;
 
  if( argc!=3 ){
    fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
    exit(1);
  }
  rc = sqlite3_open(argv[1], &db);
  if( rc ){
    fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
    sqlite3_close(db);
    exit(1);
  }
  rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
  if( rc!=SQLITE_OK ){
    fprintf(stderr, "SQL error: %s\n", zErrMsg);
    sqlite3_free(zErrMsg);
  }
  sqlite3_close(db);
  return 0;
}

Silahkan memberikan komentar, saran atau pertanyaan mengenai teknologi informasi dan komunikasi. Komentar Anda akan melalui proses moderasi oleh Admin.
EmoticonEmoticon