Sühan Erol (Oracle+PHP)

Mart 17, 2008

Oracle DRCP (Database Resident Connection Pooling) ile PHP için Connection Pooling

Kategori: Oracle, PHP — suhanerol @ 2:55 pm
Tags:

Oracle 11G ile birlikte gelen yeni özelliklerden biri de DRCP (Database Resident Connection Pooling) dir. Klasik 3 katmanlı mimarinin avantajlarından biri olan connection pooling(bağlantı havuzu) özelliğinin PHP gibi “Çalış ve sonunda bütün kaynakları kapat” mantığı ile çalışan betik lisanlarında bulunmaması veya 3ncü parti yazılımlarla giderilmeye çalışılsa da yeterli ve düzgün çalışır olmaması sorunu PHP gibi lisanların büyük hacimli projelerde tercih edilmemesine sebep olmaktadır. Bir uygulamanın en maliyetli kısmı veritabanına bağlantı ve yeni bir oturum açılması bölümüdür. Java gibi üst düzey uygulama geliştirme ortamları “Hibernate” gibi uygulama katmalarının “Connection Pooling” özellikleriyle bu sorunu çözmüşlerdir. DRCP ile birlikte Oracle 11g’de bu sorunun çözümü amaçlanmıştır.

DRCP nin kullanılması için Veritabanı ve Uygulama Katmanlarında yapılması gereken değişiklikler şunlardır :

  1. Veritabanı Katmanı :

Pool(Havuz) Özelliğinin Kullanıma açılması ve Ayarlanması : DRCP basit bir kullanıma sahip olan API ile yönetilebilmektedir. Her 11g vertabanı anının (instance) varsayılan bir havuzu mevcuttur. Bu havuz aşağıdaki örnekteki gibi ayarlanabilmektedir.

SQL>execute
dbms_connection_pool.configure_pool(null, minsize=>10,
maxsize=>100,
inactivity_timeout=>300,
max_think_time=>600, …);

Yukarıdaki komut ile birlikte varsayılan ayarların değiştirilmesi sağlanabilir. bu komut kullanılmaz ise varsayılan ayarlar geçerli olacaktır.

Aşağıdaki komut ile “Havuz” özelliği başlatılır ve istemciler bu özellikten yararlanmaya başlamaları sağlanmış olur.

SQL>execute dbms_connection_pool.start_pool;

Yukarıda komut çalıştırıldıktan sonra , veritabanı her açılışında bu özellik ile birlikte açılır. eğer bu özelliğin kapatılması istenirse aşağıdaki komut çalıştırılmalıdır.

SQL>execute dbms_connection_pool.stop_pool;

2. Uygulama Katmanı :

Uygulama bağlantılarının DRCP ye yönlendirilmesi :

Bağlantı cümleciklerinde SERVER=POOLED kullanırak DRCP özelliğinin kullanılmak istendiği belirtilir.

    dbserver.deneme.com:1521/finans:POOLEDYada(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=dbserver.deneme.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=finans)(SERVER=POOLED)))

    Bu düzenlemelerden sonra PHP veritabanı bağlantı istekleri Oracle 11G tarafından yönetilen bir havuz tarafından sağlanacak ve otomatik olarak yönetilecektir. Oracle 11G nin sağladığı bu özellik sayesinde PHP gibi betik lisanlarının yüksek hacimli projelerde kullanılabilmesinin yolu açılmış olmaktadır.

    Henüz Yorum Yok »

    Henüz yorum yapılmamış.

    Bu yazıya yapılan yorumlar için RSS beslemeleri. URI'nin geri izlemesini yap.

    Yorum yapın

    WordPress.com'dan blog alın.