Written by Jefri Pakpahan / Database

Posted with : BoneCP, C3P0, Database Connection Pooling, DBCP


Beberapa saat lalu saya memikirkan betapa pentingnya resource pada server database, dulu sewaktu saya duduk dibangku kuliah pada saat mengerjakan project/tugas belum terlalu memikirkan hal tersebut.  Jika aplikasi kita tergantung pada database otomatis kita harus selalu terkoneksi ke database, entah untuk query select, insert, update atau delete.
Connection Pooling adalah suatu metode untuk menjaga supaya koneksi database terbuka sehingga dapat digunakan kembali, karena membuka koneksi ke database adalah proses yang "Mahal", jadi pooling menjaga koneksi tetap aktif.Database_connection_pooling

Keuntungan Connection Pooling :
- Mempercepat response time (pada saat membuka koneksi)
- Penggunaan kembali resource database
- Penggunaan memory lebih hemat

Connection Pooling biasanya populer di kalangan pengguna Java (Application Server), banyak library yang tersedia untuk dapat menggunakan fitur ini, contohnya :
- Commons Database Connection Pooling (Commons DBCP)
- C3P0 - JDBC3 Connection and Statement Pooling
- BoneCP
Saya sangat tertatik dengan BoneCP, dikarenakan pada website http://jolbox.com/dynamic-benchmark.html disertakan benchmark dengan beberapa Database Connection Pooling seperti diatas, dan hasilnya WOW. Jika sempat saya akan membuat aplikasi kecil menggunakan PlayFramework! dengan Database Connection Pooling menggunakan library diatas.

Saya adalah seorang penggemar programming PHP, namun sayang sekali PHP tidak mendukung untuk Pooling Connection, PHP hanya mendukung Persistent Connection.

Persistent Connection != Connection Pooling.

Saat saya sedang mencari, ternyata Oracle mendukung Pooling untuk PHP dengan nama Database Resident Connection Pooling. Di website tersebut ditulis :

DRCP complements middle-tier connection pools that share connections between threads in a middle-tier process. In addition, DRCP enables sharing of database connections across middle-tier processes on the same middle-tier host and even across middle-tier hosts. This results in significant reduction in key database resources needed to support a large number of client connections, thereby reducing the database tier memory footprint and boosting the scalability of both middle-tier and database tiers. Having a pool of readily available servers also has the additional benefit of reducing the cost of creating and tearing down client connections.
DRCP is especially relevant for architectures with multi-process single threaded application servers (such as PHP/Apache) that cannot perform middle-tier connection pooling. The database can still scale to tens of thousands of simultaneous connections with DRCP.

Yup DRCP memberikan solusi Pooling bagi PHPers :D
Berikut sedikit perbandingan jika menggunakan DRCP dibanding dengan Dedicated Server dan Shared server dari situs tersebut :
Dedicated Server
Memory used = 5000 X (400 KB + 4 MB) = 22 GB

Shared Server
Memory used = 5000 X 400 KB + 100 X 4 MB = 2.5 GB
Out of the 2.5 GB, 2 GB is allocated from the SGA.

Database Resident Connection Pooling
Memory used = 100 X (400 KB + 4 MB) + (5000 X 35KB)= 615 MB

Sungguh Sangat jauh bukan?ya itu merupakan sedikit dari salah satu Keuntungan Database Connection Pooling.

CMIIW :)

Bacaan :
http://stackoverflow.com/questions/4041114/what-is-database-pooling
http://docs.oracle.com/cd/E17781_01/appdev.112/e18555/ch_two.htm#BABHHEDD
http://docs.oracle.com/cd/B28359_01/server.111/b28310/manproc002.htm
http://pic.dhe.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=%2Fcom.ibm.websphere.base.doc%2Finfo%2Faes%2Fae%2Fcdat_conpool.html



blog comments powered by Disqus