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:
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
- Paging Library
- Library untuk Manajemen session berbasis database
ADOdb 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:// 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
Content Management System dari Switzerland yang dibangun dengan PHP dan ADOdb.
3. PostNuke
Open Source Portal Content Management System/Weblog yang sangat terkenal, mirip PHPNuke.
4. NOLA
Aplikasi akuntansi, inventory dan aplikasi job tracking berbasis web, berlisensi GPL dan dibuat oleh Noguska
5. DBForm
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 |
Koneksi ke database | DB::Connect() | ADOConnection::Connect() 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 |
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 |
Create a sequence | DB::createSequence() | Otomatis dibuat. Tetapi pada ADOdb 2.60 Anda dapat membuat secara menual menggunakan: |
Drop a sequence | DB::dropSequence() | Tersedia pada ADOdb 2.60 |
Mendapatkan info DB internal | DB::getListOf() | tersedia sebagai properti ADOConnection |
Mendapatkan baris berikutnya | DB_Result::fetchRow() | ADORecordSet::FetchRow() atau |
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 |
Penulis 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.
Tidak ada komentar:
Posting Komentar