Daily Archiv: Saturday - 20 October 2012

Pengalamanku menggunakan Interbase

Yang aku suka dari Interbase …

(Ini hanya pengalaman pribadi menggunakan Interbase, bukan berarti database lain tidak bisa melakukan hal yg sama … CMIIW)

1. Footprint kecil, mudah instalasi
+/- 2MB untuk Server, +/- 500KB untuk client

2. Dual mode user security .. interbase 7.5 keatas
User bisa di server (seperti kebanyakan db client server)
User bisa embedded di database, sehingga mudah kalo misalnya hrs install ulang server, juga aman dan mudah pengaturannya karena tidak campur dengan user database lain, beda database bisa mempunyai nama user sama dengan password dan kewenangan berbeda.

3. User define function
Kita bisa dengan leluasa membuat fungsi sendiri menggunakan delphi untuk membuat fungsi2 sql yg tidak disediakan secara bulitin

4. Shadow
Kita bisa membuat realtime duplicate database pada folder/drive/harddisk lain dalam satu komputer, seperti teknologi RAID, misalnya tiba2 harddisk jebol/gak kebaca, kita tinggal install convert shadow ke main database. Jumlah shadow tidak dibatasi, dan proses shadow atau duplikasi berjalan otomatis tanpa perlu program lain seperti scheduller dll.

5. Journaling … interbase 2007 keatas
Realtime logging yg bermanfaat untuk point to point recovery (mirip system restore windows), kita bisa rollback ke cek point yg tersedia, berguna kalo misalnya karena gak sengaja atau ada sabotase yang merubah atau menghapus data (seharusnya tidak terjadi kalo pengaman point (2) sudah bagus).

6. Online dump / Incremental backup … interbase 2007 keatas
Kita bisa membuat backup secara incremental berdasarkan jadwal
misalnya per 10 menit, per 1 jam, per 1 hari, dsb
artinya mengupdate backup yang ada bukan overwrite sehingga proses backup lebih cepat.
“Proses backup bisa dilakukan walaupun database sedang dipakai”

7. Konsumsi memory untuk alokasi pemakaian database bisa kita atur
Misalnya memory server 4GB kita bisa alokasikan untuk database max 1GB
sehingga jika database kita kurang dari 1GB, pada saat query server akan membaca data yg dimemory bukan di disk sehingga proses lebih cepat.

8. Event alert
kita bisa mengirim pesan ke seluruh client/atau client yang diinginkan, pesan bisa juga di picu oleh trigger/prosedur, tidak perlu menggunakan timer yg secara berkala membaca database

contoh pemakaian :
Misalnya kita ingin pada saat stock untuk barang tertentu, dibawah limit akan ada pesan untuk komputer client bagian pembelian.
Misalnya kita ingin ada pemberitahuan ke komputer manajer mana kala ada entry yang perlu diotorisasi.

9. Posisi data bisa diletakkan di folder/drive mana saja asal dalam komputer server,
data tidak perlu disharing, hak akses bisa diset hanya “SYSTEM”, sehingga aman dari virus atau di otak-atik orang yang tidak bertanggungjawab.

Untuk pengamanan maksimum kita bisa menaruh data di harddisk/partisi tertentu dengan mengeset security hanya bisa dibaca SYSTEM dan user kita, sementara user lain termasuk Administrator dibuang, firewall juga ditutup, hanya port tertentu (termasuk port interbase 3050) yang dibuka.

10. Perubahan metadata, misalnya penambahan field, atau memperbesar ukuran field, kecuali menghapus field bisa dilakukan sekalipun data sedang dipakai.

Ini akan membantu sekali bila dipakai di klien yg super sibuk, tidak memungkinkan untuk off saat kita mau update database.

11. Spanning data
Misalnya kita mempunyai HDD 60GB, awal penggunaan data masih kecil sehingga HDD 60GB lebih dari cukup, lama2 data berkembang sehingga HDD 60GB tidak mencukupi lagi.
Biasanya bila mengalami hal itu kita ganti hdd yg lebih besar, kita copy database ke HDD yang baru, ini akan membutuhkan waktu yg lama bila datanya cukup besar.
Dengan interbase kita bisa menambahkan HDD baru tanpa membuang HDD lama, kita cukup mengconfigurasi agar data dilanjutkan di HDD baru bila ukuran data sudah mencapai batas yang kita tentukan (bisa menghemat waktu dan biaya).

12. Mendukung replikasi/sinkronisasi data (membutuhkan 3 party tool seperti IBReplicator)
Misalnya gini ada kantor pusat ,9 kantor cabang, dan 1 server backup (semua beda lokasi)
Server pusat berisi data pusat plus seluruh data cabang
Server cabang hanya berisi cabang yang bersangkutan
Server backup berisi 100% identik dengan server pusat

Dengan Interbase+IBReplicator kita bisa dengan mudah melakukan sinkronisasi data secara berkala (mungkin tiap 5-30 menit, tergantung kecepatan koneksi yg dipakai).

Dengan fitur Two Phase Commit, maka akurasi data akan tetap terjamin walaupun misalnya ada ganguan koneksi (putus).

Sinkronisasi data menggunakan table logging sehingga proses sinkronisasi dapat berjalan dengan cepat karena berdasar pada table logging (yg diisi oleh trigger), tidak perlu membandingkan database/table record demi record.

Segala perubahan insert, update, delete otomatis akan di sinkronisasi

Sinkronisasi bisa berlaku 2 arah, perubahan pusat update ke cabang dan sebaliknya.

13. Global temporary table (GTT)
Global temporary table merupakan sebuah table yang dipakai bersama2 namun isinya hanya dapat dilihat oleh sesion yg aktif, tidak dapat dilihat user lain walaupun dalam satu komputer dan login menggunakan user yang sama.

Saya biasanya menggunakan Global temporary table ini untuk menyimpan parameter seperti periode laporan dll, bermanfaat untuk aplikasi yang menggunakan periodik seperti program accounting.

contoh :

misalnya saya bikin GTT dengan nama session yg mempunyai field tgl_awal dan tgl_akhir

setelah login, atau setelah memilih periode aktif ..

insert into session(tgl_awal,tgl_akhir) values ('01.07.2012','31.07.2012');

nanti querynya tinggal ..

select t.id,t.tgl,t.kode,..... 
from trans t
left join session s on (t.tgl between s.tgl_awal and s.tgl_akhir)

lebih mudah kalo di bikin view misalnya dengan nama vw_trans_aktif

jadi manggil di delphinya tinggal select * from vw_trans aktif gak perlu memasukkan parameter setiap kali query

…. dan masih banyak lagi ….

Mengenal Embedded User Authentication dalam Interbase

Embedded User Authentication merupakan fitur yang ada sejak Interbase 7.5, yaitu management user yang dikemas menyatu dalam database.

Pada Interbase versi sebelumnya atau pada saudara sepupunya Firebird (setidaknya sampai versi 2.5 saat dokumen ini ditulis), management user masih menempel di Interbase Server.

Sejak Interbase versi 7.5 keatas kita diberi keleluasaan untuk memilih apakah management usernya tetap nempel di Server atau menyatu di database.

Dengan menggunakan Embedded User Authentication akan diperoleh beberapa kelebihan diantaranya:

Data akan tetap aman seandainya dicuri orang selama sang pencuri tersebut tidak tahu master passwordnya (SYSDBA), berbeda jika user nempel di Server, dengan install ulang server berarti master password akan kembali ke default.
Tidak perlu kerjaan tambahan untuk mengatur ulang daftar user jika suatu ketika server jebol dan harus install ulang
Kita dapat mengeset orang dengan login yang sama namun dengan password yang berbeda untuk aplikasi/database yang berbeda pada server yang sama.

Untuk membuat database yang support Embedded User Authentication cukup dengan menambahkan klausa “with admin option”

contoh membuat database dengan tool isql …

C:\>cd ib2007\bin
C:\ib2007\bin>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> create database 'c:\data_eua.ib' user 'sysdba' password 'masterkey' with admin option;
SQL> quit;

selanjutnya untuk menambahkan user …

C:\ib2007\bin>isql c:\DATA_EUA.IB -u sysdba -p masterkey
Database:  c:\DATA_EUA.IB, User: sysdba
SQL> create user bagong set password '123';
SQL> create user gareng set password '456';
SQL> create user semar set password '789';
SQL> quit;

untuk lebih aman kita dapat mengganti master passwordnya …

C:\ib2007\bin>isql c:\DATA_EUA.IB -u sysdba -p masterkey
Database:  c:\DATA_EUA.IB, User: sysdba
SQL> alter user sysdba set password 'gatutkoco';
SQL> quit;

Bila kita masuk lagi dengan password standar akan terjadi error ..

C:\ib2007\bin>isql c:\DATA_EUA.IB -u sysdba -p masterkey
Statement failed, SQLCODE = -902
Your user name and password are not defined. Ask your database administrator to
set up an InterBase login.
Use CONNECT or CREATE DATABASE to specify a database
SQL>

=== YANG PERLU DIINGAT, INTERBASE TIDAK MENYEDIAKAN TOOL UNTUK MERESET PASSWORDNYA JIKA LUPA ==

Buatlah password yang mudah diingat anda sendiri namun susah diingat orang lain.

Seperti buah simalakama, namun .. berdasarkan survey ke beberapa klien, sebagian besar klien lebih memilih mengentry ulang datanya daripada data penting perusahaan jatuh ke tangan pihak lain yang tidak bertanggungjawab.