Anda di halaman 1dari 14

Keberhasilan teknologi database relasional dalam pengolahan data ini disebabkan, sebagian, untuk

ketersediaan bahasa non-prosedural (yaitu, SQL), yang secara signifikan dapat meningkatkan
pengembangan aplikasi dan produktivitas pengguna akhir. Dengan menyembunyikan rincian tingkat
rendah
tentang organisasi fisik dari data, bahasa database relasional memungkinkan
ekspresi query kompleks secara ringkas dan sederhana. Secara khusus, untuk
membangun jawaban untuk pertanyaan itu, pengguna tidak tepat menentukan prosedur
untuk mengikuti. Prosedur ini sebenarnya dirancang oleh modul DBMS, biasanya disebut
prosesor query. Hal ini mengurangi pengguna dari optimasi query, memakan waktu
tugas yang paling ditangani oleh prosesor query, karena dapat memanfaatkan sejumlah besar
informasi yang berguna tentang data.
Karena ini adalah masalah kinerja kritis, pemrosesan query telah menerima (dan
terus menerima) perhatian dalam konteks baik dan terpusat
didistribusikan DBMS. Namun, masalah pemrosesan query jauh lebih sulit
dalam lingkungan didistribusikan daripada yang terpusat, karena sejumlah besar
parameter mempengaruhi kinerja query terdistribusi. Secara khusus, hubungan
terlibat dalam query didistribusikan dapat terpecah-pecah dan / atau direplikasi, sehingga Induc-ing
biaya overhead komunikasi. Selain itu, dengan banyak situs untuk mengakses, permintaan
waktu tanggapan dapat menjadi sangat tinggi.
Dalam bab ini kita memberikan gambaran pengolahan query dalam DBMS terdistribusi,
meninggalkan rincian aspek penting dari pemrosesan query terdistribusi ke depan
dua bab. Konteks yang dipilih adalah bahwa kalkulus relasional dan aljabar relasional,
karena umum dan digunakan secara luas dalam DBMS terdistribusi. Seperti kita lihat dalam Bab
3, hubungan didistribusikan dilaksanakan oleh fragmen. Distributed desain database
sangat penting untuk pemrosesan query karena definisi fragmen didasarkan
pada tujuan meningkatkan lokalitas referensi, dan kadang-kadang eksekusi paralel
untuk pertanyaan yang paling penting. Peran prosesor permintaan didistribusikan adalah untuk
memetakan
query tingkat tinggi (diasumsikan dinyatakan dalam kalkulus relasional) pada terdistribusi
database (yaitu, satu set hubungan global) menjadi urutan operator database (dari
aljabar relasional) pada fragmen relasi. Beberapa fungsi penting mencirikan
pemetaan ini. Pertama, permintaan kalkulus harus didekomposisi menjadi urutan
operator relasional disebut query aljabar. Kedua, data yang diakses oleh
205
DOI 10.1007/978-1-4419-8834-8_6, © Springer Science + Business Media, LLC 2011
M.T. Özsu dan P. Valduriez, Prinsip Sistem Terdistribusi Database: Edisi Ketiga,
206 6 Ikhtisar Query Pengolahan
query harus dilokalisasi sehingga operator pada hubungan dijabarkan untuk menanggung pada
data lokal (fragmen). Akhirnya, pertanyaan aljabar pada fragmen harus diperpanjang
dengan operator komunikasi dan dioptimalkan sehubungan dengan fungsi biaya menjadi
diminimalkan. Fungsi biaya ini biasanya mengacu pada sumber daya komputasi seperti disk
I / O, CPU, dan jaringan komunikasi.
Bab ini disusun sebagai berikut. Dalam Bagian 6.1 kita menggambarkan masalah pemrosesan query.
Dalam Bagian 6.2 kita mendefinisikan dengan tepat tujuan pemrosesan query
algoritma. Kompleksitas operator aljabar relasional, yang mempengaruhi terutama
kinerja pemrosesan query, diberikan dalam Bagian 6.3. Dalam Bagian 6.4 kita memberikan
karakterisasi prosesor query berdasarkan pilihan pelaksanaannya. Akhirnya,
dalam Bagian 6.5 kami memperkenalkan berbagai lapisan pemrosesan query mulai dari
didistribusikan permintaan ke pelaksanaan operator pada situs lokal dan komunikasi antara situs.
Lapisan diperkenalkan di Bagian 6.5 akan dijelaskan secara rinci dalam
dua bab berikutnya.
6.1

Fungsi utama dari query processor relasional adalah untuk mengubah query-tingkat tinggi
(biasanya, dalam kalkulus relasional) ke query-tingkat yang lebih rendah setara (biasanya,
dalam beberapa variasi aljabar relasional). Tingkat rendah permintaan sebenarnya
mengimplementasikan strategi eksekusi untuk query. Transformasi harus mencapai kedua
kebenaran dan efisiensi. Itu benar jika query tingkat rendah memiliki semantik yang sama
seperti query, yaitu, jika kedua query menghasilkan hasil yang sama. The terdefinisi dengan
baikpemetaan dari kalkulus relasional aljabar relasional (lihat Bab 2) membuat kebenaran
masalah mudah. Tapi menghasilkan strategi eksekusi yang efisien lebih terlibat.
Sebuah query kalkulus relasional mungkin memiliki banyak transformasi setara dan
benarndalam aljabar relasional. Karena setiap strategi eksekusi setara dapat menyebabkan
sangat konsumsi berbagai sumber daya komputer, kesulitan utama adalah untuk memilih
strategi eksekusi yang meminimalkan konsumsi sumber daya.

Hal ini secara intuitif jelas bahwa pertanyaan kedua, yang menghindari produk Cartesian
EMP dan ASG, mengkonsumsi sumber daya komputasi jauh lebih sedikit daripada yang pertama, dan
dengan demikian
harus dipertahankan. ?
Dalam konteks terpusat, strategi eksekusi query dapat dinyatakan baik dalam
perpanjangan aljabar relasional. Peran utama dari query processor terpusat adalah untuk
memilih, untuk query yang diberikan, yang terbaik permintaan aljabar relasional antara semua yang
setara.
Karena masalahnya adalah komputasi terselesaikan dengan sejumlah besar hubungan
[Ibaraki dan Kameda, 1984], umumnya dikurangi untuk memilih solusi yang dekat dengan
optimal.
Dalam sistem terdistribusi, aljabar relasional tidak cukup untuk mengungkapkan eksekusi
strategi. Ini harus dilengkapi dengan operator untuk pertukaran data antara
situs. Selain pilihan memesan operator aljabar relasional, yang didistribusikan
query processor juga harus memilih situs terbaik untuk mengolah data, dan mungkin cara
Data harus diubah. Hal ini meningkatkan ruang solusi dari yang untuk memilih
strategi eksekusi terdistribusi, membuat pemrosesan query terdistribusi secara signifikan
lebih sulit.

Contoh 6.2. Contoh ini menggambarkan pentingnya pemilihan lokasi dan komunitas-nication untuk
permintaan aljabar relasional yang dipilih terhadap database terfragmentasi. kami
perhatikan pertanyaan berikut Contoh 6.1

fragmen ASG
1, ASG2
, EMP1
, Dan EMP2 disimpan di lokasi 1, 2, 3, dan 4,
masing-masing, dan hasilnya diharapkan di situs 5.
Demi kesederhanaan pedagogis, kita mengabaikan operator proyek dalam
berikut. Dua setara strategi eksekusi didistribusikan untuk permintaan di atas ditunjukkan pada
Gambar 6.1. Panah dari situs saya ke situs j berlabel R menunjukkan bahwa
relasi R ditransfer dari situs saya ke situs j. Strategi memanfaatkan fakta bahwa hubungan
EMP dan ASG terfragmentasi dengan cara yang sama untuk melakukan pilih dan bergabung
Operator secara paralel. Strategi B memusatkan semua data operan di lokasi sebelum hasil
pengolahan query.

Untuk mengevaluasi konsumsi sumber daya dari dua strategi, kita menggunakan sederhana
Model biaya. Kami berasumsi bahwa akses tuple, dilambangkan dengan tupacc, adalah 1 unit (yang
kita
meninggalkan ditentukan) dan transfer tupel, dilambangkan tuptrans, adalah 10 unit. Kami
berasumsi
bahwa hubungan EMP dan ASG memiliki 400 dan 1000 tupel, masing-masing, dan bahwa ada
adalah 20 manajer dalam kaitannya ASG. Kami juga menganggap bahwa data terdistribusi secara
merata
antara situs. Akhirnya, kita mengasumsikan bahwa hubungan ASG dan EMP secara lokal berkerumun
di
atribut RESP dan Eno, masing-masing. Oleh karena itu, ada akses langsung ke tupel
ASG (masing-masing, EMP) berdasarkan nilai atribut RESP (masing-masing, ENO).
Total biaya strategi A dapat diturunkan sebagai berikut:
Dalam strategi A, join ASG
0
dan EMP (langkah 3) dapat memanfaatkan indeks cluster pada
Eno EMP. Dengan demikian, EMP diakses hanya sekali untuk setiap tupel ASG
0
. dalam strategi
B, kita asumsikan bahwa metode akses hubungan EMP dan ASG berdasarkan atribut
RESP dan Eno yang hilang karena transfer data. Ini adalah asumsi yang masuk akal
dalam praktek. Kami berasumsi bahwa join dari EMP dan ASG
0
pada langkah 4 dilakukan oleh
standar algoritma nested loop (yang hanya melakukan produk Cartesian dari
dua relasi input). Sebuah strategi yang lebih baik dengan faktor 50, yang cukup signifikan.
Selain itu, memberikan distribusi yang lebih baik kerja di antara situs. perbedaan
akan lebih tinggi jika kita mengasumsikan komunikasi lambat dan / atau tingkat yang lebih tinggi
fragmentasi. ?

6.2

Seperti disebutkan sebelumnya, tujuan pemrosesan query dalam konteks didistribusikan adalah
trans-membentuk permintaan tingkat tinggi pada database terdistribusi, yang dipandang sebagai
sebuah database tunggal
oleh pengguna, menjadi sebuah strategi eksekusi yang efisien disajikan dalam bahasa tingkat rendah
pada
database lokal. Kami berasumsi bahwa bahasa tingkat tinggi adalah kalkulus relasional, sementara
bahasa tingkat rendah merupakan perpanjangan dari aljabar relasional dengan komunikasi
operator. Lapisan yang berbeda yang terlibat dalam transformasi permintaan rinci dalam
Bagian 6.5. Sebuah aspek penting dari pemrosesan query adalah optimasi query. Karena
banyak strategi eksekusi adalah transformasi yang benar dari pertanyaan tingkat tinggi yang sama,
salah satu yang mengoptimalkan (meminimalkan) konsumsi sumber daya harus dipertahankan.
Sebuah ukuran yang baik dari konsumsi sumber daya adalah total biaya yang akan dikeluarkan
dalam pengolahan query [Sacco dan Yao, 1982]. Biaya total adalah jumlah dari semua kali
terjadi dalam pengolahan operator query di berbagai situs dan intersite
komunikasi. Ukuran lain yang baik adalah waktu respon query [Epstein
et al., 1978], yang merupakan waktu yang direncanakan untuk mengeksekusi query. Karena operator
210 6 Ikhtisar Query Pengolahan
dapat dieksekusi secara paralel di lokasi yang berbeda, waktu respon query mungkin
secara signifikan kurang dari biaya total.

6.3

Dalam bab ini kita menganggap aljabar relasional sebagai dasar untuk mengekspresikan output dari
query
pengolahan. Oleh karena itu, kompleksitas operator aljabar relasional, yang secara langsung
mempengaruhi waktu eksekusi mereka, menentukan beberapa prinsip yang berguna untuk prosesor
query.
Prinsip-prinsip ini dapat membantu dalam memilih strategi eksekusi akhir.
Cara termudah untuk mendefinisikan kompleksitas adalah dalam hal hubungan kardinalitas
independen rincian pelaksanaan fisik seperti fragmentasi dan struktur penyimpanan. Gambar 6.2
menunjukkan kompleksitas operator unary dan binary dalam
rangka peningkatan kompleksitas, dan dengan demikian meningkatkan waktu eksekusi. kompleksitas
O (n) untuk operator unary, dimana n menunjukkan hubungan kardinalitas, jika dihasilkan
tupel dapat diperoleh secara independen satu sama lain. Kompleksitas adalah O (n? Logn) untuk
operator biner jika setiap tupel dari satu relasi harus dibandingkan dengan setiap tuple dari
lain atas dasar kesetaraan atribut yang dipilih. Kompleksitas ini mengasumsikan bahwa
tupel dari setiap relasi harus diurutkan pada atribut perbandingan. Namun, dengan menggunakan
hashing dan cukup memori untuk menyimpan satu relasi hash dapat mengurangi kompleksitas
biner operator O (n) [Bratbergsengen, 1984]. Proyek dengan duplikat eliminasi
dan operator pengelompokan mensyaratkan bahwa setiap tupel relasi harus dibandingkan dengan
masing-masing
tuple lainnya, dan dengan demikian juga memiliki O (n? logn) kompleksitas. Akhirnya, kompleksitas
adalah O (n
2
)
untuk produk Cartesian dari dua relasi karena setiap tuple dari satu relasi harus
dikombinasikan dengan setiap tuple yang lain.
Ini sederhana melihat kompleksitas Operator menunjukkan dua prinsip. Pertama, karena
kompleksitas relatif terhadap hubungan kardinalitas, operator yang paling selektif yang mengurangi
kardinalitas (misalnya, seleksi) harus dilakukan pertama. Kedua, operator harus
diperintahkan oleh meningkatnya kompleksitas sehingga produk Cartesian dapat dihindari atau
tertunda.

6.4

Hal ini cukup sulit untuk mengevaluasi dan membandingkan prosesor query dalam konteks
baik
sistem terpusat [Jarke dan Koch, 1984] dan sistem terdistribusi [Sacco dan
212 6 Ikhtisar Query Pengolahan
Yao, 1982; APERS et al, 1983;. Kossmann, 2000] karena mereka mungkin berbeda dalam
banyak
aspek. Dalam apa yang berikut, kami daftar karakteristik penting dari prosesor query yang
dapat digunakan sebagai dasar untuk perbandingan. Pertama empat karakteristik tahan untuk
kedua
prosesor permintaan terpusat dan terdistribusi sementara empat karakteristik berikutnya
adalah
khusus untuk prosesor permintaan didistribusikan dalam DBMS terdistribusi erat-terpadu.
Karakterisasi ini digunakan dalam Bab 8 untuk membandingkan berbagai algoritma.

6.4.1

Awalnya, sebagian besar bekerja pada pemrosesan query dilakukan dalam konteks relasional
DBMS
karena bahasa tingkat tinggi mereka memberikan sistem banyak kesempatan untuk optimiza-
tion. Bahasa input ke prosesor query demikian didasarkan pada kalkulus relasional.
Dengan DBMS objek, bahasa didasarkan pada objek kalkulus yang hanyalah sebuah
perpanjangan kalkulus relasional. Dengan demikian, dekomposisi ke objek aljabar juga
dibutuhkan
(lihat Bab 15). XML, model data lain yang kita bahas dalam buku ini, yang memiliki
bahasa sendiri, terutama di XQuery dan XPath. Eksekusi mereka membutuhkan khusus
peduli bahwa kita bahas dalam Bab 17.
Mantan membutuhkan fase tambahan untuk menguraikan permintaan dinyatakan dalam
kalkulus relasional dalam aljabar relasional. Dalam konteks didistribusikan, bahasa keluaran
umumnya beberapa bentuk internal aljabar relasional ditambah dengan komunikasi
primitif. Operator bahasa output langsung diimplementasikan dalam
sistem. Pemrosesan query harus melakukan pemetaan efisien dari bahasa input
ke bahasa output.

6.4.2

Secara konseptual, optimasi query bertujuan memilih "terbaik" titik dalam larutan
ruang semua strategi eksekusi mungkin. Sebuah metode langsung untuk permintaan optimiza-tion
adalah untuk mencari ruang solusi, mendalam memprediksi biaya setiap strategi, dan
memilih strategi dengan biaya minimum. Meskipun metode ini efektif dalam memilih
strategi terbaik, mungkin dikenakan biaya pengolahan yang signifikan untuk optimasi itu sendiri.
Masalahnya adalah bahwa ruang solusi dapat besar, yaitu, mungkin ada banyak
strategi setara, bahkan dengan sejumlah kecil hubungan. Masalahnya menjadi
lebih buruk karena jumlah relasi atau fragmen meningkat (misalnya, menjadi lebih besar dari
5 atau 6). Setelah optimasi biaya tinggi tidak selalu buruk, terutama jika query
optimasi dilakukan sekali untuk banyak eksekusi berikutnya query. Oleh karena itu,
"Lengkap" pendekatan pencarian sering digunakan dimana (hampir) semua kemungkinan eksekusi
strategi dianggap [Selinger et al., 1979].
Untuk menghindari biaya tinggi pencarian lengkap, strategi acak, seperti berulang
perbaikan [Swami, 1989] dan simulasi annealing [Ioannidis dan Wong, 1987]
6.4 Karakterisasi Query Prosesor 213
telah diusulkan. Mereka mencoba untuk menemukan solusi yang sangat baik, belum tentu yang
terbaik,
tapi menghindari biaya tinggi optimasi, dalam hal memori dan waktu konsumsi.
Cara lain yang populer untuk mengurangi biaya pencarian lengkap adalah penggunaan
heuristik, yang berlaku adalah untuk membatasi ruang solusi sehingga hanya beberapa strategi
dianggap. Dalam kedua sistem terpusat dan terdistribusi, heuristik umum adalah untuk
memperkecil ukuran hubungan antara. Hal ini dapat dilakukan dengan melakukan operan
operator pertama, dan memerintahkan operator biner dengan ukuran peningkatan mereka
hubungan antara. Sebuah heuristik penting dalam sistem terdistribusi adalah untuk menggantikan
bergabung
operator dengan kombinasi semijoins untuk meminimalkan komunikasi data.

6.4.3

Sebuah query dapat dioptimalkan pada waktu yang berbeda relatif terhadap waktu yang sebenarnya
query
eksekusi. Optimasi dapat dilakukan secara statis sebelum mengeksekusi query atau dynami-Cally
sebagai query dijalankan. Optimasi query statis dilakukan pada penyusunan permintaan
waktu. Dengan demikian biaya optimasi mungkin diamortisasi selama beberapa eksekusi query.
Oleh karena itu, waktu ini cocok untuk digunakan dengan metode pencarian lengkap. sejak
ukuran dari hubungan antara strategi yang tidak diketahui sampai waktu berjalan, mereka
harus diperkirakan dengan menggunakan basis data statistik. Kesalahan dalam perkiraan ini dapat
menyebabkan
pilihan strategi suboptimal.
Dinamis hasil optimasi query pada waktu eksekusi query. Pada setiap titik
eksekusi, pilihan terbaik operator berikutnya dapat didasarkan pada pengetahuan yang akurat
hasil dari operator dieksekusi sebelumnya. Oleh karena itu, statistik database tidak
diperlukan untuk memperkirakan ukuran hasil antara. Namun, mereka mungkin masih bermanfaat
dalam memilih operator pertama. Keuntungan utama daripada optimasi query statis
adalah bahwa ukuran sebenarnya dari hubungan antara yang tersedia untuk prosesor query,
sehingga meminimalkan kemungkinan pilihan yang buruk. Kelemahan utama adalah bahwa
optimasi query, tugas mahal, harus diulang untuk setiap pelaksanaan
query. Oleh karena itu, pendekatan ini adalah yang terbaik untuk query ad-hoc.
Optimasi query Hybrid mencoba untuk memberikan keuntungan dari permintaan statis Opti-
mization sambil menghindari isu-isu yang dihasilkan oleh estimasi yang tidak akurat. pendekatan
pada dasarnya statis, tetapi dinamis optimasi query dapat terjadi pada jangka waktu ketika
perbedaan tinggi antara diprediksi ukuran dan ukuran sebenarnya dari hubungan intermediate
terdeteksi.

6.4.4

Efektivitas optimasi query bergantung pada statistik pada database. dinamis


optimasi query membutuhkan statistik untuk memilih operator harus
dilakukan terlebih dahulu. Optimasi query statis bahkan lebih menuntut karena ukuran
hubungan antara juga harus diestimasi berdasarkan informasi statistik. dalam
214 6 Ikhtisar Query Pengolahan
database terdistribusi, statistik untuk optimasi query biasanya menanggung pada fragmen,
dan termasuk fragmen kardinalitas dan ukuran serta ukuran dan jumlah yang berbeda
nilai masing-masing atribut. Untuk meminimalkan kemungkinan kesalahan, statistik yang
lebih rinci
seperti histogram nilai atribut kadang-kadang digunakan dengan mengorbankan yang lebih
tinggi
biaya manajemen. Keakuratan statistik dicapai dengan update berkala. dengan
optimasi statis, perubahan signifikan dalam statistik digunakan untuk mengoptimalkan query
mungkin
mengakibatkan reoptimization query.

6.4.5

Ketika optimasi statis digunakan, baik satu situs atau beberapa situs dapat berpartisipasi
dalam pemilihan strategi yang akan diterapkan untuk menjawab query. kebanyakan sistem
menggunakan pendekatan pengambilan keputusan terpusat, di mana satu situs menghasilkan
strategi.
Namun, proses pengambilan keputusan dapat didistribusikan antara berbagai situs yang
berpartisipasi
dalam penjabaran strategi terbaik. Pendekatan terpusat sederhana tetapi membutuhkan
pengetahuan tentang seluruh database didistribusikan, sedangkan pendekatan didistribusikan
membutuhkan
hanya informasi lokal. Pendekatan hybrid di mana satu situs membuat keputusan-keputusan penting
dan situs lainnya dapat membuat keputusan lokal juga sering. Misalnya, Sistem R *
[Williams et al., 1982] menggunakan pendekatan hybrid.

6.4.6

Topologi jaringan umumnya dimanfaatkan oleh prosesor query terdistribusi. dengan


wide area network, fungsi biaya harus diminimalkan dapat dibatasi pada data
biaya komunikasi, yang dianggap sebagai faktor dominan. asumsi ini
sangat menyederhanakan didistribusikan optimasi query, yang dapat dibagi menjadi dua
permasalahan tersendiri: pemilihan strategi eksekusi global, berdasarkan intersite
komunikasi, dan pemilihan masing-masing strategi eksekusi lokal, berdasarkan terpusat
algoritma pemrosesan query.
Dengan jaringan area lokal, biaya komunikasi sebanding dengan I / O biaya.
Oleh karena itu, masuk akal untuk prosesor query didistribusikan untuk meningkatkan paralel
eksekusi dengan mengorbankan biaya komunikasi. Kemampuan penyiaran
beberapa jaringan area lokal dapat dimanfaatkan berhasil untuk mengoptimalkan pengolahan
bergabung operator [
¨
Ozsoyoglu dan Zhou, 1987; Wah dan Lien, 1985]. algoritma lain
khusus untuk mengambil keuntungan dari topologi jaringan dibahas oleh Kerschberg
et al. [1982] untuk jaringan bintang dan oleh LaChimia [1984] untuk jaringan satelit.
Dalam lingkungan client-server, kekuatan workstation klien dapat dimanfaatkan
untuk melakukan operator database menggunakan pengiriman data [Franklin et al., 1996]. itu
masalah optimasi menjadi untuk memutuskan bagian mana dari query harus dilakukan
pada klien dan bagian mana pada server menggunakan pengiriman query.

6.4.7

Sebuah relasi didistribusikan biasanya dibagi menjadi fragmen relasi seperti yang dijelaskan
dalam Bab-ter 3. Query terdistribusi diekspresikan pada hubungan global dipetakan ke
pertanyaan tentang
fragmen fisik hubungan dengan menerjemahkan hubungan menjadi fragmen-fragmen. Kami
menyebutnya
Proses lokalisasi karena fungsi utamanya adalah untuk melokalisasi data yang terlibat dalam
query. Untuk keandalan yang lebih tinggi dan kinerja yang lebih baik membaca, hal ini
berguna untuk memiliki
fragmen direplikasi di lokasi yang berbeda. Kebanyakan algoritma optimasi
mempertimbangkan proses lo-calization independen optimasi. Namun, beberapa algoritma
mengeksploitasi
keberadaan fragmen direplikasi pada waktu berjalan untuk meminimalkan komunikasi
kali. Algoritma optimasi kemudian lebih kompleks karena ada yang lebih besar
sejumlah strategi yang mungkin.
6.4.8

Operator semijoin memiliki sifat penting untuk mengurangi ukuran dari operan
hubungan. Ketika komponen biaya utama yang dipertimbangkan oleh prosesor query adalah komu-
nikasi, semijoin yang sangat berguna untuk meningkatkan pengolahan terdistribusi
bergabung operator karena mengurangi ukuran data yang dipertukarkan antara situs. Namun,
dengan menggunakan
semijoins dapat mengakibatkan peningkatan jumlah pesan dan di lokal
waktu pemrosesan. Para DBMS didistribusikan awal, seperti SDD-1 [Bernstein et al.,
1981], yang dirancang untuk jaringan area luas lambat, membuat ekstensif menggunakan
semijoins. Beberapa sistem kemudian, seperti R * [Williams et al., 1982], menganggap lebih cepat
jaringan dan tidak mempekerjakan semijoins. Sebaliknya, mereka melakukan bergabung secara
langsung karena
menggunakan bergabung mengarah untuk menurunkan biaya pemrosesan lokal. Namun demikian,
masih semijoins
bermanfaat dalam konteks jaringan cepat ketika mereka menginduksi penurunan kuat
bergabung operan. Oleh karena itu, beberapa algoritma pemrosesan query bertujuan memilih
kombinasi optimal bergabung dan semijoins [
¨
Ozsoyoglu dan Zhou, 1987; Wah dan
Lien, 1985].

6.5

Dalam Bab 1 kita telah melihat di mana pemrosesan query pas dengan DBMS terdistribusi
arsitektur. Masalah pemrosesan query sendiri bisa didekomposisi menjadi beberapa
submasalah, sesuai dengan berbagai lapisan. Dalam Gambar 6.3 skema layering generik
untuk pemrosesan query akan ditampilkan yang mana setiap lapisan memecahkan subproblem yang
jelas. untuk
menyederhanakan diskusi, mari kita asumsikan prosesor permintaan statis dan semicentralized
yang tidak memanfaatkan fragmen direplikasi. Input adalah query pada data global
dinyatakan dalam kalkulus relasional. Query ini diajukan pada (didistribusikan) hubungan global,
yang berarti bahwa distribusi data yang disembunyikan. Empat lapisan utama yang terlibat dalam
didistribusikan
pemrosesan query. Tiga pertama lapisan memetakan permintaan masukan ke dioptimalkan
didistribusikan rencana eksekusi query. Mereka melakukan fungsi dekomposisi query,
lokalisasi data, dan optimasi query global. Query dekomposisi dan data
lokalisasi sesuai dengan permintaan menulis ulang. Tiga pertama lapisan dilakukan oleh
situs pusat kontrol dan penggunaan informasi skema disimpan di direktori global. itu
lapisan keempat melakukan eksekusi query didistribusikan dengan mengeksekusi rencana
dan kembali
jawaban untuk query. Hal ini dilakukan oleh situs-situs lokal dan situs kontrol. pertama
dua lapisan diperlakukan secara ekstensif dalam Bab 7, sedangkan dua lapisan terakhir yang
rinci
dalam Bab 8. Dalam sisa bab ini kita menyajikan gambaran dari empat
lapisan.

6.5.1

Lapisan pertama terurai query kalkulus ke dalam query aljabar pada dunia
hubungan. Informasi yang diperlukan untuk transformasi ini ditemukan di global
6.5 Lapisan Query Pengolahan 217
skema konseptual yang menggambarkan hubungan global. Namun, informasi tentang
distribusi data tidak digunakan di sini tapi di lapisan berikutnya. Dengan demikian teknik yang
digunakan oleh
lapisan ini adalah dari DBMS terpusat.
Query dekomposisi dapat dilihat sebagai empat langkah yang berurutan. Pertama, kalkulus
query ditulis ulang dalam bentuk normalisasi yang cocok untuk manipulasi selanjutnya.
Normalisasi query umumnya melibatkan manipulasi bilangan permintaan
dan kualifikasi permintaan dengan menerapkan prioritas logis operator.
Kedua, pertanyaan normalisasi dianalisis secara semantik sehingga query yang salah
terdeteksi dan ditolak sedini mungkin. Teknik untuk mendeteksi permintaan yang salah
ada hanya untuk subset dari kalkulus relasional. Biasanya, mereka menggunakan beberapa jenis
grafik
yang menangkap semantik query.
Ketiga, pertanyaan yang benar (masih dinyatakan dalam kalkulus relasional) yang disederhanakan.
Satu
cara untuk menyederhanakan query adalah untuk menghilangkan predikat berlebihan. Perhatikan
bahwa berlebihan
pertanyaan yang mungkin muncul jika permintaan adalah hasil dari transformasi sistem diterapkan
dengan permintaan pengguna. Seperti yang terlihat dalam Bab 5, transformasi tersebut digunakan
untuk melakukan
semantik data kontrol (pandangan, perlindungan, dan kontrol integritas semantik).
Keempat, query kalkulus direstrukturisasi sebagai permintaan aljabar. Ingat dari
Bagian 6.1 bahwa beberapa query aljabar dapat berasal dari kalkulus yang sama
query, dan bahwa beberapa permintaan aljabar yang "lebih baik" daripada yang lain. Kualitas sebuah
permintaan aljabar didefinisikan dalam hal kinerja yang diharapkan. Cara tradisional
untuk melakukan transformasi menuju "baik" spesifikasi aljabar adalah mulai dengan
query aljabar awal dan mengubahnya dalam rangka untuk menemukan "baik". Awal
permintaan aljabar segera berasal dari permintaan kalkulus dengan menerjemahkan
predikat dan pernyataan target ke operator relasional seperti yang muncul dalam query.
Ini permintaan aljabar langsung diterjemahkan kemudian direstrukturisasi melalui transformasi
aturan. The aljabar permintaan yang dihasilkan oleh lapisan ini adalah baik dalam arti bahwa
eksekusi buruk biasanya dihindari. Misalnya, relasi akan diakses
sekali, bahkan jika ada beberapa predikat pilih. Namun, permintaan ini umumnya jauh
dari menyediakan eksekusi yang optimal, karena informasi tentang distribusi data dan
alokasi fragmen tidak digunakan pada lapisan ini.

6.5.2

Input ke lapisan kedua adalah query aljabar pada hubungan global. Peran utama
lapisan kedua adalah untuk melokalisasi data query dengan menggunakan informasi data
distribusi
dalam skema fragmen. Pada Bab 3 kita melihat bahwa hubungan terfragmentasi dan disimpan
dalam subset menguraikan, disebut fragmen, masing-masing disimpan di lokasi yang
berbeda. lapisan ini
menentukan fragmen terlibat dalam query dan mengubah terdistribusi
permintaan menjadi query pada fragmen. Fragmentasi didefinisikan oleh fragmentasi pred-
icates yang dapat diungkapkan melalui operator relasional. Sebuah relasi global bisa
direkonstruksi dengan menerapkan aturan fragmentasi, dan kemudian menurunkan sebuah
program,
disebut program lokalisasi, operator aljabar relasional, yang kemudian bertindak atas
fragmen. Membangkitkan query pada fragmen dilakukan dalam dua langkah. Pertama, query
218 6 Ikhtisar Query Pengolahan
dipetakan menjadi query fragmen dengan menggantikan setiap relasi dengan rekonstruksi
Program (juga disebut Program materialisasi), dibahas dalam Bab 3. kedua,
query fragmen ini disederhanakan dan direstrukturisasi untuk menghasilkan lain "baik"
query.
Penyederhanaan dan restrukturisasi dapat dilakukan sesuai dengan aturan yang sama yang
digunakan dalam
lapisan dekomposisi. Seperti pada lapisan dekomposisi, query fragmen terakhir adalah
umumnya jauh dari optimal karena informasi mengenai fragmen yang tidak dimanfaatkan.

6.5.3

Input ke lapisan ketiga adalah query aljabar pada fragmen. Tujuan dari permintaan
optimasi adalah untuk menemukan strategi eksekusi untuk query yang dekat dengan Opti-mal.
Ingatlah bahwa mencari solusi optimal adalah komputasi terselesaikan. Sebuah
strategi eksekusi untuk query terdistribusi dapat digambarkan dengan aljabar relasional
operator dan primitif komunikasi (mengirim / menerima operator) untuk mentransfer data
antara situs. Lapisan sebelumnya telah dioptimalkan query, misalnya,
dengan menghilangkan ekspresi berlebihan. Namun, optimisasi ini independen
karakteristik fragmen seperti alokasi fragmen dan kardinalitasnya. Di samping itu, operator
komunikasi belum ditentukan. Dengan permuting pemesanan
operator dalam satu query pada fragmen, banyak pertanyaan yang setara dapat ditemukan.
Optimasi query terdiri dari menemukan "terbaik" memesan operator di
query, termasuk operator komunikasi yang meminimalkan fungsi biaya. Biaya
fungsi, sering didefinisikan dalam unit waktu, mengacu pada sumber daya komputasi tersebut
sebagai ruang disk, disk I / Os, ruang buffer, CPU biaya, biaya komunikasi, dan sebagainya.
Umumnya, itu adalah kombinasi tertimbang biaya I / O, CPU, dan komunikasi.
Namun demikian, penyederhanaan khas yang dibuat oleh DBMS terdistribusi awal, karena kami
disebutkan sebelumnya, adalah untuk mempertimbangkan biaya komunikasi sebagai faktor yang
paling signifikan.
Ini digunakan untuk menjadi valid untuk jaringan luas, dimana bandwidth terbatas membuat
komunikasi jauh lebih mahal daripada pemrosesan lokal. Hal ini tidak benar lagi
hari ini dan biaya komunikasi dapat lebih rendah dari I / O biaya. Untuk memilih Urutan
operator itu perlu untuk memprediksi biaya pelaksanaan penataan calon alternatif.
Menentukan biaya eksekusi sebelum eksekusi query (yaitu, optimasi statis) didasarkan
pada statistik fragmen dan formula untuk memperkirakan kardinalitas hasil
operator relasional. Dengan demikian keputusan optimasi tergantung pada alokasi
fragmen dan statistik yang tersedia pada fragmen yang perekam dalam alokasi
skema.
Sebuah aspek penting dari optimasi query adalah bergabung memesan, karena permutasi dari
bergabung dalam query dapat menyebabkan perbaikan lipat. Satu
Teknik dasar untuk mengoptimalkan urutan operator join didistribusikan melalui
semijoin operator. Nilai utama dari semijoin dalam sistem terdistribusi adalah untuk mengurangi
ukuran operan bergabung dan kemudian biaya komunikasi. Namun, teknik
yang mempertimbangkan biaya pemrosesan lokal serta biaya komunikasi tidak dapat menggunakan
semijoins karena mereka dapat meningkatkan biaya pengolahan lokal. Output dari query
Lapisan optimasi query aljabar dioptimalkan dengan operator komunikasi
6.6 Kesimpulan 219
disertakan pada fragmen. Hal ini biasanya diwakili dan disimpan (eksekusi masa depan)
sebagai rencana eksekusi query didistribusikan

6.5.4

Lapisan terakhir dilakukan oleh semua situs yang memiliki fragmen yang terlibat dalam query.
Setiap subquery mengeksekusi pada satu situs, yang disebut permintaan lokal, kemudian
dioptimalkan menggunakan
skema lokal situs dan dieksekusi. Pada saat ini, algoritma untuk melakukan
operator relasional dapat dipilih. Optimasi lokal menggunakan algoritma
sistem terpusat (lihat Bab 8).

6.7

Dalam bab ini kita memberikan gambaran pemrosesan query dalam DBMS terdistribusi.
Kami pertama kali memperkenalkan fungsi dan tujuan pemrosesan query. Utama Asumsi adalah
bahwa permintaan input dinyatakan dalam kalkulus relasional karena itu terjadi
dengan terbaru DBMS. Kompleksitas masalah adalah proporsional
dengan kekuatan ekspresif dan kemampuan abstraksi dari bahasa query. Untuk
Misalnya, masalah bahkan lebih keras dengan ekstensi penting seperti transitif
Operator penutupan [Valduriez dan Boral, 1986].
Tujuan dari pemrosesan query terdistribusi dapat diringkas sebagai berikut: diberikan
query kalkulus pada database terdistribusi, menemukan strategi eksekusi yang sesuai
yang meminimalkan fungsi biaya sistem yang meliputi I / O, CPU, dan komunikasi
biaya. Sebuah strategi eksekusi ditentukan dalam hal operator aljabar relasional
dan primitif komunikasi (mengirim / menerima) diterapkan pada database lokal (yaitu,
fragmen relasi). Oleh karena itu, kompleksitas operator relasional yang mempengaruhi
kinerja eksekusi query adalah sangat penting dalam desain query
prosesor.
Kami memberikan karakterisasi prosesor query berdasarkan pelaksanaannya
pilihan. Prosesor Query mungkin berbeda dalam berbagai aspek seperti jenis algoritma,
granularity optimasi, optimasi waktu, penggunaan statistik, pilihan keputusan
situs (s), eksploitasi topologi jaringan, eksploitasi fragmen direplikasi,
dan penggunaan semijoins. Karakterisasi ini berguna untuk membandingkan permintaan alternatif
desain prosesor dan memahami trade-off antara efisiensi dan kompleksitas.
Masalah pemrosesan query sangat sulit untuk memahami didistribusikan ENVI-ronments karena
banyak unsur yang terlibat. Namun, masalahnya dapat dibagi
menjadi beberapa submasalah yang lebih mudah untuk memecahkan individual. Oleh karena itu,
kita harus
mengusulkan skema layering generik untuk menggambarkan pemrosesan query terdistribusi. Empat
fungsi utama telah terisolasi: dekomposisi permintaan, lokalisasi data, dunia
optimasi query, dan didistribusikan eksekusi query. Fungsi-fungsi berturut-turut
memperbaiki pertanyaan dengan menambahkan rincian lebih lanjut tentang lingkungan pengolahan.
Pertanyaan
220 6 Ikhtisar Query Pengolahan
dekomposisi dan lokalisasi data diperlakukan secara rinci dalam Bab 7. Didistribusikan
optimasi query dan eksekusi adalah topik Bab 8

Anda mungkin juga menyukai