Anda di halaman 1dari 8

Nama : Deni Agus Hendrawan

NIM : 09031282227116
Kelas : SI Reguler 4C

Query Processing

Query processing di dalam suatu basis data dilakukan dengan menggunakan bahasa query
(query language). Sebuah query adalah sebuah ekspresi bahasa yang menggambarkan data yang
akan didapatkan kembali dari sebuah database. Query dapat digunakan pada beberapa keadaan.
Kebanyakan aplikasi nyatanya adalah permintaan-permintaan secara langsung dari user yang
memerlukan informasi tentang bentuk maupun isi dari database. Bahasa query formal basis data
relasional adalah bahasa untuk meminta informasi dari basis data.
Pemrosesan query adalah aspek fundamental dari sistem manajemen basis data (DBMS). Ini
melibatkan menerjemahkan sebuah query yang ditulis dalam bahasa tingkat tinggi seperti SQL
menjadi serangkaian operasi tingkat rendah yang dapat dieksekusi oleh sistem untuk mengambil
informasi yang diinginkan dari basis data secara efisien.
DBMS menggunakan aljabar relasional sebagai bahasa dalam spesifikasi algoritma query.
Langkah-langkah DBMS untuk melakukan pengolahan query:

• Scanner melakukan identifikasi (pengenalan) token-token seperti SQL keywords,


attribute, dan relation name. Proses ini disebut dengan scanning.
• Query Parser mengecek kevalidan query dan kemudian menterjemahkannya ke
dalam sebuah bentuk internal yaitu ekspresi relasi aljabar atau parse tree. Proses ini
disebut dengan parsing.
• 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.
• Code Generator atau Interpreter mentransformasikan rencana akses yang
dihasilkan oleh optimizer ke dalam kode-kode. Setelah itu, kode-kode tersebut
dikirimkan ke dalam query processor untuk dijalankan.
• Query Processor melakukan eksekusi query untuk mendapatkan hasil query
yang diinginkan.
Operasi – operasi dasar Aljabar Relational
1. Selection (σ)
Operasi SELECT digunakan untuk memilih sebuah subset tuple-tuple dari sebuah relasi
yang memenuhi pilihan. Pada umumnya, operasi SELECT ditunjukkan oleh :  (R)
Sebagai contoh, untuk memilih tuple-tuple dari semua employee yang juga bekerja pada
department 4 dan menghasilkan salary lebih dari $25.000 per-tahun, atau bekerja pada
departement 5 dan menghasilkan $30.000 per-tahun, maka operasi SELECT yang dapat
ditetapkan adalah :

(DNO=4 AND SALARY>25000) OR (DNO=5 AND


SALARY>30000)(EMPLOYEE)

2. Projection ()
Operasi PROJECTION digunakan untuk memilih kolom-kolom tertentu dari tabel dan
membuang kolom-kolom lainnya yang tidak diperlukan. Pada umumnya operasi PROJECT
ditunjukkan oleh :

 (R)

3. Cartesian-product (X, disebut juga cross product)


Operasi CARTESIAN PRODUCT yang juga biasa disebut dengan CROSS PRODUCT atau
CROSS JOIN dilambangkan dengan “X“ yang juga merupakan sebuah kumpulan operasi
binary. Operasi ini digunakan untuk mengkombinasikan tuple-tuple dari dua relasi dalam
sebuah model gabungan.
Misalkan terdapat dua relasi, Employee dengan atribut Name dan Department, dan
Department dengan atribut DepartmentID dan DepartmentName. Operasi hasil kali
menghasilkan kombinasi semua tuple dari kedua relasi.
Menghasilkan semua kombinasi karyawan dan departemen:
Employee X Department

4. Union (U)
Hasil dari operasi ini ditunjukkan oleh R  S, yaitu sebuah relasi yang merupakan semua
tuple-tuple yang ada alam R atau S atau keduanya. Tuple duplikat dihilangkan.
Jika terdapat dua relasi, Employee1 dan Employee2, dengan atribut yang sama, operasi
gabungan menghasilkan relasi baru yang berisi semua tuple dari kedua relasi dengan
menghilangkan duplikat.
Menggabungkan semua karyawan dari dua relasi:
Employee1 U Employee2

5. Set-difference (-)
Hasil dari operasi ini ditunjukkan oleh R − S, yaitu sebuah relasi yang merupakan semua
tuple-tuple yang ada dalam R tetapi tidak ada dalam S.
Jika terdapat dua relasi, Employee dan Manager, operasi perbedaan himpunan menghasilkan
relasi baru yang berisi semua tuple yang ada di relasi pertama tetapi tidak ada di relasi
kedua.
Menghasilkan karyawan yang bukan manajer:
Employee - Manager

Operasi turunan Aljabar Relasional


1. Set intersection ()
Operasi ini dilambangkan dengan simbol  dan dilakukan tanpa menentukan kondisi
secara eksplisit. Operasi ini secara implisit menggunakan atribut yang memiliki nama
yang sama di kedua relasi untuk menggabungkannya.

AB

Terdapat relasi A dengan tuple {1, 2, 3} dan relasi B dengan tuple {2, 3, 4}, hasil
irisannya adalah {2, 3}.
2. Theta join ()
Operasi ini dilambangkan dengan simbol  dan dilakukan dengan menentukan kondisi
khusus (theta), biasanya dalam bentuk operator perbandingan seperti =, >, <, dsb.
Operasi ini menghasilkan relasi baru dengan melakukan gabungan berdasarkan kondisi
yang diberikan.
Employee ⨝[Employee.DepartmentID = Department.ID] Department

Terdapat relasi Employee dengan atribut ID dan Department, serta relasi Department
dengan atribut ID dan Name. Theta join antara kedua relasi ini dapat dilakukan dengan
kondisi Employee.DepartmentID = Department.ID.
3. Natural join (⨝)
Operasi ini dilambangkan dengan simbol ⨝ dan dilakukan tanpa menentukan kondisi
secara eksplisit. Operasi ini secara implisit menggunakan atribut yang memiliki nama
yang sama di kedua relasi untuk menggabungkannya.
Employee ⨝ Department

Terdapat relasi Employee dengan atribut ID, Name, dan Department, serta relasi
Department dengan atribut DepartmentID dan Name, natural join akan menggunakan
atribut Name dari kedua relasi untuk menggabungkannya.

4. Outer join ()


Operasi ini dilambangkan dengan simbol  dan digunakan untuk menggabungkan tuple-
tuple dari dua relasi, tetapi juga menyertakan tuple-tuple yang tidak memiliki padanan di
relasi lain.

Employee  Salary

Terdapat relasi Employee dengan karyawan yang memiliki ID dan relasi Salary dengan
karyawan yang memiliki gaji, outer join akan menyertakan semua karyawan, termasuk
yang tidak memiliki data gaji.

5. Division ()
Operasi ini dilambangkan dengan simbol  dan digunakan untuk membagi dua relasi.
Hasilnya adalah set dari nilai-nilai yang memenuhi suatu kondisi tertentu.

Department ÷ Employee

Terdapat relasi Department dengan atribut ID dan Name, serta relasi Employee dengan
atribut ID dan DepartmentID, operasi pembagian dapat digunakan untuk menemukan
departemen yang memiliki semua karyawan.

Algoritma untuk operasi select


A1: Linear search (brute force)
Mencari setiap record dalam file dan mengecek apakah nilainya sesuai dengan yang diinginkan.
A2: Binary search
Jika kondisi pemilihan melibatkan perbandingan kesamaan pada atribut kunci dimana
kolomnya terurut maka binary search dapat digunakan. (Contoh OP1). Binary search lebih
efisien dari linear search.
A3: Menggunakan primary index atau hash key untuk mengembalikan satu record
Jika kondisi pemilihan melibatkan perbandingan kesamaan atribut kunci dengan primary index
(atau hash key), maka dapat digunakan primary index (atau hash key) untuk mendapatkan
record.
A4: Menggunakan primary index untuk mendapatkan banyak record
Jika kondisi perbandingan berupa >, >, <, ≤ pada atribut kunci dengan primary index, maka
dapat menggunakan index untuk mendapatkan record yang sama lalu record yang sebelum atau
sesudah pada file yang terurut.
A5: Menggunakan clustering index untuk mendapatkan banyak record
Jika kondisi perbandingan melibatkan kesamaan pada atribut bukan-kunci dengan clustering
index, maka dapat menggunakan clustering index untuk mendapatkan semua record yang
sesuai dengan kondisi pemilihan.
A6: Menggunakan secondary (B+-tree) index
Pada perbandingan kesamaan, metode pemilihan ini dapat digunakan untuk mendapatkan satu
record jika indexing field memiliki nilai unique (berupa kunci) atau untuk mendapatkan banyak
record jika indexing field bukanlah kunci. Dapat digunakan untuk mendapatkan record dalam
bentuk range query (ada simbol >, >, <, ≤)
A7: Pemilihan conjunctive
Jika ada satu (single) perbandingan melibatkan kondisi conjunctive, maka dipilih cara antara
A2-A6 kemudian hasilnya dicek sesuai dengan kondisi conjunctivenya
A8: Pemilihan conjunctive menggunakan composite index
Jika ada dua atau lebih atribut yang terlibat dalam perbandingan kesamaan pada kondisi
conjunctive dan terdapat composite index (atau struktur hash) wujud pada atribut-atribut
tersebut, maka dapat menggunakan index tersebut secara langsung.
A9: Pemilihan conjunctive melalui intersection dari record pointer
Cara ini mungkin digunakan jika ada secondary index pada semua (atau sebagaian) atribut yang
terlibat dalam kondisi perbandingan kesamaan kondisi conjunctive dan index meliputi record
pointer.

Algoritma untuk operasi JOIN


J1: Nested-loop join (brute force):
Untuk setiap record t di dalam R (outer loop), mencapai setiap record s dalam S (inner loop)
dan mengecek apakah dua record tersebut memenuhi syarat t[A] = s[B].
J2: Single-loop join (menggunakan struktur akses untuk mencapai record sesuai):
Jika satu index (atau hash key) wujud untuk satu dari dua atribut join - anggap atribut b pada
S- digunakan untuk mencapai setiap record t dalam R, satu per satu dan menggunakan struktur
akses untuk mencapai semua record sesuai s dari S yang memenuhi syarat s[B] = t[A].
J3: Sort-merge join:
•Jika record dalam R dan S dalam bentuk terurut berdasarkan atribut join a dan b, maka proses
join menjadi lebih efisien. Kedua file discan dengan urutan berdasarkan atribut jon,
menyandingkan record yang memiliki nilai a dan b yang sama. Pada cara ini, setiap record
dalam file hanya discan sekali saja untuk mencari record sesuai pada file yang lain; kecuali
kedua-dua a dan b bukan atribut kunci maka cara ini perlu dimodifikasi.
J4: Hash-join:
Record yang ada dalam file R dan S sama di-hash ke dalam hash file yang sama menggunakan
fungsi hashing yang sama berdasarkan atribut join a pada R dan b pada S sebagai kunci hash.
Pembacaan pada file dengan record lebih sedikit (anggap R) akan meng-hash recordnya ke
dalam hash file bucket. Pembacaan file yang lain (S) kemudian meng-hash setiap recordnya ke
bucket yang sama, dimana record dikombinasi dengan record sesuai yang berasal dari R.
Algoritma untuk operasi PROJECT
Algoritma untuk operasi PROJECT adalah sebagai berikut: π <daftar atribut>(R). Jika daftar
atribut mencakup atribut kunci dari relasi R, maka semua tupel dari R diekstraksi untuk semua
atribut dalam daftar atribut. Namun, jika daftar atribut tidak mencakup atribut kunci dari R,
tupel yang merupakan duplikat harus dihapus dari hasil. Metode yang umum digunakan untuk
menghapus tupel duplikat adalah dengan menggunakan sorting atau hashing. Dengan sorting,
tupel diurutkan berdasarkan nilai atribut yang dipilih, dan duplikat dapat dihapus dengan
membandingkan tupel berturut-turut. Sementara itu, hashing melibatkan penggunaan fungsi
hash untuk mengidentifikasi dan menghapus duplikat secara efisien berdasarkan nilai-nilai
atribut yang di-hash.Algoritma untuk operasi SET
Operasi SET: UNION, INTERSECTION, SET DIFFERENCE and CARTESIAN
PRODUCT
Produk Cartesian dari relasi R dan S menghasilkan semua kemungkinan pasangan yang
mungkin dari R dan S. Hasilnya berisi semua atribut yang ada di R dan S. Namun, analisis biaya
dari produk Cartesian menunjukkan bahwa jika R memiliki n record dan j atribut, serta S
memiliki m record dan k atribut, maka hasil Cartesian akan memiliki n * m record dan j + k
atribut. Karena itu, produk Cartesian merupakan operasi yang sangat "expensive" dan sebaiknya
dihindari jika memungkinkan.
• UNION
Pada operasi UNION, langkah-langkahnya adalah sebagai berikut: pertama, kedua relasi
diurutkan berdasarkan atribut yang sama. Kemudian, dilakukan pemindaian dan penggabungan
file yang telah diurutkan satu per satu. Jika terdapat tuple yang sama pada kedua relasi, hanya
satu di antaranya yang akan disimpan dalam hasil akhir, sehingga menghindari duplikasi data.
• INTERSECTION
Pada operasi INTERSECTION, prosesnya adalah sebagai berikut: pertama, kedua relasi diurutkan
berdasarkan atribut yang sama. Selanjutnya, dilakukan pemindaian dan penggabungan file
yang telah diurutkan satu per satu. Namun, yang disimpan hanya tuple yang muncul pada
kedua-dua relasi, sehingga menghasilkan himpunan elemen yang sama dalam kedua relasi
tersebut.

• SET DIFFERENCE (R-S)


Pada operasi SET DIFFERENCE (R-S), langkah-langkahnya adalah sebagai berikut: pertama-
tama, dilakukan penggabungan file dari relasi R dan S. Namun, hanya tuple yang terdapat di
relasi R dan tidak muncul di relasi S yang akan disimpan dalam hasil akhir. Dengan demikian,
operasi ini menghasilkan himpunan elemen yang terdapat di relasi R tetapi tidak terdapat di
relasi S.

Contoh Query Processing

Seorang pengguna ingin mencari nama dan gaji dari semua karyawan yang bekerja di departemen "IT"
dan memiliki gaji di atas 5000. Query yang dia masukkan adalah:

SELECT Name, Salary FROM Employees WHERE Department = 'IT' AND Salary > 5000;
Proses scanning akan mengidentifikasi token-token seperti SELECT, FROM, WHERE, Name,
Salary, Employees, Department, IT, 5000, dll.
Setelah scanning, query parser akan memeriksa kevalidan query tersebut dan
menterjemahkannya ke dalam bentuk internal, seperti ekspresi relasi aljabar atau parse tree.
Query tersebut akan diuraikan menjadi struktur data yang sesuai dengan sintaks SQL, misalnya:
π{Name, Salary}(σ{Department = 'IT' ∧ Salary > 5000}(Employees))Ini adalah bentuk ekspresi
relasi aljabar untuk query tersebut.
Selanjutnya, query optimizer akan memeriksa berbagai cara untuk mengeksekusi query tersebut
dan memilih rencana eksekusi yang paling efisien. Misalnya, optimizer mungkin memilih untuk
menggunakan indeks pada kolom Department dan Salary untuk meningkatkan kinerja pencarian
data.
Setelah optimisasi, kode generator atau interpreter akan mentransformasikan rencana akses yang
dihasilkan oleh optimizer ke dalam kode-kode yang dapat dieksekusi. Ini bisa berupa instruksi
SQL yang dijalankan oleh database engine, atau kode-kode yang akan dijalankan secara
langsung oleh sistem manajemen basis data (DBMS).
Terakhir, query processor akan menjalankan kode-kode yang dihasilkan untuk mengeksekusi
query. Ini akan mengakses data dari tabel Employees, menerapkan kondisi seleksi, dan
kemudian melakukan proyeksi pada kolom Name dan Salary. Hasil akhirnya adalah daftar nama
dan gaji karyawan yang memenuhi kriteria yang ditetapkan dalam query.

Anda mungkin juga menyukai