Gilang Yanuar Wirana (125150200111037) Az Zahra Rahma Putri Afifa (125150200111064) Mochammad Imam Syaroni (125150201111066) Anggita Rezky R. (125150207111010) ABD-KELAS C-03
1. DATA ROW COMPRESSION Secara umum kompresi data (Data Compression) diartikan dengan proses mengubah ukuran suatu file menjadi file yang ukurannya lebih kecil. Berdasarkan definisi di atas, kompresi data dapat dibagi menjadi 2 jenis, yaitu : a. Lossy Data Compression Lossy Data Compression memiliki kelebihan dalam hal kecepatan dan rasio kompresi yang lebih besar, tetapi sebagian data akan hilang (loss) pada saat dilakukan proses uncompression. Salah satu contoh jenis kompresi ini digunakan untuk mengubah file audio menjadi mp3. b. Lossless Data Compression Sebaliknya Lossless Data Compression mensyaratkan bahwa data hasil rekontruksi akan persis sama dengan data yang terkompress.Terdapat 2 teknik kompresi yang umum digunakan dalam Lossless Data Compression yaitu : - Berdasarkan pada prinsip data yang sering muncul akan dikodekan dengan lebih sedikit bit. Contoh : Huffman Coding - Berdasarkan pada permodelan statistik untuk data teks. Misalkan dengan membangun suatu kamus (dictionary) dari simbol-simbol yang sering muncul pada suatu blok dan kemudian hanya akan diacu (reference) dengan menggunakan pointer. Contoh : LZ (Lempel-Ziv) algorithm. Dalam kompresi pada database, hal pertama yang harus dipahami bahwa tujuan utama dari kompresi data pada database bukan untuk mendapatkan rasio kompresi yang maksimum, tetapi untuk mendapatkan keimbangan terbaik antara rasio kompresi yang didapat dengan cost dari proses kompresi/dekompresi. Sehingga kompresi yang didapat akan bergantung pada distribusi dan skema data yang ada. Contoh membuat tabel menggunakan Data Compression : CREATE TABLEPELANGGAN(kd_plgVARCHAR(5) NOT NULLPRIMARY KEY, nm_plgVARCHAR(25) NULL, alamatVARCHAR(25) NULL,tgl_joinDATE NULL ) WITH(DATA_COMPRESSION=PAGE)
Kelompok 2 Dewi Fajarshanti Firdaus P. (125150200111035) Gilang Yanuar Wirana (125150200111037) Az Zahra Rahma Putri Afifa (125150200111064) Mochammad Imam Syaroni (125150201111066) Anggita Rezky R. (125150207111010) ABD-KELAS C-03
2. CONSTRAINT 2.1 Check Constraint CHECK digunakan untuk mendefinisikan suatu kondisi yang harus dipenuhi oleh tiap baris data dalam table. Contoh : ALTER TABLE employee ADD CONSTRAINT emp_deptno_ck CHECK (deptno BETWEEN 1 AND 99); Constraint CHECK diatas akan ditambahkan pada table yang telah dibuat sebelumnya dalam hal ini table EMPLOYEE. Kondisi yang harus dipenuhi pada CHECK adalah bahwa nilai dari kolom deptno berada antara 1 dan 99.
2.2 Unique Constraint UNIQUE mendefinisikan suatu kolom menjadi bersifat unik. Kolom yang bersifat unik harus didefinisikan NOT NULL. Sebuah tabel dapat memiliki berbagai unique constraints , dengan paling banyak satu unique constraints yang didefiniskan sebagai primary key. Sebuah tabel tidak boleh memiliki lebih dari satu unique constraints pada kolom yang sama. Contoh : CREATE TABLE department ( deptno NUMBER (2), dname VARCHAR (20), loc VARCHAR (25), CONSTRAINT dept_name_uk UNIQUE (dname)) ; Pada syntax diatas DNAME yang menjadi unique name pada table DEPARTMENT.
2.3 Foreign Key Didefinisikan pada suatu kolom yang ada pada suatu table, dimana kolom tersebut juga dimiliki oleh table yang lain sebagai suatu PRIMARY KEY. Contoh membuat table dengan foreign key : CREATE TABLE employee ( empno NUMBER (4), Kelompok 2 Dewi Fajarshanti Firdaus P. (125150200111035) Gilang Yanuar Wirana (125150200111037) Az Zahra Rahma Putri Afifa (125150200111064) Mochammad Imam Syaroni (125150201111066) Anggita Rezky R. (125150207111010) ABD-KELAS C-03
ename VARCHAR (30) NOT NULL, job VARCHAR (25), deptno NUMBER (7, 2) NOT NULL, CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno) REFERENCES department (deptno)); Syntax diatas berarti deptno pada table employee merupakan referensi dari deptno yang dimiliki oleh table department.
3. APPLICATION OBJECT 3.1 Stored Procedure Stored procedure adalah prosedur (seperti subprogram dalam bahasa pemrograman) yang disimpan di dalam database. Dalam Oracle, dapat ditulis dalam PL / SQL atau Java Dalam SQL Server, dapat ditulis dalam Transact-SQL atau CLR MySQL mendukung dua jenis rutin (subprogram): stored procedure yang dapat dipanggil, fungsi yang menghasilkan nilai yang dapat dipakai dalam statemen SQL lain. Stored Procedure yang disimpan dapat dipanggil dari Program yang ditulis dalam bahasa standar, misalnya: Java, C # Scripting bahasa, misalnya: JavaScript, VBScript SQL command prompt, misalnya: sqlcmd, SQL Plus, Query Analyzer Contoh Statemen yang menciptakan strored procedure : CREATE PROCEDURE procedure1 /* nama */ (IN parameter1 INTEGER) /* parameter */ BEGIN /* awal blok */ DECLARE variable1 CHAR(10); /* variabel */ IF parameter1 = 17 THEN /* awal IF */ SET variable1 = 'burung'; /* assignment */ ELSE SET variable1 = 'kelelawar'; /* assignment */ END IF; /* akhir IF */ INSERT INTO table1 VALUES (variable1); /* statement */ END /* akhir blok */ Kelompok 2 Dewi Fajarshanti Firdaus P. (125150200111035) Gilang Yanuar Wirana (125150200111037) Az Zahra Rahma Putri Afifa (125150200111064) Mochammad Imam Syaroni (125150201111066) Anggita Rezky R. (125150207111010) ABD-KELAS C-03
Dengan stored procedure eksekusi menjadi cepat. Tidak ada kompilasi. Peningkatan kecepatan datang dari reduksi lalu-lintas jaringan. Jika ada pekerjaan pengecekan berulang, looping, multiple statement, dikerjakan dengan pemanggilan tunggal ke prosedur yang telah disimpan ke server.Stored procedure adalah komponen. Andaikan aplikasi kemudian ditulis dalam bahasa berbeda, tidak ada masalah, karena logika berada didalam database bukan dalam aplikasi.
3.2 User Defined Function User define function merupakan subroutine yang digunakan untuk membuat transact-SQL, dimana kode user define function tersebut berbentuk encapsulation code, dan kode tersebut dapat digunakan digunakan untuk membangun transact-SQL lain (reusable). User define function ini berfungsi hampir sama dengan stored procedure. Perbedaannya adalah jika stored procedure tidak bisa digunakan untuk menyimpan hasil proses, sedangkan pada user define function hasil dari proses dapat dikembalikan berupa sebuah nilai atau table. Jika anda sudah familiar dengan bahasa pemrograman Visual Basic, maka perbedaan user define function dan stored procedure mirip seperti perbedaan antara Function dan Sub. User define function dibuat dengan perintah CREATE FUNCTION, dimodifikasi dengan ALTER FUNCTION atau di hapus dengan perintah DROP FUNCTION. Tipe User Define Function terbagi menjadi dua tipe yaitu: a. Scalar function Scalar function adalah sebuah user define function yang mengembalikan sebuah nilai dengan satu tipe data scalar. Semua tipe data yang ada pada SQL Server 2000 dapat digunakan untuk menampung hasil pengembalian proses, kecuali tipe data text, ntext, image, timestamp dan cursor. Bagian dari function ini harus berada dalam blok BEGINEND. Berikut ini contoh membuat scalar function yang mengembalikan nilai dengan tipe data decimal
Kelompok 2 Dewi Fajarshanti Firdaus P. (125150200111035) Gilang Yanuar Wirana (125150200111037) Az Zahra Rahma Putri Afifa (125150200111064) Mochammad Imam Syaroni (125150201111066) Anggita Rezky R. (125150207111010) ABD-KELAS C-03
CREATE FUNCTION [ owner_name. ] function_name ( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] ) RETURNS scalar_return_data_type [ WITH < function_option> [ [,] ...n] ] [ AS ] BEGIN function_body RETURN scalar_expression END
Contoh scalar function : CREATE FUNCTION CubicVolume -- Input dimensions in centimeters (@CubeLength decimal(4,1), @CubeWidth decimal(4,1), @CubeHeight decimal(4,1) ) RETURNS decimal(12,3) -- Cubic Centimeters. AS BEGIN RETURN ( @CubeLength * @CubeWidth * @CubeHeight ) END
b. Table valued function Jika Scalar function dapat mengembalikan sebuah nilai dengan tipe data tertentu, maka table value function dapat mengembalikan nilai berupa table. Table valued function ini dibedakan menjadi dua jenis yaitu Inline table valued function dan multistatement table valued function. Inline valued function dapat digunakan jika hasil yang akan dikembalikan merupakan hasil dari perintah SELECT. Bagian dari deklarasi inline function tidak didalam blok BEGINEND. Fungsi Inline table valued function ini mirip seperti view, perbedaanya adalah jika pada view tidak bisa menggunakan parameter, sedangkan pada function diijinkan mengggunaan parameter. Kelompok 2 Dewi Fajarshanti Firdaus P. (125150200111035) Gilang Yanuar Wirana (125150200111037) Az Zahra Rahma Putri Afifa (125150200111064) Mochammad Imam Syaroni (125150201111066) Anggita Rezky R. (125150207111010) ABD-KELAS C-03
Contoh Table Valued Function CREATE FUNCTION [dbo].[test] ( @X INT, @Y INT ) RETURNS INT AS BEGIN RETURN @X + @Y END GO Jalankan script diatas, dan kalo berhasil akan muncul pesan : Command(s) completed successfully, dan hasilnya dapat dilihat di dalam folder Programmability > Functions > Scalar-valued Functions.Untuk menjalankannya, tinggal memanggil fungsi tersebut dengan paramater- parameter yang dikirim : USE [tempdb] GO Select dbo.test(4,5) as Hasil
3.3 Trigger Trigger adalah blok PL/SQL atau prosedur yang berhubungan dengan table, view, skema atau database yang dijalankan secara implicit pada saat terjadi sebuah event. Trigger merupakan store procedure yang dijalankan secara automatis saat user melakukan modifikasi data pada tabel. Modifikasi data yang dilakukan pada tabel yaitu berupa perintah INSERT, UPDATE, dan DELETE. INSERT , UPDATE dan DELETE bisa digabung jadi satu trigger yang dinamakan Multiple Trigger. Tipe dari trigger adalah : Application trigger : diaktifkan pada saat terjadi event yang berhubungan dengan sebuah aplikasi Database trigger : diaktifkan pada saat terjadi event yang berhubungan dengan data (seperti operasi DML) atau event yang berhubungan dengan sistem (semisal logon atau shutdown) yang terjadi pada sebuah skema atau database. Trigger perlu dibuat pada saat membentuk sebuah aksi tertentu terhadap suatu event dan memusatkan operasi global . Trigger tidak perlu dibuat, jika fungsionalitas Kelompok 2 Dewi Fajarshanti Firdaus P. (125150200111035) Gilang Yanuar Wirana (125150200111037) Az Zahra Rahma Putri Afifa (125150200111064) Mochammad Imam Syaroni (125150201111066) Anggita Rezky R. (125150207111010) ABD-KELAS C-03
yang diperlukan suatu ada pada Oracle server dan duplikat atau sama dengan fungsi trigger yang lain.Sintak penulisan dari database trigger, berisi komponen berikut : 1. Trigger timing : a. Untuk tabel : BEFORE, AFTER b. Untuk view : INSTEAD OF 2. Trigger event : INSERT, UPDATE atau DELETE 3. Nama tabel : yaitu nama tabel atau view yang berhubungan dengan trigger 4. Tipe trigger : Baris atau Pernyataan (statement) 5. Klausa WHEN : untuk kondisi pembatasan 6. Trigger body : bagian prosedur yang dituliskan pada trigger
Trigger timing adalah waktu kapan trigger diaktifkan. Ada tiga macam trigger timing, yaitu : BEFORE : trigger dijalankan sebelum DML event pada tabel AFTER : trigger dijalankan setelah DML event pada tabel INSTEAD OF : trigger dijalankan pada sebuah view. Trigger event ada 3 kemungkinan : INSERT, UPDATE atau DELETE.Pada saat trigger event UPDATE, kita dapat memasukkan daftar kolom untuk mengidentifikasi kolom mana yang berubah untuk mengaktifkan sebuah trigger (contoh : UPDATE OF salary ... ). Jika tidak ditentukan, maka perubahannya akan berlaku untuk semua kolom pada semua baris.Tipe trigger ada 2 macam, yaitu : Statement : trigger dijalankan sekali saja pada saat terjadi sebuah event. Statement trigger juga dijalankan sekali, meskipun tidak ada satupun baris yang dipengaruhi oleh event yang terjadi. Row : trigger dijalankan pada setiap baris yang dipengaruhi oleh terjadinya sebuah event. Row trigger tidak dijalankan jika event dari trigger tidak berpengaruh pada satu baris pun. Trigger body mendefinisikan tindakan yang perlu dikerjakan pada saat terjadinya event yang mengakibatkan sebuah trigger menjadi aktif. Kelompok 2 Dewi Fajarshanti Firdaus P. (125150200111035) Gilang Yanuar Wirana (125150200111037) Az Zahra Rahma Putri Afifa (125150200111064) Mochammad Imam Syaroni (125150201111066) Anggita Rezky R. (125150207111010) ABD-KELAS C-03
Contoh Penggunaan : Trigger After Delete Berikut adalah contoh penggunaan trigger untuk event setelah penghapusan (AFTER DELETE) pada table "tr_penjualan" - database phi_minimart. Langkah yang akan kita lakukan adalah sebagai berikut : 1. Kita akan membuat satu table audit dengan nama "tr_penjualan_hapus" yang berisi row-row yang dihapus dari table "tr_penjualan" dengan tambahan dua field, yaitu tanggal penghapusan (tgl_perubahan) dan user MySQL yang melakukan hal tersebut (nama_user). Berikut adalah perintahnya : USE phi_minimart; CREATE TABLE `tr_penjualan_hapus` LIKE `tr_penjualan`; ALTER TABLE `tr_penjualan_hapus` ADD (`tgl_perubahan` DATETIME,`nama_user` VARCHAR(200)); 2. Tahap berikutnya adalah membuat trigger yang akan melakukan populasi data yang dihapus dari "tr_penjualan" ke table "tr_penjualan_hapus". Berikut adalah perintahnya : DELIMITER | CREATE TRIGGER hapus_tr_penjualan AFTER DELETE ON tr_penjualan FOR EACH ROW BEGIN INSERT INTO tr_penjualan_hapus (tgl_transaksi, kode_cabang, kode_kasir, kode_item, kode_produk, jumlah_pembelian, tgl_perubahan, nama_user) VALUES (OLD.tgl_transaksi, OLD.kode_cabang, OLD.kode_kasir, OLD.kode_item, OLD.kode_produk, OLD.jumlah_pembelian,SYSDATE(), CURRENT_USER); END; | DELIMITER ; 3. Setelah trigger di atas kita buat, sekarang saatnya kita melakukan pengujian. Coba hapus tiga row data dari table "tr_penjualan" dan lihat efeknya di table "tr_penjualan_hapus". Jalankan perintah berikut :
Kelompok 2 Dewi Fajarshanti Firdaus P. (125150200111035) Gilang Yanuar Wirana (125150200111037) Az Zahra Rahma Putri Afifa (125150200111064) Mochammad Imam Syaroni (125150201111066) Anggita Rezky R. (125150207111010) ABD-KELAS C-03
DELETE FROM tr_penjualan LIMIT 3; SELECT * FROM tr_penjualan_hapus;
4. Terlihat pada gambar di atas 3 row yang dihapus telah "pindah" ke table "tr_penjualan_hapus" dengan tambahan informasi waktu penghapusan dan user yang menghapus. 5. Selesai.
4. FEDERATED DATABASE OBJECT Sistem federasi adalah tipe khusus dari sistem manajemen basis data terdistribusi. Sebuah sistem federasi terdiri dari sebuah DB2 yang beroperasi sebagai server federasi, database yang bertindak sebagai federasi database, satu atau lebih data sumber, dan klien (pengguna dan aplikasi) yang mengakses sumber database dan data. 4.1 Wrappers Wrappers merupakan mekanisme di mana federasi database berinteraksi dengan sumber data. Federasi database menggunakan rutinitas yang tersimpan di library yang disebut modul wrapper untuk mengimplementasikan wrapper. Rutinitas ini memungkinkan federasi database untuk melakukan operasi seperti koneksi ke sumber data dan mengambil data dari iteratif itu. Biasanya, pemilik Federasi menggunakan statement CREATE WRAPPER untuk register wrapper dalam federasi database. Anda dapat meregistrasi wrapper sebagai fenced atau terpercaya (trusted) menggunakan pilihan wrapper DB2_FENCED. Anda membuat satu wrapper untuk setiap jenis sumber data yang ingin Anda akses. Misalnya, Anda ingin mengakses tiga DB2 untuk z / OS database tables, satu DB2 untuk tabel Sistem I, dua tabel Informix, dan satu tampilan Informix. Dalam hal Kelompok 2 Dewi Fajarshanti Firdaus P. (125150200111035) Gilang Yanuar Wirana (125150200111037) Az Zahra Rahma Putri Afifa (125150200111064) Mochammad Imam Syaroni (125150201111066) Anggita Rezky R. (125150207111010) ABD-KELAS C-03
ini, Anda perlu membuat satu wrapper untuk objek sumber data DB2 dan satu wrapper untuk Informix objek sumber data. Setelah wrapper tersebut terdaftar dalam database federasi, Anda dapat menggunakan wrapper ini untuk mengakses objek lain dari sumber-sumber data. Misalnya, Anda dapat menggunakan wrapper DRDA dengan semua DB2 family sumber data objek -DB2 database untuk Linux, UNIX, dan Windows, DB2 untuk z / OS, DB2 untuk Sistem i, dan DB2 Server untuk VM dan VSE. Anda menggunakan definisi server dan nickname untuk mengidentifikasi secara spesifik (nama, lokasi, dan sebagainya) dari setiap objek sumber data. Sebuah wrapper melakukan banyak tugas. Beberapa tugas-tugas ini adalah: Terhubung ke sumber data. Wrapper menggunakan koneksi API standar sumber data. Ini menyampaikan query ke sumber data. o Untuk sumber data yang mendukung SQL, query tersebut diajukan di SQL. o Untuk sumber data yang tidak mendukung SQL, query diterjemahkan ke dalam bahasa query asli dari sumber atau menjadi serangkaian sumber API calls. Menerima hasil set dari sumber data. Wrapper menggunakan API standar sumber data untuk menerima hasil yang ditetapkan. Menanggapi query federasi database tentang mapping tipe data default untuk sumber data. Wrappernya berisi mapping default yang digunakan ketika nickname diciptakan untuk objek sumber data. Untuk wrapper relasional, tipe data mapping yang Anda buat menimpa tipe data mapping default. User- defined tipe data mapping disimpan dalam katalog global. Menanggapi query federasi database tentang mapping fungsi default untuk sumber data. Federasi database membutuhkan tipe data informasi mapping untuk keperluan perencanaan query. Wrappernya berisi informasi federasi database untuk menentukan apakah fungsi DB2 dipetakan ke fungsi sumber data, dan bagaimana fungsi dipetakan. Informasi ini digunakan oleh SQL Kelompok 2 Dewi Fajarshanti Firdaus P. (125150200111035) Gilang Yanuar Wirana (125150200111037) Az Zahra Rahma Putri Afifa (125150200111064) Mochammad Imam Syaroni (125150201111066) Anggita Rezky R. (125150207111010) ABD-KELAS C-03
Compiler untuk menentukan apakah sumber data dapat melakukan operasi query. Untuk wrapper relasional, mapping fungsi yang Anda buat menggantikan tipe fungsi mapping default. Fungsi User-didefinisikan mapping disimpan dalam katalog global. Pilihan wrapper digunakan untuk mengkonfigurasi wrapper atau untuk menentukan bagaimana IBM InfoSphere Federation Server menggunakan wrappernya. Contoh : 1. Default wrappers
4.2 Remote Servers Server Definition mendefinisikan remote database di federated server. Untuk setiap remote database di mana kita merujuk objek sumber, kita membuat definisi Kelompok 2 Dewi Fajarshanti Firdaus P. (125150200111035) Gilang Yanuar Wirana (125150200111037) Az Zahra Rahma Putri Afifa (125150200111064) Mochammad Imam Syaroni (125150201111066) Anggita Rezky R. (125150207111010) ABD-KELAS C-03
server. Definisi Server berisi versi remote server, wrapper dan kita dapat menyediakan pilihan server seperti node dan nama database dari remote database dan sebagainya. Untuk menyambung ke sumber data lain seperti SQL, Oracle dll kita membutuhkan client required yang diinstal dan dikonfigurasi untuk mengakses database sumber lain. Untuk database DB2 kita perlu remote database di federated server. Syntax : CREATE SERVER servname TYPE DB2/UDB VERSION 9.7 WRAPPER DRDA AUTHORIZATION userid PASSWORD password OPTIONS (NODE nodename ,DBNAME dbname')
Contoh : CREATE SERVER QUEST TYPE DB2/UDB VERSION '8.2' WRAPPER MYDB2SERVER AUTHID "<user_id>" PASSWORD "<password>" OPTIONS(ADD DBNAME 'QUEST', PASSWORD 'Y');
Kelompok 2 Dewi Fajarshanti Firdaus P. (125150200111035) Gilang Yanuar Wirana (125150200111037) Az Zahra Rahma Putri Afifa (125150200111064) Mochammad Imam Syaroni (125150201111066) Anggita Rezky R. (125150207111010) ABD-KELAS C-03
4.3 User Mapping Hubungan antara otorisasi ID pada server federasi dan informasi yang diperlukan untuk menyambung ke sumber data remote. User ID dan password yang Anda gunakan untuk mengakses server federasi yang dipetakan ke user ID dan password yang Anda gunakan untuk mengakses server sumber data. Syntax : CREATE USER MAPPING FOR federatedsserverauthid SERVER servname OPTIONS (REMOTE_AUTHID sourceauthid, REMOTE_PASSWORD sourcepasswd) Contoh : CREATE USER MAPPING FOR "QUESTUSER" SERVER "QUEST" OPTIONS (ADD REMOTE_AUTHID '<user_id>', ADD REMOTE_PASSWORD '*****')
4.4 Nicknames Sebuah nama lokal yang Anda buat untuk mengidentifikasi setiap objek pada sumber data yang ingin Anda akses. Objek nickname yang mengidentifikasi disebut sebagai objek sumber data. Syntax : CREATE NICKNAME nick1 FOR SERVERDEFINITION.SOURCESCHEMANAME.SOURCETABLENAME Contoh : Membuat nickname untuk DEPARTMENT, yang berada pada schema bernama HEDGES yang disimpan di DB2 UDB untuk data source z/OS dan OS/390 bernama OS390A. CREATE NICKNAME DEPT for OS390A.HEDGES.DEPARTMENT