Tempat curhatnya anak-anak BASDAT


Optimisasi Query
Desember 7, 2007, 4:26 pm
Diarsipkan di bawah: Eksplorasi, Eksplorasi DBMS, Sistem Basis Data

 Query optimisasi meurpakan sebuah proses memilih query plan yang plaing efisien dari banyak startegi pengaksesan query, khususnya untuk query yang kompleks. Dalam mendapatkan query plan yang efisien pemeriksaan dilakukan mulai dari epemeriksaaan akses path yang mungin (primary index akases, secondary indeks aksess, dan full file scan), dan juga variasi teknik join tabel relasional. Tujuan dari optimasisi adalah untuk mengurangi sebanyak mungkin tuple atau baris yang tidak dibutuhkan.
Jika kita sudah memiliki query, maka kita bisa mengoptimasi query dengan cara mentransform queyr tersebut. Untuk memeriksa apak$ah query yang dioptimasi hhasilnya sama dengan query yang biasa, ada beberapa rules equivalence. Rule equivalence ini juga bisa sebagai langkah awal untuk mentransform query sehingga lebih efisien. BErikut adalah beberap rule equivalence yang bisa digunakan:
 
1. Operasi seleksi konjungtif dapat didekonstruski menjadi sekumpulan seleksi individual
2. Operasi seleksi adalah komutatif
3. Hanya operasi final dari operasi sequence proyeksi yang dibutuhkan, yang lainnya dapat diabaikan
4. Seleksi dapat dikombinasikan dengan cartesian product dan theta join
5. Operasi Theta join komutatif
6. operasi Seleski daoat didistributsikan dinatara operasi union intersection dan set difference
7. Sekumpulan union dan intersection asosiatif
8. Operasi Join didistributsikan dinatara operasi union

By:Ogie
 

Powered by ScribeFire.



[Deddy 13505031] Query processing & optimation
Desember 7, 2007, 4:16 pm
Diarsipkan di bawah: Sistem Basis Data, Uncategorized

Waa, udah mau deadline :( (
harus cepat2..

BTW mau ngebahas external sort merge
jadi external sort merge tuh digunakan pada relasi jika relasi tsb tidak dpt masuk ke memori (kalo bisa masuk memori, cukup pake quicksort aj)
berikut langkah2 external sort merge
1.buat sorted runs
berikut langkah membuat sorted run: (i=0)
1.baca m blok relasi ke memori
2.urutkan blok yang terdapat dalam memori
3.tuliskan data yang telah disort ke Ri, increment i
2.gabungkan runs yang telah dibuat
berikut langkah menggabungkan runs:
1. gunakan N blok memori untuk membuffer runs yang dibuat, baca blok pertama dari  tiap run ke buffernya masing2.
2. ulangi sampai semua input buffer kosong:
1.pilih record pertama dari semua buffer
2.tulis revord tsb ke output buffer, jika penuh, tulis ke disk
3.hapus record tsb dari buffer input
4.jika buffer input telah kosong, baca blok berikutnya
yap, kira2 itulah langkah yang harus dilakukan untuk melakukan eksternal merge sort, tiap langkahnya ga dibahas detil, soalnya yg nulis ga tau ^^, peace



[Rudi 13504099] Mengapa dibutuhkan proses optimalisasi query??
Desember 7, 2007, 3:44 pm
Diarsipkan di bawah: Sistem Basis Data

Baru pertama kali posting nih setelah sekian lama vakum dan kena beberapa denda..

Lagi sibuk euy, jadi sori banget buat temen2 asisten yang laen ^.^ ..

Berhubung asisten lain sudah menjelaskan dengan baik menggunakan studi literatur,  sya jadi bingung mo posting apa -_-a.. Saya akan mencoba berinovasi dengan menjelaskan mengenai proses optimalisasi query berdasarkan kata-kata saya sendiri.. Apabila ada kesalahan, mohon kritik dan sarannya..

Mari kita mulai segalanya dengan IMHO,

Segala sesuatu pasti ada yang mendasari, oleh karena itu, mari kita mulai berpikir, mengapa query perlu di optimalisasi? Dasar pemikiran dari hal ini tentu saja karena suatu query dapat dikerjakan menggunakan berbagai query processing yang sudah dijelaskan oleh rekan saya sebelumnya dan suatu query memiliki tingkat kecocokan yang berbeda. Contohnya : kita bisa menggunakan INDEX untuk mencari besar tabungan yang lebih dari satu juta rupiah atau kita juga bisa menelusuri seluruh data yang ada untuk mengambil seluruh besar tabungan yang ada kemudian mencari yang nilainya lebih dari satu juta. Dalam kasus ini penggunaan INDEX jelas lebih optimal.

Terkesan kejar setoran yak….. Teuing ah, semoga minggu depan postingnya lebih baik lagi…… Amin..



Linier Search + Nested Loop Join
Desember 7, 2007, 3:06 pm
Diarsipkan di bawah: Sistem Basis Data

1 A1 ( linier search) : maksudnya scan setiap record, lalu cek mana yang cocok dengan kondisi seleksi.

dimana Br= jumlah blok yang mengandung record dari relasi R. Cost= br/2, jika konsidi seleksi merupakan key.

2. A2  (binary search)

NESTED LOOP JOIN

Join ini dilakukan antara record per record, record di inner blok dijoin dengn 1 record di outer blok. Join dilakukan record per record. Jadi 1 record di relasi kiri, di join dengan semua record di relasi kanan. dengan demikian sangat biris, karena pergantian blok akan terjadi (sebanyak record di relasi kiri x blok di relasi kanan)  + jumlah blok relasi kiri. Cara ini paling boros. Cost di atas dapat dituliskan : (nr* bs) + br



[Hendro-13505103] Langkah2 Pemrosesan Query
Desember 7, 2007, 2:34 pm
Diarsipkan di bawah: Sistem Basis Data

Langkah dasar pemrosesan query :
1. Parsing dan translasi
 a. Translasi query menjadi bentuk internal kemudian translasikan ke aljabar relasional
 b. Parser memeriksa sintaks dan verifikasi relasi-relasi
2. Optimasi : memilih evaluasi plan yang paling rendah costnya
3. Evaluasi : query-execution engine memakai query-evaluation plan, mengeksekusi plan tersebut, dan mengembalikan hasilnya

Cost umumnya diukur sebagai total waktu diperlukan untuk menyelesaikan query
1. Banyak faktor yang menentukan cost : Kecepatan akses disk, CPU, atau sampai komunikasi jaringan
2. Kecepatan akses disk adalah faktor utama penentu cost dan relatif mudah diperkirakan. Kecepatan ini diukur dengan :
 a. Number of seeks * average-seek-cost
 b. Number of blocks read * average-block-read-cost
 c. Number of blocks written * average-block-write-cost
    Cost untuk menulis sebuah blok lebih besar dari cost untuk membaca blok karena setelah menulis, data akan dibaca lagi untuk memastikan data yang ditulis berhasil.

Operasi-operasi dalam pemrosesan query :
1. Selection dengan menggunakan algoritma searching seperti A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
2. Sorting
   Untuk relasi yang muat di memori, teknik ini seperti quicksort, sedangkan untuk relasi yang tidak cocok pada memori, external sort-merge cukup bagus.
3. Join diimplementasikan dengan beberapa algoritma seperti nested-loop join, block nested-loop join, indexed nested-loop join, merge-join, hash-join
4. Duplicate elimination dapat diimplementasikan dengan hashing atau sorting
5. Agregation dapat diimplementasikan dengan cara yang sama pada duplicate elimination
6. Projection diimplementasikan dengan melakukan proyeksi pada setiap tupel yang diikuti dengan duplicate elimination
7. Set operations (^,V,-) dapat digunakan sebagai varian dari merge-join setelah sorting atau varian dari hash-join
8. Outer join adalah modifikasi dari join dengan diikuti tambahan NULL sesuai dengan ruas yang diinginkan



[Ratih - 13504012] Query Processing
Desember 7, 2007, 9:55 am
Diarsipkan di bawah: Sistem Basis Data

Query Processing adalah proses yang terjadi pada DBMS ketika menerima query hingga menghasilkan tupple2 sesuai query yang dminta.

Query Processing ini terdiri dari 3 tahapan utama yaitu :

1. 1. Parsing dan Translation

Parsing adalah analisis sintaksis yaitu memeriksa apakah input yang masuk sesuai dengan tata bahasa yang ada atau tidak, salah satunya dengan memilah-milah input-input (variable, dsb). Translation adalah mengubah kode dari sintaks deklaratif ke dalam bentuk internal yang procedural (misal aljabar relasional). Jadi hasil dari tahap 1 adalah relasi aljabar relasional

2. 2. Optimization

Setiap ekspresi aljabar relasional akan didetailkan yaitu detail plan setiap eksekusi. Untuk tiap operator terdapat beberapa opsi algoritma, dan algoritma yang dipilih adalah algoritma yang meminimalkan cost. Itulah yang terjadi pada execution plan.

3. 3. Execution

Mengeksekusi execution plan hasil optimalisasi dan mengembalikan outputnya sesuai dengan query.

QueryProcessing

Tahapan detail mengenai pemrosesan query yaitu dimulai dari penerimaan query dari userkemudin query tersebut di parse (pemeriksaan semantik) dan di translate menjadi aljabar relasional, setelah itu dioptimasi sesuai dengan data yang telah ada di DBMS sehingga menjadi execution plan dengan cost yang minimal. Execution plan tersebut kemudian dieksekusi terhadap data yang ada pada DBMS dan menghasilkan output sesuai query yang diminta.

Cost merupakan hal yang terkait dengan total waktu yang diperlukan untuk mengeksekusi query dan bergantung pada jumlah pencarian, jumlah pembacaan block serta jumlah penulisan block.

Block adalah satuan pemrosesan I/O yang dapat dibaca/ditulis dalam suatu waktu dan terdiri atas beberapa record.

Operasi yang diterapkan pada aljabar relasional adalah seleksi, adapun algoritma dasar yang diterapkan pada operasi seleksi ada berbagai macam diantaranya sebagai berikut :

1. A1 (Linear Search)

Mengambil dan membaca block secara sekuensial. Satu block terdiri atas beberapa tuple. Jumlah tuple yang dapat ditampung dalam satu block disebut blocking factor (bf). Cost seleksi pada atribut2 yang bukan key yaitu n/bf = br = jumlah blok yang diperiksa, dengan n adalah jumlah tuple. Sedangkan cost untuk seleksi pada key adalah br/2 (rata2 untuk kasus terbaik dan terburuk)

2. A2 (Binary Search)

Prekondisi : seleksi pada atribut yang telah terurut. Cost yaitu [log2 (br)] + k, dengan k adalah jumlah blok yang mengandung tuple yang memenuhi kriteria (karena tidak harus unik). [log2 (br)] adalah cost untuk menempatkan tuple pertama pada binary search pada suatu block.



Sistem Basis Data
November 30, 2007, 3:52 pm
Diarsipkan di bawah: Sistem Basis Data

akhir-akhir ini, kesukesan dari sebuah organisasi ditentukan dari kemampuannya untuk mendapatkan data yang akhurat dan terpercaya dari operasi yang dijalankjannya. Banyaknya informasi yang ada saat ini menjadi hal berharga bagi perusaahaan yang menjadi salah satu komponen penting penentu kemajuan sebuah perusahaan. Untuk mengorganisasikan data secara efektif agar bisa digunakan untuk menganalisa data yang ada dibutuhkan sistem manajemen data yang powerful dan fleksibel dibuat untuk tujuan tersebut.
Oleh karena itu, teknologi sistem basis data hadir sebagai solusi permasalahan diatas. Basis data merupakan kumpulan dari data, yang digunakan oleh aplikasi dari suatu perusahaan. Sistem basis data adalah sistem terkomputerisasi untuk penyimpanan catatan/data. Sistem Basis Data melibatkan 4 komponen penting:
1. Data
2. Hardware
3. Software
4. User
Pada beberapa pustaka, terminologi dari teknologi ini biasa disamakan dengan sistem manajemen basis data. DBMS (Database management system) merupakan sebuah perangkat lunak kompleks, yang dioptimalkan untuk beberapa task tertentu (seperti memberikan query kompleks atau menangani rekuest konkuren), dan performa yang dimilikinya tidak berkurang untuk aplikasi apapun. Terdapat beberapa keuntungan penggunaan sistem basis data untuk pengelolaan data, yaitu :

  1. Data yang independen
  2. Keamanan dan integritas Data
  3. Administrasi data
  4. Akses konkuran dan crash crecovery
  5. Mengurangi waktu pengembangan aplikasi

Dengan keuntungan yang banyak ini, tidak ada alasan seseorang tidak menggunakan sistem basis data.
Created by: Ogie



[Dyah - 13504017] – Pengenalan Recovery
November 30, 2007, 2:23 pm
Diarsipkan di bawah: Sistem Basis Data

Udah lama ga posting :D . Tema sekarang sistem basis data ya.. Walau udah lupa coba kita refresh ingatan kita (buat yang udah ngambil mata kuliah sistem basis data), dan mempelajari hal baru (buat yang belum ngambil). Tema postingan kali ini adalah pengenalan tentang recovery.

Berbagai jenis failure yang sering terjadi dibagi menjadi tiga jenis, yaitu:

  • Transaction failure, yaitu yaitu failure yang terjadi selama proses transaksi. Contohnya failure jenis ini yaitu logical error dan system error. Logical error terjadi jika transaksi tidak dapat terselesaikan dengan semestinya karena terjadi error. Sedangkan system error adalah error yang menyebabkan sistem basis data menghentikan semua transaksi yang aktif.
  • System crash, yaitu failure yang terjadi sehingga dapat menyebabkan sistem crash.
  • Disk Failure, yaitu failure yang terjadi pada disk atau storage.

Dalam posting ini, yang akan dibahas adalah transaction failure, karena level failure yang dapat ditangani oleh basis data adalah sejauh ini. Terjadinya failure dapat menyebabkan inkonsistensi pada basis data. Karena itu dibutuhkan suatu mekanisme untuk menangani transaction failure. Algoritma recovery adalah teknik untuk mengatasi failure untuk menjamin konsistensi basis data. Algoritma recovery dibagi menjadi dua macam, yaitu:
1. Recovery dilakukan selama transaksi masih berlangsung, yaitu sebelum terjadi failure.
2. Recovery dilakukan setelah terjadinya failure.

Sebelum melangkah lebih jauh lagi, mari kita meninjau lagi tentang storage.
Jenis storage ada tiga, yaitu volatile, nonvolatile, dan stable storage. Volatile storage adalah storage yang bersifat tetap, misalnya main memory dan cache memory, sehingga tidak dapat diandalkan jika terjadi system crash karena mungkin data tidak dapat diselamatkan. Sedangkan nonvolatile storage adalah storage sementara seperti flash disk dan disk. Stable storage adalah storage yang dapat diandalkan meskipun terjadi failure jenis apapun. Pendekatannya dengan cara menyimpan banyak backup pada media nonvolatile yang berbeda-beda. Stable storage adalah storage yang sangat ideal, sehingga dalam dunia nyata mungkin tidak pernah ada, benarkah?

Mari kita kembali ke topik semula, recovery. Jika kita mengubah basis data tanpa memastikan bahwa transaksi telah commit, mungkin akan menyebabkan basis data tidak konsisten. Contoh yang umum digunakan, misalnya Transaksi T1 mengirim uang sebesar $10 dari account A ke account B. Misalnya terjadi failure ketika account A telah dipotong sebesar $10, namun account B belum ditambah sebesar $10. Seharusnya kedua account balance. Jika transaksi T1 berhasil (telah commit), basis data berarti telah dimodifikasi. Bila transaksi belum selesai, tidak ada modifikasi yang dilakukan pada basis data.

bersambung..



[Alsa - 13505074] Transaksi Basis Data
November 30, 2007, 2:08 pm
Diarsipkan di bawah: Sistem Basis Data, Uncategorized

Saran: Terlalu luas nih bahasannya.. Trus postingnya jangan terlalu kompleks (saran aja sih tp terserah),, jadi ga usa tlalu panjang..

Maap ya sebelumnya,, deadliner bgt nih,, jadi cuma bisa translate-rangkum.. hehehe.. ga keulang lagi dech..

Sebenarnya saya ingin mencari hubungannya dengan manajemen transaksi sistem basis data, namun dapetnya justru database transaction.

Dari wiki http://en.wikipedia.org/wiki/Database_transaction (Jangan terlalu dipercaya)

Transaksi basisdata adalah suatu unit interaksi dengan DBMS atau sistem yang serupa yang diperlakukan terpisah dengan transaksi lain secara coherent dan reliable. Transaksi basisdata haruslah atomik sehingga tidak dapat dibagi atau terpisah–terjadi atau tidak terjadi sama sekali. Idealnya, sistem basisdata harus menjamin ACID (Atomicity, Consistency, Isolation and Durability) pada setiap transaksi yang akan berguna pada praktiknya dilapangan.

Purpose of Transaction. Dalam database kemampuan dalam mengelola transaksi memberikan user keyakinan integritas dari suatu basisdata. Sebuah transaksi mungkin membutuhkan beberapa query, yang membaca atau menulis informasi dalam basisdata. Ketika hal ini terjadi, harus dipastikan tidak ada query yang terlewat yang akan digunakan pada basisdata. Contoh pada pemindahan uang, jika terjadi debit pada akun seseorang, maka harus terjadi kredit pada akun lain. Transaksi juga tidak boleh ter-interferensi oleh transaksi lain.

Transaksi sederhana dalam sistem basisdata biasanya SQL berbentuk:

1. Mulai transaksi

2. Eksekusi beberapa query

3. Mengakhiri transaksi

Jika salah satu query gagal, sistem basis data akan me-rollback seluruh transaksi atau query yang gagal tergantung dari DBMS atau settingannya. Transaksi tersebut juga dapat di-rollback secara manual kapan saja sebelum transaksi berakhir.



[Joel-13505092] SQL Fasilitas untuk Integrity Constraint
November 30, 2007, 12:28 pm
Diarsipkan di bawah: Sistem Basis Data

Integrity constraint merupakan hal yang sangat penting dalam sistem basis data karena SBD dipakai oleh banyak orang dan berdampak pada tingkat akurasi dan kebenaran suatu database dapat menurun jika integrity constraintnya tidak diperhatikan.
SQL menyediakan beberapa fasilitas untuk memastikan Integrity constraint tersebut. Salah dua nya adalah Assertion dan Triggers.

Assertion adalah predikat yang menunjukkan kondisi yang selalu harus dipenuhi di dalam suatu basis data. Sintaks SQL untuk assertion adalah

create assertion <assertion-name> check <predicate>

Sistem akan melakukan validasi ketika assertion dibuat dan ketika terjadi peng-update-an data. Salah satu contoh dari assertion misal : jumlah dari seluruh loan di suatu cabang harus lebih kecil dibandingkan jumlah semua account di cabang tersebut. Assertion yang dapat dibuat adalah

create assertion batasan-jumlah check (not exist (select * from branch where (select sum(amount) from loan where loan.branch-name = branch.branch-name) >= (select sum(amount) from account) where account.branch-name = branch.branch-name)))

Triggers adalah statement atau perintah yang akan dieksekusi otomatis oleh sistem ketika terjadi perubahan pada basis data. Untuk membuat trigger, ada dua hal yang harus diperhatikan yaitu kondisi spesifik saat trigger dijalankan dan aksi spesifik yang akan trigger lakukan.

Contoh : ketika balance pada account seseorang berjumlah minus, maka ada beberapa hal yang dapat dilakukan sistem, diantaranya adalah men-set balance menjadi 0, membuat loan sejumlah minus balance dari account tersebut. Contoh SQL nya.. ntar aja dahh.. msih ga ngerti bentuknya..hehehehe…