• Tidak ada hasil yang ditemukan

PRAKTIKUM BASIS DATA TERDISTRIBUSI MODUL 4 SINKRONISASI DATA

N/A
N/A
Protected

Academic year: 2018

Membagikan "PRAKTIKUM BASIS DATA TERDISTRIBUSI MODUL 4 SINKRONISASI DATA"

Copied!
16
0
0

Teks penuh

(1)

PRAKTIKUM BASIS DATA TERDISTRIBUSI

MODUL 4

SINKRONISASI DATA

Oleh:

ANISA ISTIQOMAH 09560018 ABDURRACHMAN 09560505

KELAS 6C

LABORATORIUM REKAYASA PERANGKAT LUNAK

TEKNIK INFORMATIKA

FAKULTAS TEKNIK

(2)

I. TUJUAN

Mahasiswa mengenal sinkronisasi database diantara database yang terdistribusi

Mahasiswa mampu mengimplementasikan konsep sinkronisasi database pada skema yang homogen (sama), baik menggunakan trigger maupun stored procedure

Mahasiswa mampu mengimplementasikan job_scheduler yang digunakan untuk proses

penjadwalan dari sinkronisasi data antar server

II. APLIKASI YANG DIBUTUHKAN

Aplikasi Oracle XE SQL Developer Aplikasi Oracle Client

III. DASAR TEORI

Sinkronisasi data adalah suatu proses untuk menjaga kosistensi data yang ada pada suatu server dengan data yang berada pada server yang lain. Dalam proses sinkronisasi database, terdapat proses pengkopian data yang disimpan ke dalam suatu table dan skema yang berada pada database yang lain. Dengan adanya proses sinkronisasi memungkinkan suatu data yang berada pada database tertentu akan dapat terupdate secara langsung maupun berkala pada database yang lain. Teknik inilah yang merupakan dasar dari konsep replikasi yang ada pada database.

Dalam suatu kasus database terdistribusi, mekanisme sinkronisasi ini diperlukan untuk mengupdate data yang terdapat pada global schema yang diakses oleh suatu user secara langsung. Data yang diupdate pada global schema merupakan data yang berada pada local schema dari database yang terdistribusi. Antara local schema dengan global schema bisa jadi mempunyai skema yang sama secara struktur datanya (homogeneous), ataupun berbeda (heterogeneous). Dalam kasus heterogeneous schema maupun homogeneous schema, proses sinkronisasi yang dilakukan oleh database harus mampu menyesuaikan struktur data yang ada pada masing-masing database yang berbeda. Hal ini dilakukan untuk menjaga konsistensi data. Selain permasalahan skema yang berbeda, ada beberapa hal yang harus diperhatikan selama proses sinkronisasi database berlangsung, yaitu :

1. Kesamaan antara struktur data yang akan dilakukan proses sinkronisasi

Pada heterogeneous skema, terdapat perbedaan struktur data yang ada pada table tertentu pada database yang berbeda, sehingga proses sinkronisasi harus memperhatikan heterogenitas tersebut. Proses sinkronisasi harus mampu menterjemahkan data yang bisa jadi memiliki tipe data yang berbeda, sehingga bisa disimpan ke dalam table yang baru. Beberapa database menyediakan suatu stored procedure (yang dapat dibuat sendiri) yang bisa digunakan untuk memanipulasi data pada selama proses sinkronisasi berlangsung. Sedangkan pada homogeneous schema di dalam proses sinkronisasi tidak memerlukan proses penterjemahan data dari satu table ke table yang lain yang berada pada database yang berbeda.

2. Frekuensi proses sinkronisasi yang dilakukan.

(3)

terupdate ke table pada database yang berbeda. Sedangkan proses sinkronisasi secara periodik terjadi ketika proses update tersebut dilakukan pada waktu tertentu secara berulang.

3. Situasi kompleks dimana kedua buah database dilakukan proses update data secara bersamaan.

Mekanisme sinkronisasi data pada oracle

Oracle menyediakan suatu mekanisme untuk melakukan sinkronisasi data pada database terdistribusi. Setiap perubahan yang ada pada suatu server database akan berpengaruh kepada server database yang lain, yang terhubung pada suatu sistem database terdistribusi. Mekanisme-mekanisme yang bisa dilakukan untuk proses sinkronisasi pada database oracle antara lain adalah :

1. Menggunakan suatu stored procedure.

Oracle menyediakan suatu fitur stored procedure yang dapat digunakan untuk menangani proses sinkronisasi. Stored procedure ini dapat dibuat oleh database developer sesuai dengan kebutuhan data dan proses sinkronisasi yang berjalan pada dua buah server yang berbeda tersebut

2. Menggunakan trigger

Apabila skema yang ada pada kedua buah table yang berbeda database tersebut sama, dan proses sinkronisasi dilakukan secara realtime, maka dapat digunakan database trigger. Database trigger ini akan memproses segala perubahan data (insert, update, delete) yang terjadi pada suatu table, sehingga secara realtime akan berpengaruh pada table yang lain.

3. Menggunakan oracle replication

Oracle menyediakan suatu fitur replikasi database. Replikasi merupakan suatu proses untuk membuat duplikat atau replika dari suatu table data yang ada pada database 4. Menggunakan oracle stream dan golden gate

Oracle stream merupakan suatu fitur yang ada pada oracle yang memungkinkan seorang user untuk mengontrol informasi, penyebaran data, transaksi, dan event di dalam suatu aliran data antara database yang satu dengan database yang lain.

5. Menggunakan paket DBMS_COMPARISON pada oracle

Merupakan suatu paket yang disediakan oleh database oracle, untuk menyediakan fungsi-fungsi dan prosedur-prosedur yang digunakan untuk sinkronisasi data. Prosedur ini memungkinkan pendeteksian perbedaan data pada dua buah table, dan melakukan proses replikasi apabila diinginkan

procedure menawarkan berbagai keuntungan di dalam mengembangkan, mengintegrasikan, mengamankan, meningkatkan performansi dan alokasi memori dari suatu pengolahan database.

Dengan adanya stored procedure memungkinkan suatu proses pengolahan data di dalam database dilakukan di level database, bukan di aplikasi, sehingga akan mempercepat proses pengolahan data. Diantara keunggulan menggunakan stored procedure ini adalah :

(4)

2. Mengurangi network traffic

3. Menjalankan business logic pada database, dan mengurangi proses pengolahan data pada client

4. Meninggkatkan keamanan pengolahan data, karena ditangani pada level database. 5. Mengurangi SQL injection

Syntax untuk membuat procedure:

Keterangan:

1. OR REPLACE, digunakan untuk membuat procedure yang sudah pernah ada dengan nama yang sama

2. SCHEMA, menspesifikasikan skema dimana procedure tersebut dibuat

3. IN, menspesifikasikan input dari suatu variable yang dijadikan sebagai parameter 4. OUT, menspesifikasikan suatu variable yang mengembalikan hasil ke yang memanggil 5. IN OUT, menspesikan suatu variable yang dijadikan sebagai parameter input,

sekaligus sebagai variable yang mengembalikan suatu nilai dari prosedur

6. NOCOPY, menginstruksikan database utnuk melewatkan argument secepat mungkin. NOCOPY ini secara signifikan mampu meningkatkan performa dan kecepatan ketika suatu nilai dilewatkan ke dalam prosedur melalui suatu argument.

7. Datatype, mendefinisikan tipe data dari argument

8. Pl/sql subprogram, mendeklarasikan PL/SQL subprogram

Contoh pembuatan prosedur:

(5)
(6)

Dari gambar diatas diskenariokan terdapat dua buah database Oracle yaitu di branch dan headquarters yang tehubung dengan database link. Skema database pada server Branch dapat dilihat pada Gambar 2. Sedangkan skema yang terdapat pada server Headquarters dapat dilihat pada Gambar 3.l

Berdasarkan scenario dan rancangan database diatas, selesaikan permasalahan berikut

1. Buatlah table pada database headquarters sesuai dengan rancangan skema di Gambar 3. 2. Buatlah prosedur yang melakukan pemindahan data dari tabel order details yang

ada di branch ke table order details yang ada di skema headquarters. Dimana Sum Quantity berisi jumlah barang yang diorder tiap waktu tertentu (bulan dan tahun tertentu), sedangkan timeID berisi id dari table Time yang merupakan waktu order barang dimana beris bulan dan tahun order. Apabila data sebelumnya yang ada di skema Headquarters sebelumnya sudah ada maka secara otomatis data akan dihapus 3. Buatlah prosedur yang melakukan proses update data dari Products dan Categories yang

ada di skema branch ke table Products dan Categories yang ada di skema headquarters. Prosedur tersebut bisa melakukan update hanya pada data yang paling baru saja, sedangkan data yang lama tidak ikut terupdate (catatan: boleh modifikasi table Products dan Categories di skema Branch, sehingga info data baru dan lama dapat tersimpan) 4. Buatlah job scheduling yang menjalankan prosedur nomer 3 dan nomer 2 diatas

secara berkala setiap 1 hari sekali

IV. HASIL PRATIKUM

1. Login dengan SERVER HEADQUARTER

Table Categories :

(7)

Table customers

Data table customers

(8)

Data table order_details

Table Products

Data table products

(9)

2. PROCEDURE DARI BRANCH KE HEADQUARTER ORDERDETAILS UNTUK SUM QUANTITY, TIMEID SERTA DATA YANG SAMA AKAN DI HAPUS

(10)

3. MEMBUAT TRIGGER DAN PROSEDURE INSER, UPDATE, DELETE

Trigger Categories :

create or replace TRIGGER "CAT"

after insert or update or delete on CATAGORIES for each row

declare

pragma autonomous_transaction; BEGIN

if inserting then begin

INSERT INTO CATTEMP VALUES

(:NEW.CATAGORIESID,:NEW.CATAGORIESNAME,:NEW.DESCRIPTION,'insert');

INSERT INTO CATTEMP VALUES

(:OLD.CATAGORIESID,:NEW.CATAGORIESNAME,:NEW.DESCRIPTION,'update'); COMMIT;

end; end if;

if deleting then begin

INSERT INTO CATTEMP (CATAGORIESID,FLAG) VALUES (:OLD.CATAGORIESID,'delete'); COMMIT;

end; end if; END;

Trigger products : create or replace TRIGGER "PRO"

after insert or update or delete on PRODUCTS for each row

declare

pragma autonomous_transaction; BEGIN

if inserting then begin

INSERT INTO PRODTEMP VALUES

(:NEW.PRODUCTID,:NEW.PRODUCTSNAME,:NEW.SUPPLIERID,:NEW.CATAGORIESID,:NEW.QUAN

INSERT INTO PRODTEMP VALUES

(:OLD.PRODUCTID,:NEW.PRODUCTSNAME,:NEW.SUPPLIERID,:NEW.CATAGORIESID,:NEW.QUAN TITY,:NEW.UNITPRODUCTS,:NEW.UNITSIP,:NEW

(11)

end; end if;

if deleting then begin

INSERT INTO PRODTEMP (PRODUCTID,FLAG) VALUES (:OLD.PRODUCTID,'delete'); COMMIT;

Membuat procedure :

Procedure insert categories : create or replace

procedure cat_in is vr_catagoriesid number;

vr_catagoriesname varchar2(4000); vr_description varchar2(4000); vr_flag varchar2(4000);

cursor cat_in is select * from cattemp where flag='insert'; begin

open cat_in; loop

fetch cat_in into vr_catagoriesid, vr_catagoriesname, vr_description, vr_flag;

insert into categories@dinikeadhis values (vr_catagoriesid, vr_catagoriesname, vr_description); commit;

delete from cattemp where catagoriesid = vr_catagoriesid and flag = 'insert'; commit;

exit when cat_in%NOTFOUND; end loop;

close cat_in; end;

Procedure update categories: create or replace

procedure cat_up is vr_catagoriesid number;

vr_catagoriesname varchar2(4000); vr_description varchar2(4000); vr_flag varchar2(4000);

cursor cat_up is select * from cattemp where flag='update'; begin

open cat_up; loop

fetch cat_up into vr_catagoriesid, vr_catagoriesname, vr_description, vr_flag;

update categories@dinikeadhis set categoryname=vr_catagoriesname, description=vr_description where categoryid=vr_catagoriesid;

commit;

delete from cattemp where catagoriesid = vr_catagoriesid and flag = 'update'; COMMIT;

exit when cat_up%NOTFOUND; end loop;

close cat_up; end;

(12)

create or replace procedure cat_del is vr_catagoriesid number;

cursor cat_del is select catagoriesid from cattemp where flag='delete'; begin

open cat_del; loop

fetch cat_del into vr_catagoriesID;

delete from categories@dinikeadhis where categoryid=vr_catagoriesid; commit;

delete from cattemp where catagoriesid = vr_catagoriesid and flag = 'delete'; COMMIT;

exit when cat_del%NOTFOUND; end loop;

close cat_del; end;

Procedure insert product

create or replace procedure pro_in is vr_productid number;

vr_productsname varchar2(4000); vr_supplierid number;

vr_categories_id number; vr_quantity varchar2(4000);

cursor pro_in is select * from prodtemp where flag='delete'; begin

open pro_in; loop

fetch pro_in into vr_productid, vr_productsname, vr_supplierid, vr_categories_id, vr_quantity, vr_unitproducts, vr_unitsip, vr_unitso,

vr_reorder, vr_flag ;

insert into products@dinikeadhis set productname=vr_productsname, supplierid=vr_supplierid, categoryid=vr_categories_id,

quantityperunit=vr_quantity, unitprice=vr_unitproducts, unitsinstock=vr_unitsip, unitsonorder=vr_unitso, reorderlevel=vr_reorder where

productid=vr_productid; commit;

delete from prodtemp where productid = vr_productid and flag = 'update'; COMMIT;

exit when pro_up%NOTFOUND; end loop;

close pro_up; end;

procedure update product

(13)

procedure pro_up is vr_productid number;

vr_productsname varchar2(4000); vr_supplierid number;

vr_categories_id number; vr_quantity varchar2(4000);

cursor pro_up is select * from prodtemp where flag='update'; begin

open pro_up; loop

fetch pro_up into vr_productid, vr_productsname, vr_supplierid, vr_categories_id, vr_quantity, vr_unitproducts, vr_unitsip, vr_unitso,

vr_reorder, vr_flag ;

update products@dinikeadhis set productname=vr_productsname, supplierid=vr_supplierid, categoryid=vr_categories_id,

quantityperunit=vr_quantity, unitprice=vr_unitproducts, unitsinstock=vr_unitsip, unitsonorder=vr_unitso, reorderlevel=vr_reorder where

productid=vr_productid; commit;

delete from prodtemp where productid = vr_productid and flag = 'update'; COMMIT;

exit when pro_up%NOTFOUND; end loop;

close pro_up; end;

Procedure delete product

create or replace procedure pro_del is vr_productid number;

vr_productsname varchar2(4000); vr_supplierid number;

vr_categories_id number; vr_quantity varchar2(4000);

cursor pro_del is select * from prodtemp where flag='delete'; begin

open pro_del; loop

fetch pro_del into vr_productid, vr_productsname, vr_supplierid, vr_categories_id, vr_quantity, vr_unitproducts, vr_unitsip, vr_unitso,

vr_reorder, vr_flag ;

delete from products@dinikeadhis set productname=vr_productsname, supplierid=vr_supplierid, categoryid=vr_categories_id,

(14)

productid=vr_productid; commit;

delete from prodtemp where productid = vr_productid and flag = 'delete'; COMMIT;

exit when pro_del%NOTFOUND; end loop;

close pro_del; end;

Setelah membuat trigger dan procedure, pastikan semua trigger dan procedure tidak ada yang error, jika ada yang error, perbaiki sesuai message error nya dimana, setelah itu, langkah

(15)

setelah melakukan query diatas, lalu cek table categories pada server headquarter :

Update data table categories dari server branch :

Cek table categories dari server headquarter :

4. MEMBUAT JOB SCHEDULE

(16)

Kemudian kita coba insert ke table categories milik headquarter

Gambar

Table Categories :
Table customers

Referensi

Dokumen terkait

Unsur-unsur internal pembentuk wacana adalah unsur-unsur yang membangun wacana dari dalam wacana tersebut atau biasa disebut dengan unsur intralinguistik

54 tahun 2013 tentang Standar Kompetensi Lulusan untuk satuan Pendidikan Dasar dan Menengah, Peraturan Menteri Pendidikan Nasional RI No 24 Tahun 2006 dan tentang Pelaksanaan PP No 22,

Tempat penelitian dilakukan di salah satu blok di Desa Megu Gede, yakni Blok Masjid Kramat di RT 04, Kecamatan Weru- Kabupaten Cirebon. Tempat ini dipilih

Pajak Kendaraan Bermotor Antara Pemerintah Daerah Dalam Provinsi Bengkulu Tahun 2015;.. Mengingat :

Penelitian ini bertujuan untuk memberikan bukti empiris mengenai pengaruh penggunaan faktor produksi luas lahan, bibit, pupuk, fungisida, insetisida, dan tenaga

Berdasarkan latar belakang yang telah diuraikan diatas, peneliti dapat merumuskan masalah sebagai berikut : “Apakah Pendekatan Saintifik Dengan Penggunaan Media

Berdasarkan dengan latar belakang di atas tentang rasio keuangan, peneliti tertarik untuk meneliti tentang “ Pengaruh Current Ratio (CR), Debt To Equity

Sesuai surat Direktur Jenderal Perbendaharaan Nomor S-40121PB/2012 dijelaskan bahwa PNBP yang dihasilkan dari Pengelolaan Kas Negara agar dibukukan pad a pembukuan SAI KPPN/Kantor