It's something unpredictable, but in the end it's right.

Pemrosesan Query dalam Basis Data

database

Apa itu Query?

Query berasal dari bahasa inggris yang berarti permintaan akan informasi. Lantas, apakah query dalam bahasa pemrograman memiliki artian yang sama?

Jadi, pada dasarnya, arti query dalam bahasa inggris dan bahasa pemrograman memiliki arti yang sama. Query dalam bahasa pemrograman berarti informasi yang diterima atau diambil dari database. Pada saat membuat query pun tidak boleh asal-asalan. Query ditulis berdasarkan pada sekumpulan pre-defined code sehingga database dapat memahami instruksi yang diminta. Nah, kode-kode tersebutlah yang kita sebut sebagai bahasa query.

Database juga menerapkan sebuah standar manajemen yang disebut sebagai Structure Query Language atau dapat disingkat dengan SQL. Perlu diketahui bahwa SQL dan MySQL merupakan dua hal yang berbeda. SQL merupakan bahasa query, sedangkan MySQL berupa software yang menggunakan bahasa tersebut.

Tahapan Pemrosesan Query

Tahapan-tahapan proses dari sebuah query di dalam sistem database akan saya uraikan di bawah ini:

  1. Scanner — melakukan identifikasi (pengenalan) token-token seperti SQL keywords, attribute, dan selation name. Proses ini sebut dengan scanning.
  2. Query Parser — mengecek kevalidan query dan kemudian menerjemahkannya ke dalam sebuah bentuk internal yaitu ekspresi relasi aljabar atau parse tree. Proses ini disebut dengan parsing.
  3. Query Optimizer — memeriksa semua ekspresi-ekspresi aljabar yang sama untuk query yang diberikan dan memilih salah satu dari ekspresi tersebut yang terbaik yang memiliki perkiraan termurah. Dengan kata lain, tugas dari query optimizer adalah menghasilkan sebuah rencana eksekusi. Proses ini disebut dengan optimisasi query.
  4. Code Generator / Interpreter — mentransformasikan rencana akses yang dihasilkan oleh optimizer ke dalam kode-kode. setelah itu, kode-kode tersebut dikirimkan ke dalam query processor untuk dijalankan.
  5. Query Processor — melakukan eksekusi query untuk mendapatkan hasil query yang diinginkan.

Pengukuran Biaya Query

Biaya evaluasi query dapat diukur dari banyaknya sumber daya (resource) sistem yang digunakan. Sumber daya yang dimaksud meliputi pengaksesan disk, waktu CPU mengerjakan query, dan untuk sistem basis data paralel atau terdistribusi. Adapun pada sistem basis data yang besar, dapat pula memberikan kontribusi biaya query yang dominan.

Optimizer query akan membuat informasi statistik yang tersimpan dalam katalog DBMS untuk memperkirakan besarnya biaya dari sebuah rencana query. Adapun informasi yang tersimpan tersebut meliputi:

  1. Banyaknya baris data (record) dalam sebuah tabel.
  2. Banyaknya blok baris berisi baris data dalam tabel.
  3. Ukuran setiap baris data dari tabel (satuan byte).
  4. Banyaknya nilai unik dalam tabel untuk suatu atribut.

Evaluasi Ekspresi

Sejauh ini, kita telah mempelajari bagaimana operasi relasional secara individu dilakukan. Sekarang waktunya kita untuk mempertimbangkan bagaimana mengevaluasi sebuah ekspresi yang mengandung beberapa operasi. Evaluasi ekspresi dapat dilakukan dengan 2 metode, yaitu melalui pendekatan materialization dan pendekatan pipelining.

Dalam metode materialization, ekspresi yang diberikan mengevaluasi satu operasi relasional dalam satu waktu. Selain itu, setiap operasi dievaluasi dalam urutan atau urutan yang sesuai. Setelah mengevaluasi semua operasi, keluarannya diwujudkan dalam hubungan sementara untuk penggunaan selanjutnya. Ini membawa metode materialisasi ke kerugian. Kerugiannya adalah bahwa ia perlu membangun hubungan sementara tersebut untuk mewujudkan hasil operasi yang dievaluasi, masing-masing. Hubungan sementara ini ditulis pada disk kecuali ukurannya kecil.

Dalam metode pipelining, ini memungkinkan kita untuk mengevaluasi setiap operasi relasional ekspresi secara bersamaan dalam pipeline. Dalam pendekatan ini, setelah mengevaluasi satu operasi, keluarannya diteruskan ke operasi berikutnya, dan rantai berlanjut hingga semua operasi relasional dievaluasi secara menyeluruh. Dengan demikian, tidak ada persyaratan untuk menyimpan hubungan sementara dalam pemipaan. Keuntungan pipelining seperti itu membuatnya menjadi pendekatan yang lebih baik dibandingkan dengan pendekatan yang digunakan dalam metode materialisasi. Bahkan biaya dari kedua pendekatan tersebut dapat memiliki perbedaan selanjutnya di antara keduanya. Namun, kedua pendekatan tersebut menjalankan peran terbaik dalam kasus yang berbeda. Dengan demikian, kedua cara tersebut layak di tempatnya.