Comunity

Wizdom

Wednesday, December 28, 2011

Mengatur Lebih dari Satu Koneksi Database pada Framework Code Igniter

Terkadang dalam pembuatan suatu software, arsitektur database didesain untuk dikoneksikan kepada puluhan database yang mempunyai fungi yang berbeda.
Terkadang dalam pembuatan suatu software, arsitektur database didesain untuk dikoneksikan kepada puluhan database yang mempunyai fungi yang berbeda. Tantangan bagi programmer adalah pengaturan koneksi yang rapi sehingga koneksi database dengan software menjadi tidak tumpang tindih. Terlebih software yang dibangun menggunakan suatu framework seperti framwork aplikasi web Codeigniter. Bagaimanakah mengatur koneksi kedalam puluhan database dengan aplikasi web berbasis codeigniter ?

Bagaimana Solusinya?

Dalam codeigniter terdapat fungsi pengaturan active_group sebagai respresentasi dari koneksi database mana yang diaktifkan pada detik tertentu. Pengaturannya dapat ditemukan pada bagian config/database.php
  • Buka CI_Home/application/config/database.php
  • Lakukan duplikasi kode dibawah ini sebanyak database yang ingin dikoneksikan
$db[‘default’][‘hostname’] = “localhost”;
$db[‘default’][‘username’] = “root”;
$db[‘default’][‘password’] = “”;
$db[‘default’][‘database’] = “database_name”;
$db[‘default’][‘dbdriver’] = “mysql”;
$db[‘default’][‘dbprefix’] = “”;
$db[‘default’][‘pconnect’] = TRUE;
$db[‘default’][‘db_debug’] = FALSE;
$db[‘default’][‘cache_on’] = FALSE;
$db[‘default’][‘cachedir’] = “”;
$db[‘default’][‘char_set’] = “utf8”;
$db[‘default’][‘dbcollat’] = “utf8_general_ci”;
$db[‘default’][‘swap_pre’] = “”;
$db[‘default’][‘autoinit’] = TRUE;
$db[‘default’][‘stricton’] = FALSE;
  • Untuk setiap konfigurasi kepada database yang akan dikoneksikan, rubahlah variable “default” menjadi variable yang sesuai dengan keinginan, sehingga kodenya sebagai berikut(penulis membuat dua koneksi baru saja)
$db[‘default’][‘hostname’] = “localhost”;
$db[‘default’][‘username’] = “root”;
$db[‘default’][‘password’] = “”;
$db[‘default’][‘database’] = “database_name”;
$db[‘default’][‘dbdriver’] = “mysql”;
$db[‘default’][‘dbprefix’] = “”;
$db[‘default’][‘pconnect’] = TRUE;
$db[‘default’][‘db_debug’] = FALSE;
$db[‘default’][‘cache_on’] = FALSE;
$db[‘default’][‘cachedir’] = “”;
$db[‘default’][‘char_set’] = “utf8”;
$db[‘default’][‘dbcollat’] = “utf8_general_ci”;
$db[‘default’][‘swap_pre’] = “”;
$db[‘default’][‘autoinit’] = TRUE;
$db[‘default’][‘stricton’] = FALSE;
$db[‘alternate’][‘hostname’] = “localhost”;
$db[‘alternate’][‘username’] = “root”;
$db[‘alternate’][‘password’] = “”;
$db[‘alternate’][‘database’] = “alternate_database_name”;
$db[‘alternate’][‘dbdriver’] = “mysql”;
$db[‘alternate’][‘dbprefix’] = “”;
$db[‘alternate’][‘pconnect’] = TRUE;
$db[‘alternate’][‘db_debug’] = FALSE;
$db[‘alternate’][‘cache_on’] = FALSE;
$db[‘alternate’][‘cachedir’] = “”;
$db[‘alternate’][‘char_set’] = “utf8”;
$db[‘alternate’][‘dbcollat’] = “utf8_general_ci”;
$db[‘alternate’][‘swap_pre’] = “”;
$db[‘alternate’][‘autoinit’] = TRUE;
$db[‘alternate’][‘stricton’] = FALSE;
$db[‘alternate2’][‘hostname’] = “localhost”;
$db[‘alternate2’][‘username’] = “root”;
$db[‘alternate2’][‘password’] = “”;
$db[‘alternate2’][‘database’] = “alternate2_database_name”;
$db[‘alternate2’][‘dbdriver’] = “mysql”;
$db[‘alternate2’][‘dbprefix’] = “”;
$db[‘alternate2’][‘pconnect’] = TRUE;
$db[‘alternate2’][‘db_debug’] = FALSE;
$db[‘alternate2’][‘cache_on’] = FALSE;
$db[‘alternate2’][‘cachedir’] = “”;
$db[‘alternate2’][‘char_set’] = “utf8”;
$db[‘alternate2’][‘dbcollat’] = “utf8_general_ci”;
$db[‘alternate2’][‘swap_pre’] = “”;
$db[‘alternate2’][‘autoinit’] = TRUE;
$db[‘alternate2’][‘stricton’] = FALSE;
  • Untuk mengaktifkan salah satu koneksi yang telah dibuat, gunakan cukup tulis $this->load->database(‘nama_koneksi’) pada setiap konstruktor model yang akan menggunakan database yang dikoneksikan menggunakan ini. Contoh :

  • $this->db = $this->load->database(‘alternate’,true);
    • Sehingga konesikan tersebut bisa dipanggil dengan bentuk :
    $this->db->from(‘table_name’)
    • Jika ingin mengkoneksikan lebih dari satu dabase dala suatu model, maka tinggal buat seperti contoh dibawah ini :
    $db_alternate = $this->load->database(‘alternate’,true);
    $db_alternate2 = $this->load->database(‘alternate2’,true);
    • Dan koneksi dapat digunakan dalam bentuk seperti :
    $db_alternate->from(‘table_name’) dan $db_alternate2->from(‘table_name’)
    Selamat mencoba. :-)
    Di sadur dari http://www.arfatech.co.id


    No comments:

    Post a Comment

    Web Mantap

    article kategori

    Article Categories