• Tidak ada hasil yang ditemukan

Basis Data dan SBP

N/A
N/A
Protected

Academic year: 2018

Membagikan "Basis Data dan SBP"

Copied!
83
0
0

Teks penuh

(1)

Basis Data dan SBP

(2)
(3)
(4)

SQL Murni

SQL Murni: Query yang ditulis pada SQL prompt.

SQL adalah non-procedural language.

SQL menentukan WHAT, bukan HOW.

SQL murni bagus untuk:

– Menentukan struktur database

– Menghasilkan low-volume, ad hoc queries

– prototyping

Aplikasi canggih sering diimplementasikan dengan

(5)

Embedded SQL

• SQL dapat disisipkan dalam bahasa

pemrograman procedural

• Bahasa ini meliputi C/C++, Java, Perl, Python,

dan PHP.

• Embedded SQL mendukung:

– Aplikasi yang di custom

– Background applications yang berjalan tanpa intervensi user.

(6)

Dua Tipe embedding

Low-level embedding (Contoh C/C++):

•SQL dan program dicompile ke dalam sebuah executable tunggal •Link yang sangat efisien.

ODBC - Open Database Connectivity (Contoh PHP/Java):

•SQL query dikirim dari program ke database sebagai sebuah string. •Hasil dikembalikan sebagai sebuah array atau list.

•Kebebasan program dan database:

– Masing-masing bahasa memiliki satu DBI (database interface) untuk semua tipe DBMS. (Cotoh, JDBC untuk Java.)

(7)

Low-level embedding (eg. C/C++)

Query terdiri atas gabungan SQL dan

perintah khusus.

Sebuah cursor melangkah melalui hasil

row satu pada satu waktu.

Sebagai contoh:

(8)

Cursors

Sebuah pointer untuk current item dalam

sebuah himpunan hasil query.

Dimulai dengan item pertama.

Melangkah melalui hasil satu pada satu

waktu

Beberapa Implementasi kursor

(9)

ODBC database connections

• Connect to the database.

• Prepare a query (as a string).

• Execute the query.

• Fetch the results (as an array of rows).

• Finish the query (so that DB can clean up

its buffers).

(10)

Contoh: Java

• import the DBI libraries

Class.forName(”oracle.jdbc.OracleDriver”) • connect to the database

Connection con = DriverManager.getConnection

(”jdbc:oracle:Databasename”,”myLogin”,”myPassword”); • Execute a query

ResultSet rs = stmt.executeQuery

(”SELECT empno, surname FROM employee”);

• Cursor points to the first row

(11)

Fetching the result (Java)

while (rs.next()) {

int emp = rs.getInt("empno");

String surn = rs.getString("surname"); System.out.println(emp + " " + surn); }

or

while (rs.next()) {

int emp = rs.getInt(1);

String surn = rs.getString(2);

(12)

Contoh: PHP

• connect to the database

$link = mysql connect(’hostname’,’uname’, ’passwd’); • Select database

mysql select db(’test’); • Execute a query

$result = mysql query(’select * from test’); • Fetch the result (See next slide)

• Finish the query

mysql free result($result); • Disconnect the database mysql close($link);

(13)

Fetching the result (PHP)

echo "<table>";

while ($line = mysql fetch array($result,

MYSQL ASSOC)){

echo "<tr>"; echo "<td>",$line[’frstfeld’],"</

td>";

echo "<td>",$line[’secondfeld’],"</td>";

echo "<td>",$line[’thirdfeld’],"</td>";

echo "</tr>";

}

(14)
(15)

Pendahuluan

• Komputer tidak hanya mampu menyimpan

data, tetapi juga mampu mengambil atau

mendapatkan kembali data tersebut. Sifat

menyimpan dan mengambil kembali data

yang sudah disimpan tersebut

(16)

Pendahuluan

• Data yang tersimpan dalam database

semakin lama akan semakin besar ukuran

atau volumenya.

• Kalau tidak didukung dengan kecepatan

akses yang memadai maka akan semakin

menurun unjuk kerjanya.

• Ukuran unjuk kerja dalam hal ini

(17)

Pendahuluan

• Kemampuan mengelola data tersebut biasa

disebuat sebagai suatu database system.

• Untuk mendukung peranan penyimpanan dan

penampilan data tersebut (database system)

komputer membutuhkan softaware yang

mengatur jalannya data (keluar masuknya data)

yang biasa disebut dengan database

(18)

Pendahuluan

• Fasilitas dari DBMS adalah dapat mengakses sebuah database tunggal secara bersamaan oleh banyak user, dapat mengakses data secara terbatas hanya untuk user yang berhak dan mengganti kegagalan dari

sistem-sistem tanpa kehilangan keutuhan data.

• Umumnya, interface yang pertama (pokok) untuk sebuah DMBS adalah sebuah high level query atau data

(19)

Optimasi Pada Perintah SQL

• Desain aplikasi saja tidak cukup untuk

meningkatkan unjuk kerja harus didukung

dengan optimasi dari perintah SQL yang

digunakan pada aplikasi tersebut.

• Seringkali lokasi fisik data tidak menjadi

perhatian penting saat mendesain

(20)

Optimasi Pada Perintah SQL

• Untuk menampilkan hasil query

dibutuhkan pencarian yang melibatkan

struktur fisik penyimpanan data.

• Inti dari optimasi query adalah

(21)

Optimasi Pada Perintah SQL

• Kehandalan dari suatu sistem database

atau DBMS dapat diketahui dari cara kerja

optimizer-nya dalam memproses

(22)

Optimasi Pada Perintah SQL

• Di dalam optimizer, statement-statement yang

ada diproses dengan salah satu cara dari

banyak cara yang ada untuk mendapatkan

perencanaan query yang paling optimal

sehingga pada akhirnya akan didapatkan

jawaban query dengan waktu akses yang paling

minimum.

• Proses untuk mencari perencanaan eksekusi

query yang terbaik inilah yang disebut dengan

(23)

Optimasi Pada Perintah SQL

• Query optimasi merupakan sebuah proses

memilih query plan yang paling efisien dari

banyak startegi pengaksesan query,

(24)

Optimasi Pada Perintah SQL

• Index pada database digunakan untuk

meningkatkan kecepatan akses data.

(25)

Optimasi Pada Perintah SQL

• Misal digunakan index yang melibatkan

tiga buah kolom yang mengurutkan kolom

menurut kota, propinsi dan kode pos dari

tabel karyawan, sebagai berikut :

CREATE INDEX

idx_kota_prop_kodepos

ON karyawan(kota, propinsi,

kode_pos)

(26)

Optimasi Pada Perintah SQL

• Kemudian user melakukan query sebagai

berikut :

SELECT * FROM karyawan WHERE

propinsi=’Jawa Barat’;

• Pada saat melakukan query ini, index tidak akan

digunakan karena kolom pertama (kota) tidak

(27)

Optimasi Pada Perintah SQL

• Jika user sering melakukan query ini,

maka kolom index harus diurutkan

menurut propinsi. Selain itu, proses

pencarian data akan lebih cepat jika data

terletak pada block tabel yang berdekatan

daripada harus mencari di beberapa

(28)

Optimasi Pada Perintah SQL

• Misal pada perintah SQL berikut ini :

SELECT * FROM karyawan

WHERE id BETWEEN 1010 AND 2010;

• Query ini akan melakukan “scan” terhadap

sedikit data block jika tabel karyawan di atas

diurutkan berdasarkan kolom id. Untuk

mengurutkan berdasarkan kolom yang

berbeda-beda maka tabel disimpan dalam flat file,

(29)

Optimasi Pada Perintah SQL

• Alternatif yang lain, bisa digunakan perintah

untuk membuat tabel lain yang memiliki urutan

yang berbeda dari tabel asal, seperti perintah

SQL berikut :

CREATE TABLE karyawan_urut

AS SELECT * FROM karyawan

ORDER BY id;

(30)

Faktor Lain Yang Berpengaruh Terhadap

Kecepatan Akses Data

OPTIMASI APLIKASI

– Dalam pembuatan aplikasi, yang perlu

mendapat perhatian adalah apakah akses

terhadap data sudah efisien. Efisien dalam

hal penggunaan obyek yang mendukung

(31)

Faktor Lain Yang Berpengaruh Terhadap

Kecepatan Akses Data

• Kadangkala normalisasi sampai level yang

kesekian, tidak menjamin suatu desain

yang efisien. Untuk membuat desain yang

lebih tepat, kadang setelah melakukan

(32)

Faktor Lain Yang Berpengaruh Terhadap

Kecepatan Akses Data

CLUSTER DAN INDEX

•Cluster adalah suatu segment yang menyimpan

data dari tabel yang berbeda dalam suatu struktur

fisik disk yang berdekatan. Konfigurasi ini

bermanfaat untuk akses data dari beberapa tabel

yang sering di-query. Penggunaan cluster secara

tepat dilaksanakan setelah menganalisa

(33)

Faktor Lain Yang Berpengaruh Terhadap

Kecepatan Akses Data

• Jika aplikasi sering melakukan query dengan

menggunakan suatu kolom yang berada pada

klausa WHERE, maka harus digunakan index

yang melibatkan kolom tersebut. Penggunaan

index yang tepat bergantung pada jenis nilai

yang terdapat dalam kolom yang akan diindex.

Dalam RDBMS Oracle, index B-Tree digunakan

untuk kolom yang mengandung nilai yang cukup

bervariasi, sedangkan untuk nilai yang tidak

(34)

Fungsi dari Operasi-operasi Dasar

Aljabar Relasional

1. Select.

Operasi Select berfungsi untuk menyeleksi tuple-tuple yang memenuhi predikat yang diberikan dari sebuah tabel relasi.dan simbol yang di gunakan

adalah simbol sigma “σ” simbol ini digunakan untuk menunjukkan operasi select.

– Misalkan kita mau mencari hasil NILAI berdasrkan NPM, maka operasi aljabar relasional: σNPM = 10296832(NILAI)

(35)

Fungsi dari Operasi-operasi Dasar

Aljabar Relasional

KDMK SKS

KK021 2

KD132 3

(36)

Fungsi dari Operasi-operasi Dasar

Aljabar Relasional

3. Union

Operasi Union

berfungsi untuk mendapatkan

gabungan nilai atribut dari sebuah tabel relasi

dengan nilai atribut dari tabel relasi lainnya.

dan simbol yang di gunakan adalah simbol “ ”.

– Pada operasi union bernilai benar jika kedua

kondisinya terpenuhi yaitu : Derajat dari 2 tabel

relasi yang dioperasikan harus sama dan

(37)

• Misalkan terdapat 2 tabel relasi bernama ASLABSI dan ASLABTI seperti contoh berikut ini :

ASLABSI

ASLABTI

Fungsi dari Operasi-operasi Dasar

Aljabar Relasional

NPM Nama Kelas 10107591 Eko Putra 3KA07 10107971 Keque Irfan 3KA07 18108012 Riza Rulham 3KA07

(38)

Fungsi dari Operasi-operasi Dasar

Aljabar Relasional

Eko Putra Keque Irfan M. Ali

Nurdin Riza Rulham Soli

(39)

Fungsi dari Operasi-operasi Dasar

Aljabar Relasional

(40)

4.

Cartesian Product

Set Difference berfungsi untuk mengkombinasikan informasi yang ada dalam 2 tabel relasi dan

menghasilkan sebuah tabel relasi yang baru. dan simbol yang di gunakan adalah simbol “x“ simbol ini digunakan untuk menunjukkan operasi set difference. – Contoh penggunaan operasi cartesian product :

ASLABTI x MKUL ⟹ tabel relasi baru

– Dari perintah di atas berarti mengkombinasikan

seluruh tupel yang ada pada tabel ASLABTI dengan tabel MKUL. Hasil dari operasi adalah :

(41)

Fungsi dari Operasi-operasi Dasar

Aljabar Relasional

(42)
(43)
(44)

• Dari perintah di atas berarti mendapatkan nilai dari

operasi project dengan predikat NPM, KDMK, dan MID dan argumen hasil dari operasi natural join antara tabel MHS dengan tabel NILAI. Hasil dari operasi di atas

adalah :

Fungsi dari Operasi-operasi Dasar

Aljabar Relasional

10296832 KK021 60

10296832 KD132 40

10296126 KD132 70

31296500 KK021 55

41296525 KU122 90

50096487 KD132 80

(45)
(46)

3. Theta Join

– Operasi theta join berfungsi jika ingin

mengkombinasikan tupel dari 2 tabel relasi

dimana kondisi dari kombinasi tersebut tidak

hanya kesamaan nilai dari 2 atribut bernama

sama, tetapi kondisi yang diinginkan juga bisa

menggunakan operator relasional (≤, <, =, >,

≥). Operasi theta join merupakan ekstensi dari

natural join.

(47)

Rule Equivalence

• Dalam mendapatkan query plan yang

(48)

Rule Equivalence

• Tujuan

dari optimasi adalah untuk mengurangi

sebanyak mungkin tuple atau baris yang tidak

dibutuhkan.

(49)

Rule Equivalence

• Untuk memeriksa apakah query yang

dioptimasi hasilnya sama dengan query

yang biasa, ada beberapa rules

equivalence.

(50)

Teknik Optimasi Query Heuristic

• Teknik optimisasi query dapat juga dikatakan sebagai tahapan-tahapan proses yang dilakukan untuk membuat sebuah query tree menjadi lebih optimal.

• Ada bermacam-macam teknik yang digunakan untuk mengoptimasi query, tetapi pada dasarnya ada dua teknik utama yang umumnya digunakan dalam proses optimasi query.

• Dua teknik tersebut adalah Heuristic Optimization dan

Cost Based optimization. Pembahasan secara lebih detail pada pembahasan ini adalah dengan

(51)

Teknik Optimasi Query Heuristic

• Heuristic Optimization atau yang biasanya disebut

dengan rule based optimization adalah optimasi query dengan menggunakan aturan-aturan heuristik dan

dijalankan pada logical query plan (rencana query

secara logika) yang terdiri dari urutan operasi-operasi relasional yang biasanya digambarkan sebagai query tree.

(52)

Heuristik atau rule-based

•Teknik ini mengaplikasikan aturan heuristik untuk mempercepat proses query. Optimasi jenis ini mentransformasikan query dengan sejumlah aturan yang akan meningkatkan kinerja eksekusi, yakni:

– melakukan operasi selection di awal untuk mereduksi jumlah baris

– melakukan operasi projection di awal untuk mereduksi jumlah atribut

– mengkonversikan query dengan banyak join menjadi query dengan banyak subquery

– melakukan operasi selection dan join yang paling kecil keluarannya sebelum operasi lain

(53)

• Berikut ini contoh yang membuktikan bahwa subset query lebih baik dari query dengan banyak join atau

cross product. terdapat 2 buah tabel percobaan,yaitu:

Teknik Optimasi Query Heuristic

Nama Field Tipe NIM Integer

Nama Varchar(30) Alamat Varchar (80)

Nama Field Tipe NIM Integer

(54)

a. Query dengan model cross product diwakili oleh query berikut ini:

SELECT M.NIM, M.Nama, M.Alamat FROM Mahasiswa M, Kuliah K

WHERE M.NIM = K.NIM

b. Query dengan model subset query diwakili oleh query berikut ini:

SELECT NIM, Nama, Alamat FROM Mahasiswa

WHERE NIM in ( SELECT NIM FROM Kuliah)

Kedua query tersebut akan menghasilkan informasi yang sama, yaitu menampilkan data NIM, Nama dan Alamat dari tabel Mahasiswa yang NIM-nya terdapat dalam tabel Kuliah.

(55)

Nama Field Tipe Keterangan

Jml Integer Jumlah record hasil query

Q1 Integer Waktu yang diperlukan untuk query dengan menggunakan cross product

Q2 Integer Waktu yang diperlukan untuk query dengan menggunakan subset query

Teknik Optimasi Query Heuristic

Jumlah Data 1 10 50 100 1000 10000 25000

Waktu CP (ms) 4 5 9 10 47 425 1162

(56)

Teknik Optimasi Query Heuristic

Adapun tujuan dari transformasi tersebut adalah :

•Standarisasi, yaitu mentransformasikan sebuah

query ke dalam sebuah bentuk standar tanpa

optimisasi.

•Simplifikasi, yaitu mengeliminasi kelebihan dalam

sebuah query.

•Ameliorasi, yaitu menyusun ekspresi-ekspresi

yang sudah dihasilkan dengan baik untuk

(57)

Notasi untuk Query Tree dan Query

Graph

• Sebuah query tree adalah sebuah struktur data tree

yang sesuai untuk sebuah ekspresi relasi aljabar. Query tree menggambarkan hubungan-hubungan input query sebagai node-node leaf dan tree dan menggambarkan hubungan operasi-operasi aljabar sebagai node-node internal. Sebuah eksekusi dari query tree terdiri dari pelaksanaan sebuah operasi internal node bilamana

operand-operand dari query tree tersedia dan kemudian menggantikan internal node tersebut dengan hubungan yang menghasilkan pelaksanaan operasi. Pelaksanaan akan diakhiri apabila root node dijalankan dan

(58)
(59)
(60)

Notasi untuk Query Tree dan Query

Graph

(61)

Notasi untuk Query Tree dan Query

Graph

(62)

Notasi untuk Query Tree dan Query

Graph

• Pada gambar di atas (a) relasi-relasi tree PROJECT,

DEPARTMENT, dan EMPLOYEE digambarkan oleh leaf node P, D, dan E, sementara operasi-operasi relasi

aljabar digambarkan oleh internal tree node. Pada saat query tree tersebut dieksekusi, node marked (1) pada gambar (a) harus mulai melakukan eksekusi sebelum node (2) karena beberapa hasil tuple dari operasi (1) harus tersedia sebelum dilakukan operasi eksekusi (2). Dengan cara yang sama, node (2) harus mulai

(63)

Notasi untuk Query Tree dan Query

Graph

• Seperti yang dapat dilihat, query tree menggambarkan sebuah perintah khusus dari operasi-operasi untuk mengeksekusi sebuah query. Sebuah gambaran mumi dari sebuah query adalah notasi query graph. Gambar (c) menunjukkan query graph untuk Q2.

Hubungan-hubungan dalam query digambarkan oleh relation node yang ditunjukkan dalam sebuah lingkaran. Nilai konstan khususnya dari kondisi-kondisi pilihan query digambarkan oleh constant nodes yang ditunjukkan oleh lingkaran ganda. Kondisi-kondisi pemilihan dan penggabungan digambarkan oleh graph edges, seperti yang terlihat pada gambar (c). Terakhir, attribute-attribute yang akan

(64)

Notasi untuk Query Tree dan Query

Graph

• Gambar query graph tidak menunjukkan sebuah

urutan operasi-operasi yang mula-mula akan

dibentuk. Hanya ada sebuah graph tunggal yang

sesuai untuk tiap query.

• Meskipun beberapa teknik optimasi berdasarkan

pada query graph, tapi pada kenyataannya query

tree adalah lebih baik karena dalam

(65)

Heuristic Optimization Query Tree

• Query parser khusus akan menghasilkan sebuah inisial query tree yang standar untuk mencocokkannya pada sebuah SQL query, tanpa melakukan beberapa

optimasi. Sebagai contoh, untuk sebuah select-project-join query seperti Q2, yang inisial tree-nya ditunjukkan pada gambar (b), CARTESIAN PRODUCT dari relasi-relasi ditentukan dalam klausa FROM yang terlebih dahulu digunakan dan kemudian kondisi-kondisi

selection dan join dari klausa WHERE yang digunakan, diikuti oleh proyeksi pada attribute-attribute klausa

(66)

Heuristic Optimization Query Tree

• Sebagai sebuah canonical query tree yang

menggambarkan sebuah ekspresi relasi aljabar adalah sangat tidak efisien apabila menjalankannya secara langsung, karena operasi-operasi CARTESIAN

PRODUCT (X).

(67)

Heuristic Optimization Query Tree

Diberikan contoh dari transformasi sebuah query Q yang bunyinya sbb:

"Find the last names of employees born after 1957 who work on a project named 'Aquarius'."

Query di atas dapat dispesifikasikan ke dalam SQL seperti berikut ini:

Q: SELECT LNAME

FROM EMPLOYEE, WORKS_ON, PROJECT

WHERE PNAME = 'Aquarius' AND PNUMBER = PNO AND ESSN=SSN AND

(68)

Heuristic Optimization Query Tree

• Inisial query tree untuk Q akan ditunjukkan pada gambar (a). Menjalankan tree ini secara langsung mula-mula

membentuk sebuah file yang sangat besar yang berisi

(69)

Heuristic Optimization Query Tree

(70)

Heuristic Optimization Query Tree

(71)

Heuristic Optimization Query Tree

• Selanjutnya perbaikan dicapai dengan menukar posisi-posisi dari relasi-relasi EMPLOYEE dan PROJECT

dalam tree, seperti yang ditunjukkan pada gambar (c) yang menggunakan informasi bahwa PNUMBER adalah key attribute dari relasi proyek dan oleh sebab itu

operasi SELECT pada relasi PROJECT akan

mendapatkan kembali hanya sebuah record tunggal. Selanjutnya query tree dapat diperbaiki dengan cara mengembalikan beberapa operasi CARTESIAN

PRODUCT yang diikuti dengan sebuah kondisi join

(72)

Heuristic Optimization Query Tree

(73)

Heuristic Optimization Query Tree

(74)
(75)

Heuristic Optimization Query Tree

(76)

Heuristic Optimization Query Tree

• Seperti contoh di atas, sebuah query tree

dapat dintransformasikan selangkah demi

selangkah ke dalam query tree yang

lainnya yang lebih efisien untuk

dieksekusi. Bagaimanapun juga harus

dipastikan terlebih dahulu bahwa

langkah-langkah transformasi selalu berperan

(77)

Heuristic Optimization Query Tree

• Untuk melakukan

transformasi-transformasi query tersebut, query

optimizer harus mengetahui aturan-aturan

transformasi mana yang mempertahankan

persamaan ini. Dan aturan-aturan

(78)

Heuristic Optimization Query Tree

Diberikan sebuah SQL :

SELECT PNUMBER, DNUM, LNAME

FROM PROJECT, DEPARTMENT, EMPLOYEE

WHERE DNUM = DNUMBER AND

MGRSSN = SSN AND

PLOCATION = “Stafford”

(79)

Heuristic Optimization Query Tree

(80)

Heuristic Optimization Query Tree

(81)

Heuristic Optimization Query Tree

(82)

Heuristic Optimization Query Tree

(83)

Referensi

Dokumen terkait

Untuk itulah dibuat alat pendekteksi kebocoran gas LPG dengan menggunakan sistem notifikasi SMS dengan menggunakan SIM900a, Sensor MQ-6 yang dapat mendeteksi gas

Puji syukur kepada panjatkan kepada Tuhan Yang Maha Esa atas rahmat, yang selalu mendampingi, bimbing dan penjagaan-Nya selama ini sehingga penulis dapat menyelesaikan proyek

Untuk mengetahui sejauh mana tingkat signifikansi pengaruh Return On Assets dan Return On Equity terhadap Earning Per Share pada perusahaan sektor Asuransi

mencapai target yang ditentukan oleh peneliti dikarenakan anak belum mau bergabung dengan teman dan asik bermain sendiri untuk itu peneliti lebih fokus terhadap

(A First time book) Summary: Gran and Gramps come up with a plan to help selfish Brother and Sister Bear get rid of a bad case of the galloping greedy gimmies.. Series:

Teknik membaca cerita dapat menimbulkan rasa senang pada anak terhadap cerita sehingga anak dapat menjadi pengguna bahasa yang baik dan lebih memahami makna (Gallets, 2005).

dan sisa asset dalam proses likuidasi perusahaan. Pada dasarnya ada dua jenis keuntungan yang diperoleh investor dengan.. membeli saham, yaitu deviden dan Capital Gain

Selain pengetahuan merek induk, persepsi kualitas juga mempengaruhi sikap brand extention, menurut Zeithaml (1998 dalam Barata, 2007: 65) mendefinisikan persepsi kualitas