Pengenalan ADODB

Pengenalan ADOdb 1.1 Latar Belakang

Sebelum memulai penjelasan tentang ADOdb, permulaan bab ini akan menjelaskan latar belakang mengapa ADOdb diciptakan. Selama ini mungkin Anda telah berpengalaman membuat aplikasi database dengan PHP, di mana Anda mungkin telah hafal fungsi-fungsi database untuk MySQL, atau fungsi PHP untuk database yang sering Anda gunakan. Tetapi apakah Anda menyadari bahwa apabila aplikasi database Anda yang telah menjadi produk jadi seringkali hanya dapat menggunakan database tertentu saja? Inilah yang menjadi landasan diciptakannya teknologi abstraksi layer database. Apabila aplikasi database yang Anda buat ditujukan untuk MySQL maka akan mengalami kesulitan bila aplikasi database tersebut karena sesuatu hal terpaksa harus menggunakan database lain, seperti PostgreSQL. Apakah yang dapat dilakukan? Anda harus mengganti semua fungsi database spesifik untuk MySQL dengan fungsi database untuk PostgreSQL. Tentu hal ini akan menjadi masalah apabila aplikasi yang telah dibuat merupakan aplikasi yang kompleks. Permasalahan ini dapat teratasi apabila aplikasi kita menambahkan layer abstraksi database.

Layer Abstraksi database dapat ditambahkan dengan menggunakan API atau library /pustaka tertentu. Library atau API ini didesain untuk dapat bekerja dengan berbagai macam database server dengan sintaks atau fungsi yang sama. Perbedaan yang ada hanya pada konfigurasi saja sehingga apabila terjadi perubahan database yang digunakan, kita hanya perlu menyesuaikan konfigurasi untuk database pada aplikasi. Tentu menyenangkan, bila kita menghasilkan aplikasi database yang portabel dalam arti dapat berjalan di berbagai macam database tanpa menulis ulang kode program yang ada. Ini meningkatkan nilai dan kualitas program aplikasi yang telah dibuat.

Ada banyak pilihan untuk melakukan abstraksi database karena kita dapat menggunakan beberapa library atau class yang sudah ada, dua di antaranya adalah Pear::DB, PHPLib dan ADOdb.

1.2 Mengenal ADOdbADOdb merupakan kependekan dari Active Data Objects Data Base. ADOdb merupakan sekelompok pustaka atau class-class yang melakukan standarisasi untuk fungsi database dengan pemrograman PHP. ADOdb merupakan salah satu pustaka yang dapat kita manfaatkan sebagai layer abstraksi database. Fungsi utamanya adalah untuk menyembunyikan perbedaan database dan memberikan method sederhana untuk melakukan kueri pada berbagai macam database dengan perubahan kode seminimal mungkin.

ADOdb terkenal karena kecepatannya, kemudahan penggunaannya serta kelengkapan fasilitasnya.

Informasi ADOdb selengkapnya dapat diperoleh di:

http://php.weblogs.com/adodb

1.3 Kelebihan ADOdbKelebihan ADOdb adalah:

1.       Mudah dimengerti oleh programmer Windows karena sintaksnya hampir sama persis dengan Microsoft ADO

2.       Cepat, juga memiliki ekstension native untuk mempercepat proses

3.       Telah terbukti handal dalam berbagai aplikasi nyata

4.       Memiliki fungsi atau pustaka yang lengkap

5.       Menyediakan kode pendukung untuk menangani insert dan update yang dapat diadaptasi ke berbagai database secara cepat. method disediakan untuk penanganan tanggal, penggabungan string dan karakter tanda petik string untuk berbagai database

6.       Mudah untuk digunakan pada database lain karena kode spesifik dari database tertentu diletakkan pada fungsi tersendiri sehingga Anda tidak perlu melakukan perubahan pada logik utama dari class.

7.       Mendukung banyak sekali database server

8.       Performance Monitoring dan tuning library

  1. Paging Library
  2. Library untuk Manajemen session berbasis database

1.4 Aplikasi nyata yang menggunakan ADOdbADOdb telah terbukti stabil, cepat dan populer karena telah banyak aplikasi PHP di dunia yang memanfaatkan ADOdb.

Aplikasi yang menggunakan ADOb antara lain:

1.       PHPLens

http:// http://www.phplens.com

Merupakan komponen data grid komersial yang mengizinkan baik desainer web dan programmer profesional untuk membangun dan memelihara aplikasi database pada Web dengan mudah. Dibuat oleh pembuat ADOdb.

2.       ECreasol

http://www.ecreasol.com

Content Management System dari Switzerland yang dibangun dengan PHP dan ADOdb.

3.       PostNuke

http://www.postnuke.com

Open Source Portal Content Management System/Weblog yang sangat terkenal, mirip PHPNuke.

4.       NOLA

http://nola.noguska.com

Aplikasi akuntansi, inventory dan aplikasi job tracking berbasis web, berlisensi GPL dan dibuat oleh Noguska

5.       DBForm

http://dbform.sourceforge.net

Library atau framework yang memudahkan kita dalam bekerja dengan web form dan untuk proses update database yang umum serta mendayagunakan class dalam bekerja dengan tabel database.

6.       Gallery

http://www.menalto.com/projects/gallery/modules.php?op=modload&name=News&file=index

Aplikasi galeri/album foto yang canggih

1.5 Perbandingan Pear DB dengan ADOdb 1.5.1 Perbandingan Fasilitas/API

Feature PEAR DB ADOdb
dukungan Data Source Name (DSN) ya ya, bila mode kompatibilitas dengan Pear diaktifkan
Error Handling PEAR Module penanganan error yang dapat dikembangkan. Dukungan terintegrasi untuk 3 penanganan error:

– PEAR style
– menggunakan error_log
– Ditampilkan ke layar

Koneksi ke database DB::Connect() ADOConnection::Connect()
ADOConnection::PConnect()
ADOConnection::NConnect()

Mengikuti konvensi standar koneksi dari PHP

Diskonek dari database DB::Disconnect() ADOConnection::Close()
Mengirimkan perintah SQL DB::Query() ADOConnection::Execute()
Identifikasi peringatan DB::isWarning() Peringatan dikirim ke fungsi ADOConnection::outp(), tetapi tidak dikirim ke Error Handler. Perilaku default dari outp() adalah mengeluarkan ke layar. Hal ini dapat dioverridden.
Identifikasi Error DB::isError() Error dikirimkan ke error handler
Quote strings DB::quote() ADOConnection::qstr()
Mendapatkan informasi dukungan backend untuk fasilitas tertentu DB::provide() Menyediakan properti dengan nilai true atau false pada objek ADOConnection. Biasanya dimulai dengan $has*.
Auto-insert atau update record DB::autoPrepare() ADOConnection::GetInsertSQL() atau
ADOConnection::GetUpdateSQL()
Menjalankan kueri prepare DB::execute() ADOConnection::Execute()
Menjalankan sejumlah kueri prepare berulangkali DB::executeMultiple() Memanggil ADOConnection::Execute() dalam loop for
Menghasilkan kueri limit ( eq. SELECT …

LIMIT … )

DB::limitQuery() ADOConnection::SelectLimit()
Mendapatkan kolom pertama, baris pertama dari kueri DB::getOne() ADOConnection::GetOne()
Mendapatkan baris pertama dari kueri DB::getRow() ADOConnection::GetRow()
Mendapatkan kolom tunggal dari kueri dari array DB::getCol() ADOConnection::GetCol()
Mendapatkan result-set sebagai associative array menggunakan kolom pertama sebagai key DB::getAssoc() ADOConnection::GetAssoc()
Mengembalikan result set sebagai array 2 dimensi DB::getAll() ADOConnection::getAll() atau ADOConnection::GetArray()
Baris yang berubah dari insert/delete/update DB::affectedRows() ADOConnection::Affected_Rows()
Determine whether rows are fetched as indexed atau associative arrays, atau as objects DB::setFetchMode() Set the $ADODB_FETCH_MODE variable for indexed atau associative arrays. For fetching rows as objects, use ADOResultSet::FetchObject().
Get the next number in a sequence DB::nextID() ADOConnection::GenID() atau
ADOConnection::NextID()
Create a sequence DB::createSequence() Otomatis dibuat.

Tetapi pada ADOdb 2.60 Anda dapat membuat secara menual menggunakan:
ADOConnection::CreateSequence()

Drop a sequence DB::dropSequence() Tersedia pada ADOdb 2.60
ADOConnection::DropSequence()
Mendapatkan info DB internal DB::getListOf() tersedia sebagai properti ADOConnection
Mendapatkan baris berikutnya DB_Result::fetchRow() ADORecordSet::FetchRow() atau
ADORecordSet::MoveNext()
Mendapatkan baris ke variabel yang sudah ada.

Fetch the row into existing variable

DB_Result::fetchInto() ADORecordSet::FetchRow()
Mendapatkan jumlah kolom yang didapat DB_Result::numCols() ADORecordSet::FieldCount()
Mendapatkan jumlah baris yang didapat DB_Result::numRows() ADORecordSet::RecordCount()
Mendapatkan result berikutnya bila batch kueri dijalankan DB_Result::nextResult() ADORecordSet::NextRecordSet()
Mendapatkan info tentang resultset DB_Result::tableInfo() ADORecordSet::FetchField()
Error object DB_Error

Pear menyediakan mekanisme meta-error di mana semua error dipetakan ke daftar error virtual. Masalah dengan pendekatan ini adalah pesan error telah disederhanakan sehingga proses debug penyebab error sebenarnya lebih sulit.

Objek PEAR error didukung bila emulasi PEAR diaktifkan.

Secara umum, debugging pada ADOdb lebih mudah karena proeperti ADOConnection::debug. Apabila true, maka semua perintah SQL, pesan debug dan error dikeluarkan ke output standar. PEAR DB tidak memilikinya, sehingga Anda harus memiliki kerangkan debugging sendiri.

Objek warning DB_Warning Tidak diperlukan

1.5.2 Perbandingan kecepatanPenulis menampilkan pengukuran dan perbandingan kecepatan ADOdb dengan teknologi terkait pada bagian ini. Sumber perbandingan kecepatan ini berasal dari

http://phplens.com/lens/adodb/

Perbandingan Kecepatan pertama

Anda dapat melihat pada perbandingan kecepatan antara fungsi MySQL native, ADOdb dengan ekstension native, dbx, ADOdb biasan, PHPlib, MDB, PEAR DB serta M’base.

Perbandingan kecepatan ini dilakukan dengan mendapatkan 82 baris dari tabel products sebanyak 200 kali. Tes diulang 5 kali. Waktu koneksi tidak diikutkan dari perbandingan kecepatan. Nilai yang lebih rendah lebih baik, semua angka di sini adalah dalam hitungan detik.

Perhatikan tabel hasil perbandingan kecepatan berikut:

MySQL 1.12 1.12 1.17 1.15 1.14

ADOdbext 1.30 1.31 1.29 1.30 1.32

dbx ext 1.35 1.38 1.41 1.37 1.36 (index only)

ADOdb 1.43 1.47 1.47 1.44 1.45

dbx ext 1.53 1.52 1.52 1.52 1.55 (index/assoc/info)

PhpLib 1.53 1.62 1.64 1.64 1.57

MDB 1.77 1.75 1.75 1.76 1.73

PEAR DB 2.91 2.90 2.85 2.83 2.84 (fetchInto)

PEAR DB 3.14 3.13 3.22 3.12 3.16 (fetchRow)

M’base 4.51 4.55 4.46 4.54 4.52 (numeric indexes)

M’base 4.99 4.72 4.71 4.71 4.72 (assoc indexes)

Rata-Rata Overhead

MySQL 1.14 –

ADOdbext 1.30 14%

dbx 1.37 20% (index only)

ADOdb 1.45 27%

dbx 1.53 34% (index/assoc/info)

PhpLib 1.60 40%

MDB 1.75 54%

PEAR DB 2.87 152% (fetchInto)

PEAR DB 3.15 176% (fetchRow)

M’base 2.52 296% (numeric cols)

M’base 4.77 318% (assoc cols)

Perbandingan Kecepatan dua

Perbandingan Kecepatan pertama adalah perbandingan sintetis yang tidak mengukur kecepatan secara nyata. Perbandingan kecepatan kedua diusahakan lebih realistik, dengan mengukur request HTTP / detik. Pada tes ini, kita memilih dan menampilkan 82 baris dari tabel products, sekali tiap request halaman.

Perbandingan Kecepatan ini menggunakan HTTP benchmarking tool, M’soft Web App Stress Tool (WAST). Pengukuran ini juga dengan Turk MMCache Accelarator 2.3.23 terinstall dan tanpa terinstall.

Dua tes dijalankan dan dirata-rata untuk tiap tes. Nilai yang lebih tinggi akan lebih baik. Semua pengukurang dalam halaman / detik.

Dengan Tanpa

Accelerator Accelerator

MySQL 83.53 81.35

ADOdb 61.19 21.33

PEAR DB 52.85 25.26

Informasi detail mengenai perbandingan dan pengukuran kecepatan ini dapat dilihat di url:

http://phplens.com/lens/adodb/#2

1.6 Database yang didukung oleh ADOdb

Tentu Anda perlu mengerti apa sajakah database yang didukung ADOdb sehingga Anda dapat memutuskan untuk menggunakan ADOdb atau tidak sesuai kebutuhan aplikasi.

Database yang didukung oleh ADOdb antara lain adalah:

1.       MySQL

2.       PostgreSQL

3.       Oracle

4.       Microsoft SQL Server

5.       Sybase

6.       Sybase SQL Anywhere

7.       Informix

8.       FrontBase

9.       SQLite

10.    Interbase (Firebird and Borland variants)

11.    Foxpro

12.    Access

13.    DB2

14.    SAP DB

15.    ODBC

Dengan melihat daftar tersebut, Anda dapat menyimpulkan bahwa ADOdb merupakan salah satu library yang dapat menjadi pilihan utama untuk layer abstraksi database dari aplikasi database berbasis PHP.

3 Responses to Pengenalan ADODB

  1. khairuddin says:

    Bang Arispw Yth,

    Ini Saya Kirimkan Contoh Table Cuti nya…..

    Aku mohon sekali ama Abang Arispw..untuk membantu buatkan querynya..

    Di table tersebut …sisa cutinya masih kosong…
    Dan hak cutinya 12 pada record pertama dan recor berikutnya…belon terisi secara penyusutan…Jika 4 hari cuti yang di ambil oleh pegawai…maka sisa cutinya harus nya tinggal 8 dan seterusnya

    Sampai hak cuti pegawai tersebut habis ( sisa cutinya 0 )

    Sekali lagi aku ucapkan terima kasih banyak atas bantuan abang

    Wassalam khairuddin

  2. aris says:

    Maaf mas Khairudin , saya belum terima Tabel yang di maksud … , kalo boleh di send aja ke mail masarisdong@yahoo.com
    Supaya saya bisa memberikan contoh Query nya

    trim

  3. Untara says:

    Mas Aris PW Ysh,
    Saya sedang coba pake fungsi PivotTableSQL, tapi selalu gagal error yg muncul sbb:

    Fatal error: Call to undefined method ADODB_mysql::GetCol() in C:\AppServ\www\finance\adodb\pivottable.inc.php on line 44.

    kenapa ya mas, mohon bantuannya, tanks

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: