Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docx
Distributed Database Using Oracle
1. Oracle
Distributed Database Using Oracle
Bismillah..
Distributed database : adalah beberapa buah database yang tersimpan dalam
beberapa buah computer tyang berbeda yang kesemuanya terintegrasi menjadi satu,
sehingga suatu aplikasi hanya mengenal sebagai satu buah sistem database saja [Oracle
Documentation].
Perhatikan gambar berikut :
Intinya, beberapa database dalam beberapa komputer yang berbeda dapat kita
hubungkan menjadi satu dengan menggunakan konsep database terdistribusi.
Ada beberapa alasan mengapa data harus didistribusikan :
Data didistribusikan untuk meminimalisasikan biaya komunikasi ataupun waktu respon
Data dapat tersimpan dalam suatu tempat dimana data tersebut diciptakan sehingga
pencipta data dapat melakukan kontrol keamanan data
Data dapat direplikasikan untuk meningkatkan ketersediaan pada suatu event
kesalahan ataupun untuk mengurangi waktu respon
Alasan mengapa tabel-tabel pada database haruslah didistribusikan pada beberapa
komputer yang terhubung ke jaringan adalah adanya dua alasan :
Secara signifikan meningkatkan performansi, performansi meningkat disebabkan
karena penempatan data yang frekuensi aksesnya paling tinggi dekat dengan sisi client
Karena peningkatan suatu sistem, dalam artian bahwa suatu bisnis akan semakin
berkembang melebihi kapasitas aslinya sehingga diperlukan multisistem untuk
mengolah database ini.
2. Distributed Database vs Replication Database
Istilah-istilah untuk database terdistribusi dan database replikasi saling
berhubungan, namun pengertian keduanya sangatlah berbeda.. Dalam sebuah database
terdistribusi, suatu sistem me-manage sebuah salinan dari seluruh data dan obyek-obyek
database yang mendukungnya. Biasanya aplikasi database terdistribusi menggunakan
transaction distributed untuk mengakses kedua-dua data pada database lokal dan remote
dan memodifikasi database global secara waktu-nyata.
Istilah replikasi dikenal sebagai suatu operasi dimana bisa menyalin dan memelihara
obyek-obyek database dalam sejumlah database yang dimiliki suatu sistem distribusi.
Karena replikasi tergantung pada teknologi basisdata distribusi, database replikasi
menawarkan keuntungan aplikasi yang tidak tersedia pada lingkungan yang murni database
terdistribusi. Biasanya, replikasi dipakai untuk meningkatkan kinerja database lokal dan
melindungi aplikasi akibat akses alternatif ke database. Contohnya, suatu aplikasi biasanya
mengakses database lokal daripada mengakses data pada server remote untuk
meminimalkan jaringan traffic dan untuk menghasilkan kinerja yang maksimal. Selanjutnya,
aplikasi tersebut bisa terus berfungsi jika server lokal mengalami kegagalan, tetapi server
lainnya yang telah mereplikasi data tetap berfungsi.
Database terdistribusi ini terdiri dari dua macam jika dilihat dari tipe database yang join
dalam sistem ini:
Homogeneous Distributed DB
Heterogeneous Distributed DB
Homogen Distributed DB berarti database yang terlibat hanya satu macam saja (misal
orale-oracle atau Mysql-Mysql), sedangkan yang Heterogeneous Distributed DB berarti
database yang terlibat lebih dari satu macam (misal oracle-Mysql atau Oracle-PostgreeSQL).
Hampir semua database mendukung konfigurasi secara homogeneous, sedangkan untuk
konfigurasi heterogenous didukung oleh Oracle (untuk saat ini), karena oracle menyediakan
mekanisme untuk terhubung dengan database lain. Mekanisme ini ditangani oleh suatu
agent yang bernama Heterogeneous Service Agent (Oracle emang mantabb, :-P).
Sebelumnya, Oracle telah menyediakan berbagai fasilitas yang cukup lengkap dan
memudahkan. So.. simple is best think if you want to doing something.
Oke, sekarang kita masuk ke bagian yang paling menyenangkan, yaitu bagaimana kita
mengeset database agar terkoneksi dengan database lain. Database yang digunakan dalam
praktek kali ini yaitu Oracle XE (Produk gratis dari oracle). Sebelumnya dokumentasi dan
tatacara instalasi Oracle XE saya include dalam tutorial ini.
3. Dalam praktek kali ini, beberapa konsep yang kita lakukan adalah :
a. Membuat Database Link untuk koneksi database (Homogeneous Distributed DB)
b. Membuat Synonym agar mempermudah akses ke tabel pada remote database
c. Membuat Materialized Views untuk performansi Query
A. Membuat Database Link menggunakan Oracle XE
Konsep utama dari sistem basisdata distribusi adalah database link. Databaselink
adalah suatu koneksi antara dua server database fisik yang memungkingkan client untuk
mengakses datanya sebagai satu database logik
Apa sih keuntungannya kita menggunakan sistem seperti ini?
Aplikasi client tidak langsung terhubung dengan database sumbernya
Aplikasi client tidak tahu lokasi asal data sebenernya
Lebih secure tentunya
Berikut adalah tipe-tipe link pada database :
Perhatikan gambar berikut :
Server_A Server_B
4. Kita asumsikan kita ingin mengkomunikasikan antara Server_Pusat dengan Server_A,
berikut detail informasi antar kedua database tersebut :
a. Server_Pusat
User Schema : server
User Password : server
IP server_pusat : 192.168.0.1
SID : XE
Table : dosen
b. Server_A
User Schema : client
User Password : client
IP server_pusat : 192.168.0.2
SID : XE
Table : mahasiswa
Contoh kasus, si Server_Pusat ingin mengetahui isi database dari si Server_A, dan sebaliknya
so.. kita membuat database link terlebih dahulu dums, (hehe..).
Persiapan
Sebelumnya anda harus melakukan langkah persiapan agar user yang anda telah
buat/ miliki dapat melakukan operasi-operasi pada tutorial ini. Buatlah user dan table pada
tiap-tiap komputer sesuai dengan detail informasi diatas (Langkah-langkah ada pada file
instalasi Oracle). Lalu lakukan langkah berikut pada taiap user yang telah anda buat.
SQL> conn sys/your_password as sysdba;
SQL> GRANT CREATE DATABASE LINK to useranda;
SQL> GRANT CREATE ANY TABLE to useranda;
SQL> GRANT CREATE ANY TYPE to useranda;
1. Konfigurasi di Server_Pusat
a. Masuk ke Go to Database Home Page pada Start Menu.
b. Login sebagai user yang anda buat sebelumnya.
c. Masuklah ke bagian Object Browser , ddan klik tombol Create.
d. Pilih Database Link pada pilihan yang ada.
e. Isikan definisi database link pada setiap item isian yang ada di form.
5. f. Setelah itu klik Next
g. Pada layar berikutnya, jika anda ingin melihat perintah SQL yang
digunakan.untuk pembuatan objek Dtabase Link ini, klik link SQL yang tersedia.
h. Setelah anda mengklik tombol CREATE, halaman berikutnya akan menampilkan
halaman ringkasan objek.
6. i. Dari halaman ini, klik TEST untuk menguji koneksi ke komputer tujuan apakah
telah berhasil atau belum.
j. Kemudian klik tombol FINISH. Jika koneksi anda berhasil, anda akan menerima
konfirmasi tentang hal tersebut. Jika terjadi error ingat kembali konfigurasi yang
anda lakukan sudah benar atau belum (Checking itu perlu, hehe..).
k. Sekarang kita menguji apakah database link yang telah kita buat diatas. (Catatan :
Perintah yang berlaku untuk database link hanya perintah DML saja seperti
Select, Insert, Update, Delete). Link kembali ke halaman HOME, kemudian
masuklah ke bagian SQL > SQL Commands. Kemudian berikan perintah sebagai
berikut :
SELECT * FROM mahasiswa@client;
Atau
INSERT INTO mahasiswa@client values(values_kolom1, values_kolom1,dsb)
Perhatikan apa yang terjadi..!!
Nah, jika semua telah berhasil maka kita telah berhasil nge-remote database
target. Teknik inilah yang mendasari konsep Distributed Database di Oracle.
Anda dapat melakukan hal serupa pada komputer client seperti langkah-langkah
diatas (Mulai dari persiapan*)
2. Membuat Synonym
Dalam Oracle Database, kita bisa membuat synonym agar bisa menyembunyikan
nama database link dari user yang disebut juga dengan lokasi transparensi. Synonym
memungkinkan kita mengakses suatu tabel pada database remote dengan menggunakan
sintaks yang sama saat mengakses database lokal. Synonym sebenarnya adalah sebuah alias
yang bisa berbentuk berbagai macam obyek dari skema obyek. Akibat dari fungsi hanya
sebagai nama alias, tidak dibutuhkan tempat penyimpanan kecuali pada kamus data yang
menyimpan definisinya.
Synonym biasanya dipakai demi keamanan dan kemudahan, fungsi-fungsinya adalah :
menyembunyikan nama dan pemilik dari obyek tersebut
memberi transparensi lokasi untuk obyek-obyek remote dari sebuah database
terdistribusi
menyederhanakan kalimat-kalimat SQL untuk user-user database
memberi akses terbatas yang mirip dengan view-view
7. Synonym sangat berguna manfaatnya untuk database baik yang terdistribusi maupun
yang non-terdistribusi karena bisa menyembunyikan obyek, termasuk lokasinya pada sistem
distribusi. Satu lagi keuntungan dari penggunaan synonym adalah memudahkan eksekusi
kalimat SQL untuk user-user dalam lingkungan sistem database terdistribusi.
Untuk lebih memudahkan mengakses tabel yang berada di remote database
serverberdasar objek database link yang sudahdibuat.Anda dapat membuat objek
sinonim untuk melakukan tersebut. Cara pembuatannya sebagai berikut :
Kali ini kita menggunakan sqlplus saja, yaitu oracle dalam bentuk console (yang
gambanya item, hehe..). Buka Start Menu > Oracle > Run SQL Command Line. Check this one
out.
a. Masuk ke oracle dengan username/schema server
b. Buatlah Synonym yang akan mengakses tabel mahasiswa pada database remote
yang menggunakan database link ke_client
c. Setelah synonym berhasil dibuat (truss..??). Seperti biasa, kita lakukan uji coba
terhadap synonym tersebut, masukkan perintah berikut pada SQL command line
SELECT* FROM data_mahasiswa ;
8. Keterangan :
Query diatas akan menampilkan data-data pada tabel mahasiswa di remote
database yaitu pada database client. Contoh diatas adalah contoh sederhana,
Synonym dapat kita manfaatkan untuk menyingkat query yang kita lakukan pada
sebuah tabel remote. Dengan demikian, kita lebih gampang mengingat query
yang nanti biasa kita lakukan.
3. Replication : Using Materialized Views
Solusi replikasi dari Oracle di antaranya adalah Oracle Stream dan Advanced Replication .
Advanced Replication meliputi Multimaster, Materialized View, dan hybrid (antara
Multimaster replication dan materialized view).
Istilah Materialized View (MV) dipakai Oracle sejak versi 9i. Di versi 8i ke bawah di sebut
sebagai snapshot. MV merupakan View yang dimaterialisasi. View konvensional tidak
menyimpan data, dia hanya menyimpan definisi (nama kolom, table) sementara data secara
fisik masih ada di tabel source-nya. Saya punya contoh 2 view:
1. Query ke suatu tabel di database lain melalui database link (db link)
2. Query yang join ke beberapa tabel
Kalau kedua View itu sering diakses sementara datanya sangat besar, dapat kita bayangkan
betapa beratnya pekerjaan itu. Seandainya hasil view itu ditaruh ke dalam tabel dummy,
dan akses ke view selanjutnya diarahkan ke tabel dummy tersebut, sungguh akan sangat
mempercepat proses (tanpa query melalui database link yang dibatasi oleh bandwidth
network, dan tanpa perlu melakukan join query yang berulang-ulang). Inilah yang mendasari
Oracle untuk mematerialisasi view (semacam membuat tabel dummy untuk view tersebut).
MV dengan database link biasanya digunakan untuk replikasi (replication) dan distribusi
data (distributed Database). Sementara MV dengan multi join (ke banyak tabel) digunakan
untuk data warehouse.
Berikut ini langkah-langkah membuat MV dengan database link. Dalam script ini kata
MATERIALIZED VIEW saya ganti SNAPSHOT, di mana dua terminologi ini mempunyai arti dan
fungsi yang sama.
Persiapan Awal
Informasi mengenai database dan komputer yang ingin kita replikasi sama seperti
konfigurasi sebelumnya, jadi ini cuma meneruskan ajah, so check this one out..
9. Persiapan di Database Source (Server_Pusat)
SQL> conn server/server
SQL> create snapshot log on employees tablespace users;
Keterangan :
Snapshot log menyimpan delta (perubahan) data di tabel source. Dengan adanya log ini,
ketika snapshot di-refresh, maka snapshot hanya mengambil delta yang ada di source
tersebut. Inilah yang disebut denganrefresh fast. Kalau tidak menggunakan snapshot log,
kita tidak bisa melakukanrefresh fast, dengan kata lain ketika refresh maka yang dilakukan
adalah melakukan query ulang ke tabel source.
Persiapan di Database tempat Snapshot
1. Siapkan tablespace untuk menyimpan data milik schema SNAPSHOT_USER (Login
sebagai system)
Create tablespace snapshot_tbs
datafile '/data/snapshot_tbs01.dbf' size 8192M;
alter tablespace snapshot_tbs add
datafile '/data/snapshot_tbs02.dbf' size 8192M;
2. Buat user
Berhubung kita udah punya user sebelumnya kita skip aja bagian inih..
3. Buat TNS Names. Bisa pakai netca atau manual dengam menambahkan entry berikut
di file $ORACLE_HOME/network/admin/tnsnames.ora
Ini udah kita lakukan ketika meng-konfigurasi database link
4. Buat database link
Ini juga udah kita buat di langkah sebelumnya
5. Buat Snapshot
SQL> conn SNAPSHOT_USER
SQL> create snapshot employees
refresh fast
start with sysdate next trunc(sysdate + 1)
as select * from employees@ke_server;
Snapshot di atas akan direfresh mulai nanti malam jam 12,trunc(sysdate + 1).
Pekerjaan refresh ini dilakukan oleh job Oracle, lihat jobnya di view USER_JOBS atau
DBA_JOBS. Dengan DBMS_JOB kita bisa merubah schedule refresh.Secara fisik,
snapshot TBLMV mempunyai tabel dengan name TBLMV (disimpan di default
tablespace: snapshot_tbs).
10. Alhamdulillah..
Akhirnya selesai juga nulis nih tutorial, semoga secuil ilmu yang saya dapatkan ini
berguna bagi yang membaca dan yang mem-praktek-in..
Regards
Hari Setiaji