SISTEM BASIS DATA PARALEL

Embed Size (px)

DESCRIPTION

tugas kelompok

Citation preview

Chapt. 14Sistem Basis Data Paralel (Parallel Database Systems)

Banyak aplikasi data-intensif memerlukan dukungan untuk database yang sangat besar ( misalnya , ratusan terabyte atau petabyte ) . Contoh aplikasi seperti e -commerce , data warehousing , dan data mining . Database yang sangat besar biasanya diakses melalui tingginya jumlah transaksi konkuren ( misalnya, melakukan on-line perintah pada sebuah toko elektronik ) atau query yang kompleks ( misalnya , query pendukung keputusan ) . Jenis pertama dari akses merupakan perwakilan dari On-Line Transaction Processing ( OLTP ) aplikasi sedangkan yang kedua adalah wakil dari On-Line Analytical Processing ( OLAP ) aplikasi . Mendukung database yang sangat besar secara efisien baik untuk OLTP atau OLAP dapat diatasi dengan menggabungkan komputasi paralel dan manajemen basis data terdistribusi .Seperti yang diperkenalkan pada Bab 1 , komputer paralel , atau multiprosesor , adalah jenis khusus dari sistem terdistribusi terbuat dari sejumlah node ( prosesor , memori dan disk ) yang terhubung oleh jaringan yang sangat cepat dalam satu atau lebih lemari di ruangan yang sama . Ide utama adalah untuk membangun sebuah komputer yang sangat kuat dari banyak komputer kecil , masing-masing dengan rasio biaya / kinerja yang sangat baik , dengan biaya yang jauh lebih rendah dari komputer mainframe setara. Seperti telah dibahas dalam Bab 1 , distribusi data dapat dimanfaatkan untuk meningkatkan kinerja (melalui paralelisme ) dan ketersediaan ( melalui replikasi ) . Prinsip ini dapat digunakan untuk menerapkan sistem paralel basis data , yaitu , sistem database pada komputer paralel [ DeWitt dan Gray , 1992; Valduriez , 1993] . Sistem database paralel dapat mengeksploitasi paralelisme dalam pengelolaan data agar dapat memberikan kinerja tinggi dan server database ketersediaan tinggi . Dengan demikian , mereka dapat mendukung database yang sangat besar dengan beban yang sangat tinggi .Sebagian besar penelitian tentang sistem database paralel telah dilakukan dalam konteks model relasional yang menyediakan dasar yang baik untuk paralelisme berbasis data. Dalam bab ini , kami menyajikan pendekatan sistem database paralel sebagai solusi untuk kinerja tinggi dan data ketersediaan tinggi manajemen . Kami membahas keuntungan dan kerugian dari berbagai arsitektur sistem paralel dan kami menyajikan teknik pelaksanaan generik .Implementasi sistem database paralel secara alami bergantung pada teknik basis data terdistribusi . Namun, isu-isu penting adalah penempatan data, pemrosesan query paralel , dan load balancing karena jumlah node mungkin jauh lebih tinggi daripada di DBMS terdistribusi . Selain itu , komputer paralel biasanya menyediakan handal , komunikasi cepat yang dapat dimanfaatkan untuk secara efisien menerapkan manajemen transaksi terdistribusi dan replikasi . Oleh karena itu, meskipun prinsip-prinsip dasar yang sama seperti pada DBMS terdistribusi , teknik untuk sistem database paralel cukup berbeda .Bab ini disusun sebagai berikut . Dalam Bagian 14.1 , kita memperjelas tujuan , dan mendiskusikan aspek fungsional dan arsitektur sistem database paralel . Secara khusus , kami membahas keuntungan masing-masing dan keterbatasan arsitektur sistem paralel ( shared- memory , shared- disk, shared -nothing ) sepanjang beberapa dimensi penting, termasuk perspektif kedua pengguna akhir , administrator database dan pengembang sistem . Kemudian , kami menyajikan teknik untuk penempatan data dalam Bagian 14.2 , pemrosesan query dalam Bagian 14.3 dan load balancing dalam Bagian 14.4 .Dalam Bagian 14.5 , kami menyajikan penggunaan teknik manajemen data paralel dalam kelompok database, jenis penting dari sistem database paralel diimplementasikan pada sekelompok PC .

14.1 Parallel Arsitektur Sistem Basis Data Pada bagian ini kita menunjukkan nilai sistem paralel untuk efisien Database manusia pengelolaan. Kami memotivasi kebutuhan untuk sistem database paralel dengan meninjau persyaratan sistem informasi yang sangat besar dengan menggunakan tren teknologi perangkat keras saat ini. Kami menyajikan aspek fungsional dan arsitektur paralel basis data sistem-sistem. Secara khusus, kami menyajikan dan membandingkan arsitektur utama: shared-memory, shared-disk, shared-apa-apa dan hibrida arsitektur.

14.1.1 TujuanPemrosesan paralel memanfaatkan komputer multiprosesor untuk menjalankan program aplikasi dengan menggunakan beberapa prosesor kooperatif, dalam rangka meningkatkan kinerja. Penggunaan menonjol telah lama dalam komputasi ilmiah dengan meningkatkan waktu respon aplikasi numerik [Kowalik, 1985; Sharp, 1987]. Perkembangan di kedua tujuan umum komputer paralel menggunakan mikroprosesor standar dan teknik pemrograman paralel [Osterhaug, 1989] telah memungkinkan pemrosesan paralel untuk masuk ke bidang pengolahan data. Sistem database paralel menggabungkan manajemen database dan pengolahan paralel untuk meningkatkan kinerja dan ketersediaan. Perhatikan kinerja itu juga tujuan mesin database di tahun 70-an dan 80-an [Hsiao, 1983]. Permasalahan yang dihadapi oleh manajemen database konvensional telah lama dikenal sebagai "I / O bottleneck" [Boral dan DeWitt, 1983], disebabkan oleh tingginya waktu akses disk sehubungan dengan waktu akses memori utama (biasanya ratusan ribu kali lebih cepat).Awalnya , Database desainer mesin ditangani masalah ini melalui hardware tujuan khusus , misalnya dengan memperkenalkan perangkat penyaringan data dalam kepala disk. Namun, pendekatan ini gagal karena buruknya biaya / kinerja dibandingkan dengan solusi perangkat lunak , yang dapat dengan mudah mendapatkan keuntungan dari kemajuan perangkat keras dalam teknologi silikon . Sebuah pengecualian untuk kegagalan ini adalah CAFS - ISP berbasis hardware penyaringan perangkat [ Babb , 1979 ] yang tergabung dalam kontroler disk untuk cepat pencarian asosiatif . Ide mendorong fungsi database lebih dekat ke disk telah menerima minat baru dengan pengenalan tujuan umum mikroprosesor dalam kontroler disk , sehingga mengarah ke disk cerdas [ Keeton et al . , 1998 ] . Misalnya , fungsi dasar yang memerlukan mahal scan sekuensial , misalnya pilih operasi pada tabel dengan predikat fuzzy, dapat lebih efisien dilakukan pada tingkat disk karena mereka menghindari kelebihan memori DBMS dengan blok disk yang tidak relevan . Namun, pemanfaatan disk cerdas membutuhkan mengadaptasi DBMS , khususnya, prosesor query untuk memutuskan apakah akan menggunakan fungsi disk. Karena tidak ada teknologi disk cerdas standar , beradaptasi dengan teknologi disk yang cerdas berbeda sakit DBMS portabilitas .Hasil yang penting , bagaimanapun, adalah dalam solusi umum untuk I / O bottleneck . Kita dapat meringkas solusi ini sebagai meningkatkan I / O bandwidth melalui paralelisme . Sebagai contoh , jika kita menyimpan database ukuran D pada disk tunggal dengan throughput T , throughput sistem dibatasi oleh T . Sebaliknya , jika kita partisi database di disk n , masing-masing dengan kapasitas D / n dan throughput T ' ( mudah-mudahan setara dengan T ) , kita mendapatkan throughput yang ideal n * T ' yang bisa lebih baik dikonsumsi oleh beberapa prosesor ( idealnya n ) . Perhatikan bahwa solusi sistem database memori utama [ Eich , 1989] , yang mencoba untuk menjaga database dalam memori utama , adalah saling melengkapi dan bukan alternatif . Secara khusus, " akses memori bottleneck " dalam sistem memori utama juga dapat ditangani dengan menggunakan paralelisme dengan cara yang sama . Oleh karena itu , paralel desainer sistem database telah berupaya untuk mengembangkan solusi perangkat lunak berorientasi untuk mengeksploitasi komputer paralel .Sebuah sistem database paralel dapat longgar didefinisikan sebagai DBMS diimplementasikan pada komputer paralel . Definisi ini mencakup banyak alternatif mulai dari port langsung dari DBMS yang ada , yang mungkin memerlukan hanya menulis ulang sistem operasi rutinitas antarmuka , kombinasi canggih pengolahan dan sistem database fungsi paralel ke dalam arsitektur hardware / software baru . Seperti biasa , kita memiliki trade- off tradisional antara portabilitas ( untuk beberapa platform ) dan efisiensi . Pendekatan canggih adalah lebih mampu untuk sepenuhnya memanfaatkan kesempatan-kesempatan yang ditawarkan oleh multiprosesor dengan mengorbankan portabilitas . Menariknya , ini memberikan keuntungan yang berbeda untuk produsen komputer dan vendor perangkat lunak . Oleh karena itu penting untuk mengkarakterisasi poin utama dalam ruang alternatif arsitektur sistem paralel . Untuk melakukannya, kita akan membuat solusi yang tepat sistem database paralel dan fungsi yang diperlukan . Ini akan berguna dalam membandingkan arsitektur sistem database paralel .

Tujuan dari sistem database paralel ditutupi oleh orang-orang dari DBMS terdistribusi (kinerja, ketersediaan, diperpanjang). Idealnya, sistem database paralel harus menyediakan keuntungan sebagai berikut.1. Tinggi kinerja. Hal ini dapat diperoleh melalui beberapa solusi yang saling melengkapi : dukungan database berorientasi sistem operasi , data paralel pengelolaan , optimasi query , dan load balancing . Memiliki sistem operasi dibatasi dan " sadar " dari persyaratan database tertentu ( misalnya , manajemen buffer) menyederhanakan pelaksanaan fungsi database tingkat rendah dan oleh karena itu mengurangi biaya mereka . Misalnya , biaya pesan dapat dikurangi secara signifikan untuk beberapa ratus instruksi dengan mengkhususkan protokol com - munication . Paralelisme dapat meningkatkan throughput , menggunakan antar - permintaan paralelisme , dan mengurangi waktu respon transaksi , menggunakan intra - permintaan Paral - lelism . Namun, mengurangi waktu respon query kompleks melalui skala besar paralelisme mungkin meningkatkan total waktu (dengan tambahan com - munication ) dan menyakiti throughput yang sebagai efek samping . Oleh karena itu, sangat penting untuk mengoptimalkan dan memparalelkan query untuk meminimalkan overhead dari par - allelism , misalnya dengan membatasi derajat paralelisme untuk query . Load balancing adalah kemampuan sistem untuk membagi beban kerja yang diberikan secara merata di antara semua prosesor . Tergantung pada arsitektur sistem paralel , dapat dicapai statis dengan desain database fisik sesuai atau dinamis pada saat run -time .2. Ketersediaan tinggi. Karena sistem database paralel terdiri dari banyak komponen re-dundant, itu juga dapat meningkatkan ketersediaan data dan toleransi kesalahan. Dalam sistem yang sangat paralel dengan banyak node, probabilitas kegagalan node setiap saat dapat relatif tinggi. Replikasi data pada beberapa node berguna untuk mendukung failover, teknik toleransi kesalahan yang memungkinkan pengalihan otomatis transaksi dari node gagal untuk node lain yang menyimpan salinan data. Ini menyediakan layanan uninterupted kepada pengguna. Namun, adalah penting bahwa kegagalan node tidak peti ketidakseimbangan beban, misalnya, dengan menggandakan beban pada salinan yang tersedia. Solusi untuk masalah ini memerlukan salinan partisi sedemikian rupa bahwa mereka juga dapat diakses secara paralel.3. Diperpanjang. Dalam sistem paralel, menampung peningkatan ukuran database atau tuntutan peningkatan kinerja (misalnya, throughput) harus lebih mudah. Ex-tensibility adalah kemampuan untuk memperluas sistem lancar dengan menambahkan pemrosesan dan daya storage ke sistem. Idealnya, sistem database paralel harus menunjukkan dua keuntungan diperpanjang [DeWitt dan Gray, 1992]: speedup linier dan linier scaleup lihat Gambar 14.1. Speedup linier mengacu pada peningkatan linier dalam kinerja untuk ukuran basis data konstan sedangkan jumlah node (yaitu, pengolahan dan daya penyimpanan) yang meningkat secara linear. Scaleup linear mengacu pada kinerja yang berkelanjutan untuk peningkatan linear baik dalam ukuran database dan jumlah node. Selanjutnya, memperluas sistem harus memerlukan reorganisasi minimal database yang ada.

14.1.2 Arsitektur Fungsional

Dengan asumsi arsitektur client / server, fungsi yang didukung oleh sistem database paralel dapat dibagi menjadi tiga subsistem seperti dalam DBMS yang khas. Perbedaan, meskipun, harus dilakukan dengan pelaksanaan fungsi-fungsi ini, yang kini harus berurusan dengan paralelisme, partisi data dan replikasi, dan transaksi-transaksi terdistribusi. Tergantung pada arsitektur, node prosesor dapat mendukung semua (atau subset) dari subsistem ini. Gambar 14.2 menunjukkan arsitektur menggunakan subsistem ini karena Bergsten et al. [1991].1. Session Manager . Hal ini memainkan peran monitor transaksi , memberikan dukungan untuk interaksi klien dengan server . Secara khusus, ia melakukan koneksi dan pemutusan antara proses klien dan dua subsistem lainnya . Oleh karena itu, memulai dan menutup sesi pengguna (yang mungkin berisi beberapa transaksi ) . Dalam kasus sesi OLTP , manajer sesi mampu memicu eksekusi kode transaksi pre-loaded dalam modul manager data.2. Transaksi Manager. Ini menerima transaksi klien terkait dengan permintaan com - pilation dan eksekusi . Hal ini dapat mengakses direktori database yang menyimpan semua informasi tentang meta - data dan program . Direktori itu sendiri harus dikelola sebagai database server . Tergantung pada transaksi , akan mengaktifkan berbagai tahapan kompilasi , memicu eksekusi query , dan mengembalikan hasil serta kode kesalahan ke aplikasi client . Karena mengawasi eksekusi transaksi dan komit , mungkin memicu prosedur pemulihan jika terjadi kegagalan transaksi . Untuk mempercepat eksekusi query , mungkin mengoptimalkan dan memparalelkan query pada saat kompilasi .3. Data Manager . Ini menyediakan semua fungsi tingkat rendah yang dibutuhkan untuk menjalankan query disusun secara paralel , yaitu , eksekusi basis data operator, transaksi paralel dukungan port , manajemen cache, dll Jika manajer transaksi mampu mengkompilasi kontrol dataflow , maka sinkronisasi dan komunikasi antar data yang modul man - ager adalah mungkin . Jika tidak , kontrol transaksi dan sinkronisasi harus dilakukan oleh modul manajer transaksi .

14.1.3 Arsitektur DBMS Parallel Seperti sistem apapun, sistem database paralel merupakan kompromi dalam pilihan desain untuk memberikan keuntungan tersebut dengan baik biaya / kinerja. Salah satu keputusan desain membimbing adalah cara elemen perangkat keras utama, yaitu prosesor, memori utama, dan disk, yang terhubung melalui beberapa jaringan interkoneksi cepat. Ada tiga arsitektur komputer paralel dasar tergantung pada bagaimana memori utama atau disk bersama: shared-memory, shared-disk dan berbagi-apa-apa. Hybrid arsitektur seperti NUMA atau klaster mencoba menggabungkan manfaat dari arsitektur dasar. Dalam sisa bagian ini, ketika menggambarkan arsitektur paralel, kita fokus pada empat elemen utama hardware: interkoneksi, prosesor (P), memori utama (M) dan disk. Untuk mempermudah, kita mengabaikan unsur-unsur lain seperti cache prosesor dan I / O bus.

14.1.3.1 Shared-Memory Dalam pendekatan shared-memory (lihat Gambar 14.3), setiap prosesor memiliki akses ke setiap modul memori atau disk unit melalui interkoneksi yang cepat (misalnya, bus berkecepatan tinggi atau beralih cross-bar). Semua prosesor berada di bawah kendali sistem operasi tunggal.Desain mainframe saat ini dan multiprocessors simetris (SMP) mengikuti pendekatan ini. Contoh dari shared-memory sistem database paralel meliputi XPRS [Hong, 1992], DBS3 [Bergsten et al., 1991], dan Volcano [Graefe, 1990], serta portings DBMSs komersial utama di SMP. Dalam arti, pelaksanaan DB2 pada IBM3090 dengan 6 prosesor [Cheng et al., 1984] adalah contoh pertama. Semua shared-memory produk database paralel saat ini dapat memanfaatkan antar-permintaan paralelisme untuk memberikan throughput transaksi yang tinggi dan intra-permintaan paralelisme untuk mengurangi waktu respon query pendukung keputusan.

Shared-memori memiliki dua keuntungan yang kuat : kesederhanaan dan load balancing . Karena meta - informasi ( directory ) dan kontrol informasi ( misalnya , tabel kunci ) dapat dibagi oleh semua prosesor , menulis perangkat lunak database tidak jauh berbeda dibandingkan untuk komputer prosesor tunggal. Secara khusus, antar - permintaan paralelisme datang secara gratis . Intra - permintaan paralelisme memerlukan beberapa paralelisasi tapi tetap agak sederhana . Load balancing mudah untuk mencapai karena dapat dicapai pada saat run -time dengan menggunakan memori bersama - dengan mengalokasikan setiap tugas baru ke prosesor paling sibuk .Shared-memori memiliki tiga masalah : biaya tinggi , diperpanjang terbatas dan rendahnya ketersediaan . Biaya tinggi yang dikeluarkan oleh interkoneksi yang membutuhkan hardware yang cukup kompleks karena kebutuhan untuk menghubungkan setiap prosesor untuk setiap modul memori atau disk. Dengan prosesor yang lebih cepat ( bahkan dengan cache yang lebih besar ) , bertentangan akses ke peningkatan shared- memory cepat dan menurunkan kinerja [ Thakkar dan Sweiger , 1990] . Oleh karena itu , diperpanjang terbatas pada beberapa puluh prosesor , biasanya hingga 16 untuk yang terbaik biaya / kinerja menggunakan papan 4 - prosesor . Akhirnya, karena ruang memori dibagi oleh semua prosesor , kesalahan memori dapat mempengaruhi sebagian besar prosesor dengan demikian menyakiti ketersediaan . Solusinya adalah dengan menggunakan memori duplex dengan interkoneksi berlebihan .

14.1.3.2 Bersama-Disk Dalam pendekatan shared-disk (lihat Gambar 14.4), setiap prosesor memiliki akses ke disk unit melalui interkoneksi tetapi eksklusif (non-shared) akses ke memori utama. Setiap node prosesor-memori bawah kendali salinan sendiri dari sistem operasi. Kemudian, masing-masing prosesor dapat mengakses halaman database pada disk bersama dan cache mereka ke dalam memori sendiri. Karena prosesor yang berbeda dapat mengakses halaman yang sama dalam mode pembaruan bertentangan, konsistensi persediaan global diperlukan. Hal ini biasanya dicapai dengan menggunakan manajer kunci terdistribusi yang dapat diimplementasikan dengan menggunakan teknik yang dijelaskan dalam Bab 11. DBMS paralel pertama yang digunakan bersama-disk adalah Oracle dengan implementasi yang efisien dari manajer kunci didistribusikan untuk konsistensi persediaan. Vendor DBMS besar lainnya seperti IBM, Microsoft dan Sybase menyediakan implementasi shared-disk.

Shared-disk memiliki sejumlah keuntungan : biaya yang lebih rendah , diperpanjang tinggi , beban bal - ancing , ketersediaan , dan migrasi mudah dari sistem terpusat . Biaya interkoneksi secara signifikan kurang dari dengan shared- memory sejak standar bus teknologi-ogy dapat digunakan . Mengingat bahwa setiap prosesor memiliki memori utama yang cukup , gangguan pada disk bersama dapat diminimalkan . Dengan demikian , diperpanjang bisa lebih baik , biasanya sampai seratus prosesor . Karena kesalahan memori dapat diisolasi dari node lain , ketersediaan bisa lebih tinggi . Akhirnya , migrasi dari sistem terpusat dengan shared -disk relatif mudah karena data pada disk tidak perlu ditata kembali.Shared-disk menderita kompleksitas dan kinerja potensial masalah yang lebih tinggi. Hal ini membutuhkan protokol didistribusikan sistem database , seperti penguncian didistribusikan dan dua fase komit . Sebagaimana telah kita bahas dalam bab-bab sebelumnya , ini dapat menjadi kompleks . Selain itu , menjaga konsistensi persediaan dapat dikenakan biaya overhead komunikasi yang tinggi di antara node . Akhirnya , akses ke shared-disk adalah hambatan potensial.

14.1.3.3 Shared-ada Dalam pendekatan shared-apa-apa (lihat Gambar 14.5), masing-masing prosesor memiliki akses eksklusif ke memori utama dan disk yang satuannya (s). Mirip dengan shared-disk, setiap node prosesor-memori-disk berada di bawah kendali salinan sendiri dari sistem operasi. Kemudian, setiap node dapat dilihat sebagai sebuah situs lokal (dengan database dan software sendiri) dalam sistem database terdistribusi. Oleh karena itu, sebagian besar solusi yang dirancang untuk database terdistribusi seperti fragmentasi database, manajemen transaksi terdistribusi dan pemrosesan query terdistribusi dapat digunakan kembali. Menggunakan interkoneksi cepat, adalah mungkin untuk menampung sejumlah besar node. Berbeda dengan SMP, arsitektur ini sering disebut Processor Massively Paralel (MPP).Banyak prototipe penelitian telah mengadopsi arsitektur shared-apa-apa, misalnya, BUBBA [Boral et al., 1990], EDS [Group, 1990], GAMMA [DeWitt et al., 1986], GRACE [Fushimi et al., 1986], dan PRISMA [APERS et al, 1992.], karena dapat skala. Yang pertama produk DBMS utama paralel adalah Teradata Database Komputer yang bisa menampung seribu prosesor dalam versi awal. Vendor DBMS besar lainnya seperti IBM, Microsoft dan Sybase menyediakan implementasi shared-apa-apa.

Seperti yang ditunjukkan oleh produk yang sudah ada , bersama - tidak memiliki tiga kebajikan utama : biaya yang lebih rendah , diperpanjang tinggi , dan ketersediaan tinggi . Biaya keuntungan adalah lebih baik dari shared -disk yang membutuhkan interkoneksi khusus untuk disk . Dengan menerapkan desain database terdistribusi yang mendukung pertumbuhan inkremental kelancaran sistem dengan penambahan node baru , diperpanjang dapat lebih baik ( dalam ribuan node ) . Dengan hati-hati partisi data pada beberapa disk , hampir linear percepatan linear dan scaleup dapat dicapai untuk beban kerja yang sederhana . Akhirnya , dengan mereplikasi data pada beberapa node , ketersediaan tinggi juga dapat dicapai .Bersama - tidak ada yang jauh lebih kompleks untuk mengelola daripada baik bersama - memori atau shared- disk. Kompleksitas yang lebih tinggi adalah karena pelaksanaan yang diperlukan dari fungsi basis data terdistribusi dengan asumsi sejumlah besar node . Selain itu, load balancing adalah lebih sulit untuk dicapai karena hal itu bergantung pada efektivitas partisi database untuk beban kerja query. Tidak seperti shared- memory dan berbagi - disk, load balancing ditentukan berdasarkan lokasi data dan bukan beban yang sebenarnya dari sistem. Selain itu , penambahan node baru dalam sistem mungkin membutuhkan reorganisasi database untuk menangani masalah load balancing .

14.1.3.4 Hybrid Arsitektur Berbagai kemungkinan kombinasi dari tiga arsitektur dasar yang mungkin untuk mendapatkan berbagai trade-off antara biaya, kinerja, diperpanjang, ketersediaan, dll arsitektur Hy-brid mencoba untuk mendapatkan keuntungan dari arsitektur yang berbeda: biasanya efisiensi dan kesederhanaan bersama-memori dan diperpanjang dan biaya baik disk bersama atau berbagi apa-apa. Pada bagian ini, kita membahas dua arsitektur hybrid populer: NUMA dan klaster.

NUMA .Dengan shared - memory , masing-masing prosesor memiliki memori akses seragam ( UMA ) , dengan waktu akses konstan , karena kedua memori virtual dan memori fisik dibagi . Salah satu keuntungan utama adalah bahwa model pemrograman berbasis memori virtual bersama sederhana . Dengan baik bersama - disk atau shared- apa-apa , memori baik virtual dan berbagi didistribusikan , yang menghasilkan skalabilitas untuk sejumlah besar prosesor . Tujuan dari NUMA adalah untuk menyediakan model pemrograman shared- memory dan semua manfaatnya , dalam arsitektur scalable dengan memori terdistribusi . The NUMA Istilah mencerminkan fakta bahwa akses ke memori ( hampir ) bersama mungkin memiliki biaya yang berbeda tergantung pada apakah memori fisik lokal atau remote untuk prosesor . Kelas paling sukses multiprocessors NUMA adalah Cache Coherent NUMA ( CC - NUMA ) [ Goodman dan Woest , 1988; . Lenoski et al , 1992 ] . Dengan CC - NUMA , memori utama secara fisik didistribusikan di antara node seperti dengan shared- apa-apa atau shared- disk. Namun, setiap prosesor memiliki akses ke kenangan semua prosesor lain ( lihat Gambar 14.6 ) . Setiap node dapat sendiri menjadi SMP . Mirip dengan shared- disk, prosesor yang berbeda dapat mengakses data yang sama dalam mode pembaruan yang bertentangan , sehingga protokol konsistensi persediaan global diperlukan . Dalam rangka untuk membuat akses memori jarak jauh yang efisien , satu-satunya solusi yang layak adalah memiliki konsistensi persediaan dilakukan dalam hardware melalui cache interkoneksi konsisten khusus [ Lenoski et al , 1992. ] . Karena shared- memory dan konsistensi cache didukung oleh perangkat keras , akses memori jauh sangat efisien , hanya beberapa kali ( biasanya antara 2 dan 3 kali ) biaya akses lokal .

Kebanyakan produsen SMP kini menawarkan sistem NUMA yang dapat meningkatkan seratus prosesor. Argumen kuat untuk NUMA adalah bahwa hal itu tidak memerlukan penulisan ulang perangkat lunak aplikasi. Namun beberapa menulis ulang masih diperlukan dalam mesin database (dan sistem operasi) untuk mengambil keuntungan penuh dari akses lokalitas [Bouganim et al., 1999].

Cluster. Sebuah cluster adalah satu set node server independen saling berbagi sumber daya dan membentuk sebuah sistem tunggal . Sumber daya bersama, yang disebut sumber daya berkerumun , bisa hardware seperti disk atau perangkat lunak seperti layanan manajemen data. The node server terbuat dari komponen off-the -shelf mulai dari komponen PC sederhana untuk SMP lebih kuat . Menggunakan banyak komponen off- the-shelf adalah penting untuk mendapatkan yang terbaik rasio biaya / kinerja sambil mengeksploitasi terus kemajuan dalam komponen hardware . Dalam bentuk yang termurah , interkoneksi dapat menjadi jaringan lokal . Namun, sekarang ada interkoneksi standar cepat untuk cluster ( misalnya , Myrinet dan Infiniband ) yang menyediakan bandwidth tinggi ( Gigabits / detik ) dengan latency rendah untuk lalu lintas pesan .Dibandingkan dengan sistem terdistribusi , cluster secara geografis terkonsentrasi ( di satu lokasi ) dan terbuat dari node homogen . Arsitektur dapat berupa shared - apa-apa atau shared- disk. Cluster bersama - ada telah banyak digunakan karena mereka dapat memberikan yang terbaik rasio biaya / kinerja dan skala sampai dengan konfigurasi yang sangat besar ( ribuan node ) . Namun, karena setiap disk secara langsung terhubung ke komputer melalui bus , menambah atau mengganti node cluster memerlukan disk dan Data reorganisasi . Shared-disk menghindari reorganisasi tersebut tetapi membutuhkan disk dapat diakses secara global oleh node cluster . Ada dua teknologi utama untuk berbagi disk dalam sebuah cluster : network - attached storage ( NAS ) dan storage-area network ( SAN ) . Sebuah NAS adalah perangkat yang didedikasikan untuk disk bersama melalui jaringan ( biasanya TCP / IP ) menggunakan protokol sistem file terdistribusi seperti Network File System ( NFS ) . NAS ini juga cocok untuk aplikasi throughput rendah seperti backup data dan pengarsipan dari hard disk PC . Namun, relatif lambat dan tidak sesuai untuk manajemen database karena dengan cepat menjadi bottleneck dengan banyak node . Sebuah jaringan area penyimpanan ( SAN ) menyediakan fungsionalitas yang sama tetapi dengan antarmuka tingkat yang lebih rendah . Untuk efisiensi , ia menggunakan protokol berbasis blok sehingga membuatnya lebih mudah untuk mengelola konsistensi cache ( pada tingkat blok ) . Bahkan , disk dalam SAN melekat pada jaringan bukan untuk bus seperti yang terjadi di Langsung Attached Storage ( DAS ) , tetapi sebaliknya mereka akan ditangani sebagai disk lokal sharable . Protokol yang ada untuk SAN memperpanjang rekan-rekan disk lokal mereka untuk menjalankan melalui jaringan ( misalnya , i- SCSI SCSI meluas , dan ATA -over - Ethernet meluas ATA ) . Akibatnya , SAN menyediakan throughput data yang tinggi dan dapat meningkatkan ke sejumlah besar node . Satu-satunya batasan sehubungan dengan shared- tidak ada biaya yang lebih tinggi kepemilikan .Sebuah arsitektur cluster memiliki kelebihan penting . Ini menggabungkan fleksibilitas dan kinerja shared-memori pada setiap node dengan diperpanjang dan ketersediaan shared- apa-apa atau shared- disk. Selanjutnya, dengan menggunakan off-the -shelf node shared- memory dengan cluster interkoneksi standar membuatnya menjadi alternatif yang hemat biaya untuk proprietary multiprocessors high-end seperti NUMA atau MPP . Akhirnya , menggunakan SAN memudahkan manajemen disk dan penempatan data.

14.1.3.5 DiskusiMari kita bandingkan secara singkat tiga arsitektur dasar berdasarkan potensi Advan - tages mereka ( kinerja tinggi , ketersediaan tinggi , dan diperpanjang ) . Hal ini adil untuk mengatakan bahwa , untuk konfigurasi kecil ( misalnya , kurang dari 20 prosesor ) , shared-memori dapat memberikan kinerja tertinggi karena lebih baik load balancing . Arsitektur shared-disk dan berbagi - apa mengungguli shared- memory dalam hal diperpanjang . Beberapa tahun yang lalu , bersama - tidak ada satu-satunya pilihan untuk sistem high-end . Namun, kemajuan terbaru dalam teknologi konektivitas disk yang seperti SAN membuat shared -disk alternatif dengan keuntungan utama menyederhanakan administrasi data dan implementasi DBMS . Secara khusus, shared -disk sekarang arsitektur disukai untuk aplikasi OLTP karena lebih mudah untuk mendukung transaksi ACID dan didistribusikan kontrol con - currency . Tapi untuk database OLAP yang biasanya sangat besar dan sebagian besar read-only , shared- tidak ada arsitektur yang lebih disukai . Kebanyakan vendor DBMS besar sekarang menyediakan implementasi shared- apa-apa dari DBMS mereka untuk OLAP , selain versi shared- disk untuk OLTP . Satu-satunya execption adalah Oracle yang menggunakan shared -disk untuk kedua OLTP dan OLAP .Hybrid arsitektur , seperti NUMA dan klaster , dapat menggabungkan efisiensi dan kesederhanaan bersama - memori dan diperpanjang dan biaya baik disk bersama atau berbagi apa-apa . Secara khusus, mereka dapat memanfaatkan kemajuan terus-menerus di SMP dan menggunakan node shared -memory dengan rasio biaya / kinerja yang sangat baik . Kedua NUMA dan cluster dapat skala hingga konfigurasi besar ( ratusan node ) . Keuntungan utama dari NUMA lebih cluster adalah sederhana ( shared- memory ) model pemrograman yang memudahkan administrasi database dan tuning. Namun, dengan menggunakan node PC standar dan interkoneksi , cluster menyediakan keseluruhan rasio biaya / kinerja yang lebih baik , dan , menggunakan shared - apa-apa, mereka dapat meningkatkan untuk konfigurasi yang sangat besar ( ribuan node ) .

14,2 Paralel Penempatan dataPada bagian ini , kita asumsikan arsitektur shared- apa-apa karena itu adalah kasus yang paling umum dan teknik pelaksanaannya juga berlaku , kadang-kadang dalam bentuk yang disederhanakan , ke arsitektur lain . Penempatan data dalam sistem database paralel pameran serupa -kegiatan dengan fragmentasi data dalam database terdistribusi ( lihat Bab 3 ) . Sebuah kesamaan yang jelas adalah bahwa fragmentasi dapat digunakan untuk meningkatkan paralelisme . Dalam apa yang berikut , kita menggunakan istilah partisi dan partisi bukan fragmentasi horizontal dan fragmen horisontal , masing-masing , kontras dengan strategi alternatif , yang terdiri dari mengelompokkan relasi pada node tunggal . The declustering istilah kadang-kadang digunakan untuk berarti partisi [ Livny et al . , 1987] . Fragmentasi vertikal juga dapat digunakan untuk meningkatkan paralelisme dan load balancing sebanyak dalam database terdistribusi . Kesamaan lainnya adalah bahwa karena data yang jauh lebih besar daripada program , eksekusi harus terjadi , sebanyak mungkin , di mana data berada . Namun, ada dua perbedaan penting dengan pendekatan database terdistribusi . Pertama , tidak ada kebutuhan untuk memaksimalkan pengolahan lokal ( di setiap node ) karena pengguna tidak berhubungan dengan node tertentu . Kedua , load balancing jauh lebih sulit untuk mencapai di hadapan sejumlah besar node . Masalah utama adalah untuk menghindari pertentangan sumber daya , yang dapat mengakibatkan seluruh sistem meronta-ronta ( misalnya , satu node berakhir melakukan semua pekerjaan sementara yang lain tetap idle) . Karena program dijalankan di mana data berada , penempatan data adalah masalah kinerja kritis.Penempatan data harus dilakukan untuk memaksimalkan kinerja sistem , yang dapat diukur dengan menggabungkan jumlah total kerja yang dilakukan oleh sistem dan waktu respon dari permintaan individu. Dalam Bab 8 , kita telah melihat bahwa memaksimalkan waktu respon (melalui intra - permintaan paralelisme ) menghasilkan peningkatan kerja total karena overhead komunikasi . Untuk alasan yang sama , hasil paralelisme antar - permintaan peningkatan jumlah pekerjaan . Di sisi lain , mengelompokkan semua data yang diperlukan untuk program meminimalkan komunikasi dan dengan demikian total kerja yang dilakukan oleh sistem dalam melaksanakan program itu. Dalam hal penempatan data, kita memiliki berikut trade-off : memaksimalkan waktu respon atau antar - permintaan paralelisme mengarah ke partisi , sedangkan meminimalkan jumlah total kerja menyebabkan clustering. Sebagaimana telah kita lihat di Bab - ter 3 , masalah ini dibahas dalam database terdistribusi dalam cara yang agak statis . Database administrator bertugas memeriksa secara berkala frekuensi akses fragmen , dan bila perlu , bergerak dan reorganisasi fragmen .Sebuah solusi alternatif untuk penempatan data partisi penuh , dimana setiap relasi horizontal terfragmentasi di semua node dalam sistem . Ada tiga strategi dasar untuk data partisi : round- robin , hash , dan jangkauan partisi ( Gambar 14.7 ) .

1. Round-robin partisi adalah strategi yang paling sederhana, memastikan distribusi data seragam. Dengan partisi n, tupel engan agar penyisipan ditugaskan untuk partisi (i mod n). Strategi ini memungkinkan akses sekuensial ke hubungan harus dilakukan secara paralel. Namun, akses langsung ke tupel individu, berdasarkan predikat, membutuhkan mengakses seluruh relasi. 2. Partisi hash menerapkan fungsi hash untuk beberapa atribut yang menghasilkan nomor partisi. Strategi ini memungkinkan query yang paling sesuai pada atribut seleksi untuk diproses oleh tepat satu simpul dan semua pertanyaan lain untuk diproses oleh semua node secara paralel. 3. Rentang partisi mendistribusikan tupel berdasarkan interval nilai (rentang) dari beberapa atribut. Selain mendukung query yang paling sesuai (seperti dalam hashing), itu sangat cocok untuk berbagai pertanyaan. Sebagai contoh, query dengan predikat "A antara A1 dan A2" dapat diproses oleh satu-satunya node (s) yang berisi tupel yang nilainya A berada dalam jangkauan [A1, A2]. Namun, kisaran partisi dapat menyebabkan variasi yang tinggi dalam ukuran partisi.

Dibandingkan dengan hubungan pengelompokan pada satu (mungkin sangat besar) disk, penuh par - titioning menghasilkan kinerja yang lebih baik [ Livny et al . , 1987] . Meskipun partisi penuh memiliki keunggulan kinerja yang jelas , eksekusi paralel yang sangat mungkin menyebabkan overhead kinerja seri - ous untuk query yang kompleks yang melibatkan bergabung . Selain itu , partisi penuh tidak sesuai untuk hubungan kecil yang span beberapa blok disk . Kelemahan ini menunjukkan bahwa kompromi antara clustering dan partisi penuh ( yaitu , variabel partisi ) , perlu ditemukan .Sebuah solusi untuk melakukan penempatan data dengan partisi variabel [ Copeland et al . , 1988] . Tingkat partisi , yaitu , jumlah node di mana relasi terfragmentasi , adalah fungsi dari ukuran dan akses frekuensi relasi. Strategi ini jauh lebih terlibat daripada baik pengelompokan atau partisi penuh karena perubahan dalam distribusi data dapat mengakibatkan reorganisasi . Sebagai contoh, hubungan awalnya ditempatkan di delapan node mungkin memiliki kardinalitas dua kali lipat dengan sisipan berikutnya , dalam hal ini harus ditempatkan di 16 node .Dalam sistem yang sangat paralel dengan partisi variabel , reorganisasi periodik untuk load balancing sangat penting dan harus sering kecuali beban kerja cukup statis dan pengalaman hanya beberapa update . Reorganisasi tersebut harus tetap transparan untuk dikompilasi program yang dijalankan pada server database . Secara khusus , program tidak boleh dikompilasi ulang karena reorganisasi . Oleh karena itu, program-program yang disusun harus tetap independen dari lokasi data, yang dapat berubah dengan cepat . Seperti di - ketergantungan dapat dicapai jika sistem run-time mendukung akses asosiatif untuk data terdistribusi . Hal ini berbeda dari DBMS terdistribusi , di mana akses asosiatif dicapai pada waktu kompilasi oleh prosesor query menggunakan direktori data.Salah satu solusi untuk akses asosiatif adalah memiliki mekanisme indeks global direplikasi pada setiap node [ Khoshafian dan Valduriez , 1987] . Indeks global menunjukkan penempatan relasi ke satu set node . Secara konseptual , indeks global adalah indeks dua tingkat dengan pengelompokan besar pada nama relasi dan pengelompokan kecil pada beberapa atribut dari relasi. Indeks global ini mendukung partisi variabel , di mana setiap hubungan memiliki tingkat yang berbeda dari partisi . Struktur indeks dapat didasarkan pada hashing atau pada B - tree seperti organisasi [ Bayer dan McCreight , 1972 ] . Dalam kedua kasus , query sama persis dapat diproses secara efisien dengan akses node tunggal . Namun, dengan hashing , kisaran query diproses dengan mengakses semua node yang berisi data dari r tanya kegembiraan . Menggunakan indeks B - tree (biasanya jauh lebih besar daripada indeks hash ) memungkinkan proses yang lebih efisien dari berbagai pertanyaan , di mana hanya node yang berisi data dalam kisaran tertentu yang diakses .

Contoh 14.1 . Gambar 14.8 memberikan contoh indeks global dan lokal di - dex untuk relasi EMP ( Eno , ENAME , DEPT , TITLE ) dari contoh engineering database kami telah menggunakan dalam buku ini .Misalkan kita ingin mencari unsur-unsur dalam kaitannya dengan nilai EMP ENO " E50 " . Indeks tingkat pertama pada nama set memetakan nama EMP ke indeks pada atribut ENO untuk relasi EMP . Kemudian indeks kedua tingkat lebih lanjut peta nilai klaster " E50 " ke nomor node j . Sebuah indeks lokal dalam setiap node juga diperlukan

untuk memetakan hubungan ke satu set halaman disk di dalam node . Indeks lokal memiliki dua tingkat , dengan pengelompokan besar pada nama relasi dan pengelompokan kecil pada beberapa atribut . The minor pengelompokan atribut untuk indeks lokal adalah sama dengan yang untuk indeks global. Dengan demikian asosiatif routing meningkat dari satu node ke yang lain didasarkan pada ( nama relasi , nilai cluster) . Indeks lokal ini lebih lanjut memetakan nilai klaster " E5 " ke halaman 91 . Hasil eksperimen untuk partisi variabel dari beban kerja yang terdiri dari campuran transaksi short ( debit - kredit seperti ) dan yang kompleks menunjukkan bahwa sebagai partisi - ing meningkat , throughput terus meningkat untuk transaksi singkat . Namun, untuk transaksi yang kompleks yang melibatkan beberapa bergabung besar , partisi lebih lanjut mengurangi throughput yang karena komunikasi overhead yang [ Copeland et al . , 1988] .Masalah serius dalam penempatan data berurusan dengan distribusi data yang miring yang dapat menyebabkan partisi non - seragam dan menyakiti load balancing . Rentang partisi lebih sensitif terhadap condong daripada baik round-robin atau partisi hash . Sebuah solusi untuk mengobati partisi non - seragam tepat , misalnya , dengan lebih memecah-belah partisi besar . Pemisahan antara node logis dan fisik juga berguna karena node logis mungkin sesuai dengan beberapa node fisik .Faktor yang menyulitkan terakhir adalah replikasi data untuk ketersediaan tinggi . Solusi yang sederhana adalah untuk mempertahankan dua salinan dari data yang sama , primer dan salinan cadangan , pada dua node yang terpisah . Ini adalah disk arsitektur cermin dipromosikan oleh banyak produsen komputer . Namun, dalam kasus kegagalan node, beban dari node dengan salin mungkin dua kali lipat , sehingga menyakiti load balancing . Untuk menghindari masalah ini , beberapa strategi replikasi data ketersediaan tinggi telah diusulkan untuk sistem database paralel [ Hsiao dan DeWitt , 1991 ] . Sebuah solusi menarik adalah partisi interleaved Teradata yang lebih partisi salinan cadangan pada jumlah node . Gambar 14.9 menggambarkan partisi interleaved dari relasi R selama empat node , di mana setiap salinan utama dari partisi , misalnya , R1 , yang lanjut dibagi menjadi tiga partisi , misalnya , R11 , r12 , dan r13 , masing-masing pada cadangan simpul yang berbeda . Dalam modus kegagalan , beban dari copy utama akan skor antara node salinan cadangan . Tetapi jika dua node gagal , maka relasi tersebut tidak dapat diakses sehingga menyakiti ketersediaan . Merekonstruksi salinan primer dari salinan cadangan yang terpisah mungkin mahal . Dalam mode normal , menjaga konsistensi copy mungkin juga mahal .

Solusi yang lebih baik adalah Gamma yang dirantai partisi [Hsiao dan DeWitt, 1991], yang menyimpan salinan utama dan cadangan pada dua node yang berdekatan (Gambar 14.10). Ide utama adalah bahwa probabilitas bahwa dua node yang berdekatan gagal adalah jauh lebih rendah daripada probabilitas bahwa setiap dua node gagal. Dalam modus kegagalan, beban dari node gagal dan node backup seimbang antara semua node yang tersisa dengan menggunakan node copy baik utama dan cadangan. Selain itu, menjaga salinan konsistensi lebih murah. Suatu hal yang terbuka adalah bagaimana melakukan penempatan data yang mempertimbangkan replikasi data. Mirip dengan alokasi fragmen dalam database terdistribusi, ini harus dianggap sebagai masalah optimasi.

14.3 Paralel Query Processing Tujuan dari pemrosesan query paralel adalah untuk mengubah query ke dalam rencana eksekusi yang dapat dijalankan secara efisien secara paralel. Hal ini dicapai dengan memanfaatkan penempatan data paralel dan berbagai bentuk paralelisme ditawarkan oleh query tingkat tinggi. Pada bagian ini, pertama-tama kita memperkenalkan berbagai bentuk permintaan paralelisme. Kemudian kita peroleh algoritma paralel dasar untuk pengolahan data. Akhirnya, kita membahas optimasi query paralel.

14.3.1 Query Paralelisme Eksekusi query paralel dapat memanfaatkan dua bentuk paralelisme: inter-dan intra-query. Inter-permintaan paralelisme memungkinkan eksekusi paralel dari beberapa pertanyaan yang dihasilkan oleh transaksi konkuren, dalam rangka meningkatkan throughput transaksional. Dalam query (intra-permintaan paralelisme), antar-operator dan intra operator paralelisme digunakan untuk mengurangi waktu respon. Antar-operator paralelisme diperoleh dengan mengeksekusi secara paralel beberapa operator dari pohon query pada beberapa prosesor sementara dengan intra operator paralelisme, operator yang sama dilakukan oleh banyak prosesor, masing-masing bekerja pada subset dari data. Perhatikan bahwa kedua bentuk paralelisme juga ada di pemrosesan query terdistribusi.

14.3.1.1 Intra - Operator ParalelismeIntra - Operator paralelisme didasarkan pada dekomposisi dari satu operator dalam satu set sub - operator independen , yang disebut kasus operator. Dekomposisi ini dilakukan dengan menggunakan partisi statis dan / atau dinamis hubungan . Setiap contoh operator yang kemudian akan memproses satu partisi relasi , juga disebut ember . Dekomposisi Operator fre -paling sering manfaat dari partisi awal data ( misalnya , data dipartisi pada join atribut ) . Untuk menggambarkan intra operator paralelisme , mari kita pertimbangkan sederhana pilih - bergabung query. Pilih operator dapat langsung dipecah menjadi beberapa pilih operator , masing-masing pada partisi yang berbeda , dan tidak ada redistribusi diperlukan (Gambar 14.11 ) . Perhatikan bahwa jika relasi dipartisi pada pilih atribut , partisi prop - erti dapat digunakan untuk menghilangkan beberapa kasus pilih . Sebagai contoh, dalam sebuah pertandingan pasti pilih , hanya satu contoh pilih akan dieksekusi jika relasi dipartisi oleh hashing ( atau range) pada pilih atribut . Hal ini lebih kompleks untuk menguraikan bergabung operator. Dalam rangka untuk memiliki independen bergabung , setiap ember pertama relasi R dapat bergabung dengan seluruh relasi S. Seperti bergabung akan sangat tidak efisien ( kecuali S sangat kecil ) karena akan menyiratkan siaran S pada setiap prosesor yang berpartisipasi . Cara yang lebih efisien adalah dengan menggunakan sifat partisi . Sebagai contoh, jika R dan S dipartisi dengan hashing pada bergabung atribut dan jika bergabung adalah equijoin , maka kita dapat melakukan partisi bergabung ke independen bergabung (lihat Algoritma 14.3 dalam Bagian 14.3.2 ) . Ini adalah kasus yang ideal yang tidak dapat selalu digunakan , karena tergantung pada partisi awal R dan S. Dalam kasus lain , satu atau dua operan dapat repartitioned [ Valduriez dan Gardarin , 1984 ] . Akhirnya , kita dapat melihat bahwa fungsi partisi ( hash , range, round robin ) tidak tergantung pada algoritma lokal (misalnya , loop bersarang , hash , semacam menggabungkan ) yang digunakan untuk memproses bergabung operator ( yaitu , pada setiap prosesor ) . Misalnya , hash join menggunakan partisi hash membutuhkan dua fungsi hash . Yang pertama , h1 , digunakan untuk partisi dua relasi dasar pada bergabung atribut . Yang kedua , h2 , yang dapat berbeda untuk setiap prosesor , digunakan untuk memproses bergabung pada setiap prosesor .

14.3.1.2 Inter-Operator Paralelisme Dua bentuk antar operator paralelisme dapat dimanfaatkan. Untuk Artikel pipa paralelisme, tautan Operator beberapa Artikel Baru PRODUSEN-Piutang dieksekusi secara paralel. Misalnya, operator juga akan membuka Dalam, Gambar 14.12 Akan dilaksanakan secara paralel Artikel Baru Operator bergabung. Keuntungan Bahasa Dari eksekusi nihil adalah bahwa Hasil Tengah regular tidak terwujud, sehingga menghemat Memori AKSes disk yang Dan. PADA Contoh Gambar 14.12, HANYA S mungkin cocok Dalam, Memori. Paralelisme TUBINDO dicapai ketika regular tidak ADA ketergantungan ANTARA Operator Yang dieksekusi secara paralel. Sebagai Contoh, operator juga akan membuka doa Gambar 14.12 dapat dieksekusi secara paralel. Bentuk paralelisme Ulasan Sangat menarik KARENA regular tidak ADA interferensi ANTARA prosesor.

14.3.2 Algoritma Paralel untuk Pengolahan DataData penempatan dipartisi adalah dasar untuk pelaksanaan paralel query database . Mengingat penempatan data yang dipartisi , sebuah isu penting adalah desain algoritma paralel untuk proses yang efisien dari operator basis data (yaitu , operator aljabar relasional ) dan query database yang menggabungkan beberapa operator . Masalah ini sulit karena baik trade- off antara paralelisme dan biaya komunikasi harus dicapai sejak meningkatkan paralelisme melibatkan lebih komunikasi antar node . Algoritma paralel untuk operator aljabar relasional adalah blok bangunan yang diperlukan untuk pemrosesan query paralel .Pengolahan data paralel harus mengeksploitasi intra operator paralelisme . Kami berkonsentrasi presentasi kami algoritma paralel untuk operator database pada pilih dan bergabung dengan operator , karena semua operator biner lainnya (seperti union ) dapat ditangani sangat banyak seperti bergabung [ Bratbergsengen , 1984 ] . Pengolahan pilih operator dalam konteks penempatan data yang dipartisi adalah identik dengan yang di database terdistribusi terfragmentasi . Tergantung pada pilih predikat , operator dapat dijalankan pada node tunggal ( dalam kasus pertandingan predikat yang tepat) atau , dalam kasus predikat sewenang-wenang kompleks , di semua node dimana relasi dipartisi . Jika indeks global diatur sebagai pohon seperti struktur B ( lihat Gambar 14.8 ) , pilih operator dengan predikat kisaran dapat dilaksanakan hanya oleh node yang menyimpan data yang relevan .Pengolahan paralel bergabung secara signifikan lebih terlibat daripada pilih . Didistribusikan bergabung algoritma yang dirancang untuk jaringan berkecepatan tinggi ( lihat Bab 8 ) dapat diterapkan dengan sukses dalam konteks database yang dipartisi . Namun, ketersediaan indeks global pada saat dijalankan memberikan lebih banyak kesempatan untuk eksekusi paralel efisien . Berikut ini, kami memperkenalkan tiga paralel dasar bergabung algoritma untuk database dipartisi : loop bersarang paralel ( PNL ) algoritma, asosiatif paralel bergabung ( PAJ ) algoritma , dan hash bergabung paralel ( PHJ ) algoritma . Kami menjelaskan masing-masing menggunakan bahasa pemrograman pseudo- bersamaan dengan tiga konstruksi utama : paralel - do , mengirim , dan menerima . Paralel -do menetapkan bahwa blok berikut tindakan dieksekusi secara paralel . Sebagai contoh,for i from 1 to n in parallel do actionAmenunjukkan bahwa tindakan A harus dieksekusi oleh n node secara paralel . Mengirim dan menerima adalah primitif komunikasi dasar untuk mentransfer data antara node . Kirim memungkinkan data yang akan dikirim dari satu node ke satu atau lebih node . Node tujuan biasanya diperoleh dari indeks global. Menerima mendapatkan isi dari data yang dikirim ke node tertentu . Dalam apa yang berikut kita mempertimbangkan bergabung dari dua relasi R dan S yang dipartisi lebih m dan n node , masing-masing. Demi kesederhanaan , kita mengasumsikan bahwa node m berbeda dari node n . Sebuah node di mana sebuah fragmen dari R ( masing-masing , S ) berada disebut R -node ( masing-masing , S - node) .Algoritma loop bersarang paralel [ Bitton et al . , 1983 ] adalah yang paling sederhana dan paling umum . Pada dasarnya menyusun produk Cartesian darihubungan R dan S secara paralel . Oleh karena itu, sewenang-wenang kompleks bergabung predikat dapat didukung . Algoritma ini telah diperkenalkan di Bab 8 dalam konteks Distributed INGRES . Hal ini lebih tepat dijelaskan dalam Algoritma 14.1 , di mana bergabung hasil diproduksi di S - node . Algoritma ini berlanjut dalam dua tahap .Pada tahap pertama , setiap fragmen dari R dikirim dan direplikasi di setiap node berisi sebuah fragmen dari S ( ada n node tersebut ) . Tahap ini dilakukan secara paralel dengan m node dan efisien jika jaringan komunikasi memiliki kemampuan broadcast . Dalam hal ini setiap fragmen dari R dapat disiarkan ke n node dalam transfer tunggal , sehingga menimbulkan biaya komunikasi total pesan m . Jika tidak , ( m * n ) pesan yang diperlukan .Pada tahap kedua , masing-masing S -node j menerima relasi R sepenuhnya , dan lokal bergabung dengan fragmen R Sj . Tahap ini dilakukan secara paralel dengan n node . Lokal bergabung dapat dilakukan seperti pada DBMS terpusat . Tergantung pada algoritma bergabung lokal , bergabung pengolahan mungkin atau mungkin tidak dimulai segera setelah data diterima . Jika loop bersarang bergabung algoritma yang digunakan, proses penggabungan dapat dilakukan dengan cara pipelined segera sebagai tuple dari R tiba . Jika , di sisi lain , semacam - merge bergabung algoritma yang digunakan , semua data harus sudah diterima sebelum bergabung dari hubungan diurutkan dimulai .Untuk meringkas , algoritma loop bersarang paralel dapat dipandang sebagai mengganti operator R I S by ni=1(R I Si).

Contoh 14.2. Gambar 14.13 menunjukkan penerapan algoritma loop bersarang paralel dengan m = n = 2.

The asosiatif paralel bergabung algoritma, yang ditunjukkan pada Algoritma 14.2, hanya berlaku dalam kasus equijoin dengan salah satu hubungan operan dipartisi sesuai dengan bergabung atribut. Untuk menyederhanakan deskripsi algoritma, kita mengasumsikan bahwa predikat equijoin pada atribut A dari R, dan B dari S. Selanjutnya, hubungan S dipartisi sesuai dengan fungsi hash h diterapkan untuk bergabung dengan atribut B, yang berarti bahwa semua tupel dari S yang memiliki nilai yang sama untuk h (B) ditempatkan pada node yang sama. Tidak ada pengetahuan tentang bagaimana R dipartisi diasumsikan. Penerapan asosiatif paralel bergabung algoritma akan menghasilkan hasil bergabung pada node di mana Si ada (yaitu, S-node).

Algoritma ini berlanjut dalam dua tahap. Pada tahap pertama, relasi R dikirim sebagai-sociatively ke S-node berdasarkan fungsi hash h diterapkan untuk atribut A. Ini menjamin bahwa tuple dari R dengan nilai hash v diutus hanya kepada S-node yang con-tupel akan memelihara dengan nilai hash v tahap pertama dilakukan secara paralel dengan m node mana yang ada Ri. Dengan demikian, tidak seperti loop bersarang bergabung paralel algoritma, tuple dari R bisa didistribusikan tetapi tidak direplikasi di S-node. Hal ini tercermin dalam dua pernyataan pertama Paralel-do dari algoritma di mana setiap node i menghasilkan m fragmen Ri dan mengirimkan setiap fragmen Ri j ke node menyimpan S j. Pada tahap kedua, masing-masing S-node j menerima secara paralel dari R-node yang berbeda subset relevan R (yaitu, Rj) dan bergabung secara lokal dengan fragmen Sj. Lokal bergabung pengolahan dapat dilakukan seperti dalam loop bersarang bergabung paralel algoritma. Untuk meringkas, asosiatif paralel bergabung algoritma menggantikan RIS operator dengan ni = 1 (Ri I Si).

Contoh 14.3. Gambar 14.14 menunjukkan penerapan asosiatif paralel bergabung algoritma dengan m = n = 2. Kotak yang menetas dengan pola yang sama menunjukkan fragmen yang tupel sesuai dengan fungsi hash yang sama.

The hash paralel bergabung algoritma, yang ditunjukkan pada Algoritma 14.3, dapat dilihat sebagai generalisasi dari asosiatif paralel bergabung algoritma. Hal ini juga berlaku dalam kasus equijoin tetapi tidak memerlukan partisi khusus dari hubungan operan. Ide dasarnya adalah untuk partisi hubungan R dan S ke nomor yang sama p set saling eksklusif (fragmen) R1, R2, ..., Rp, dan S1, S2, ..., Sp, sehingga

Seperti dalam asosiatif paralel bergabung algoritma , partisi dari R dan S dapat didasarkan pada fungsi hash yang sama diterapkan untuk bergabung atribut . Setiap individu bergabung ( Ri I Si ) dilakukan secara paralel , dan bergabung hasilnya diproduksi di p node . P node ini sebenarnya bisa dipilih pada saat run waktu berdasarkan beban sistem. Perbedaan utama dengan asosiatif paralel bergabung algoritma adalah bahwa partisi dari S diperlukan dan hasilnya diproduksi di p node daripada di n S - node .Algoritma dapat dibagi menjadi dua tahap utama , fase membangun dan probe fase [ DeWitt dan Gerber , 1985 ] . Membangun fase hash R pada bergabung atribut , mengirimkannya ke node p sasaran yang membangun tabel hash untuk tupel masuk . Probe fase mengirimkan S associatively ke p node target itu menyelidiki tabel hash untuk setiap tupel masuk. Jadi , segera setelah tabel hash telah dibangun untuk R , tupel S dapat dikirim dan diproses dalam pipa dengan menelusuri tabel hash .

Contoh 14.4 . Gambar 14.15 menunjukkan penerapan hash paralel bergabung algoritma dengan m = n = 2 . Kami berasumsi bahwa hasilnya diproduksi di node 1 dan 2 . Oleh karena itu , panah dari simpul 1 ke simpul 1 atau node 2 ke node 2 menunjukkan transfer lokal . Seperti biasa , setiap paralel bergabung algoritma berlaku dan mendominasi dalam kondisi yang berbeda . Bergabunglah pengolahan dicapai dengan tingkat paralelisme baik n atau p .

Karena setiap algoritma membutuhkan bergerak setidaknya satu dari hubungan operan, indikator yang baik dari kinerja mereka adalah total biaya. Untuk membandingkan algoritma ini, kita sekarang memberikan analisis sederhana dari biaya, didefinisikan dalam hal total biaya komunikasi (CCOM) dan biaya pengolahan (CPRO). Oleh karena itu, total biaya setiap algoritma.Cost(Alg.)=CCOM(Alg.)+CPRO(Alg.)

Untuk mempermudah, CCOM tidak termasuk pesan kontrol, yang diperlukan untuk memulai dan mengakhiri tugas lokal. Kami dilambangkan dengan msg (# tup) biaya mentransfer pesan tupel # tup dari satu node ke yang lain. Biaya pengolahan (yang meliputi jumlah I / O dan biaya CPU) didasarkan pada fungsi cloc (m, n) yang menghitung biaya pemrosesan lokal untuk bergabung dua relasi dengan kardinalitas m dan n. Kami berasumsi bahwa bergabung algoritma lokal adalah sama untuk ketiga bergabung algoritma paralel. Akhirnya, kita mengasumsikan bahwa jumlah pekerjaan yang dilakukan secara paralel terdistribusi secara seragam atas semua node dialokasikan untuk operator. Tanpa kemampuan penyiaran, algoritma loop bersarang paralel menimbulkan biaya m * n pesan, dimana pesan berisi fragmen R kartu ukuran (R) / m tupel. Dengan demikian kita memiliki.

Masing-masing dari S-node harus bergabung semua R dengan fragmen S nya. Dengan demikian kita memilikiCPRO(PNL) = nCLOC(card(R), card(S)/n)The asosiatif paralel bergabung algoritma mengharuskan setiap partisi R-simpul sebuah fragmen dari R n ke subset dari kartu ukuran (R) / (m * n) dan mengirimkannya ke n S-node. Dengan demikian kita memiliki

The hash paralel bergabung algoritma membutuhkan baik hubungan R dan S dipartisi di p node dalam cara yang mirip dengan asosiatif paralel bergabung algoritma. Dengan demikian kita memiliki

Mari kita berasumsi bahwa p = n . Dalam hal ini, biaya pengolahan bergabung untuk PAJ dan PHJ algoritma identik . Namun, yang lebih tinggi untuk algoritma PNL , karena masing-masing S -node harus melakukan bergabung dengan R seluruhnya . Dari persamaan di atas , jelas bahwa algoritma PAJ menimbulkan biaya komunikasi sedikit. Namun, perbandingan biaya komunikasi antara PNL dan PHJ algoritma tergantung pada nilai-nilai hubungan kardinalitas dan derajat partisi . Jika kita memilih p < n , algoritma PHJ menimbulkan biaya komunikasi sedikit tetapi dengan mengorbankan peningkatan biaya pengolahan bergabung . Sebagai contoh, jika p = 1 , bergabung diproses dengan cara murni terpusat .Kesimpulannya, algoritma PAJ yang paling mungkin untuk mendominasi dan harus digunakan bila berlaku . Jika tidak , pilihan antara PNL dan PHJ algoritma memerlukan estimasi total biaya mereka dengan nilai yang optimal untuk p . Pilihan join algoritma paralel dapat diringkas oleh prosedur MEMILIH JA ditunjukkan pada Algoritma 14.4 , di mana profil dari relasi menunjukkan apakah itu dipartisi dan di mana atribut .

14.3.3 Paralel Optimasi Query Optimasi query paralel menunjukkan kesamaan dengan pemrosesan query terdistribusi. Namun, fokus lebih pada mengambil keuntungan dari kedua intra operator paralelisme (menggunakan algoritma yang dijelaskan di atas) dan antar-operator paralelisme. Sebagaimana query optimizer (lihat Bab 8), query optimizer paralel dapat dilihat sebagai tiga komponen: ruang pencarian, model biaya, dan strategi pencarian. Pada bagian ini, kami akan menjelaskan teknik untuk komponen ini.

14.3.3.1 Cari RuangRencana eksekusi diabstraksikan melalui pohon operator, yang menentukan urutan di mana operator dijalankan . Pohon Operator yang diperkaya dengan penjelasan , yang menunjukkan aspek eksekusi tambahan, seperti algoritma dari masing-masing operator . Dalam DBMS paralel , merupakan aspek penting untuk eksekusi tercermin oleh penjelasan adalah kenyataan bahwa dua operator berikutnya dapat dilaksanakan dalam pipa . Dalam hal ini , operator kedua dapat dimulai sebelum yang pertama selesai . Dengan kata lain, operator kedua mulai mengkonsumsi tupel segera setelah yang pertama menghasilkan mereka . Eksekusi pipelined tidak memerlukan hubungan sementara yang akan terwujud , yaitu , sebuah simpul pohon sesuai dengan operator dieksekusi dalam pipa tidak disimpan .Beberapa operator dan beberapa algoritma mengharuskan satu operan disimpan . Sebagai contoh, dalam hash paralel bergabung algoritma (lihat Algoritma 14.3 ) , dalam tahap membangun , tabel hash dibangun secara paralel pada join atribut dari relasi terkecil . Pada tahap penyelidikan , hubungan terbesar secara berurutan dipindai dan tabel hash dikonsultasikan untuk setiap tupel nya . Oleh karena itu , pipa dan penjelasan disimpan membatasi penjadwalan rencana eksekusi dengan memisahkan pohon operator ke non - overlapping sub - pohon , sesuai dengan tahapan eksekusi . Operator pipelined dijalankan dalam fase yang sama , biasanya disebut rantai pipa sedangkan indikasi menyimpan menetapkan batas antara satu fase dan fase berikutnya .Contoh 14.5 . Gambar 14.16 menunjukkan dua pohon eksekusi , satu dengan tidak ada pipa dan satu dengan pipa . Pipelining relasi ditunjukkan oleh panah dengan kepala yang lebih besar . Gambar 14.16 ( a) menunjukkan eksekusi tanpa pipa . The Temp1 hubungan sementara harus benar-benar diproduksi dan tabel hash di Build2 harus dibangun sebelum Probe2 dapat mulai mengkonsumsi R3 . Hal yang sama berlaku untuk Temp2 , Build3 dan Probe3 . Dengan demikian , pohon dilaksanakan di empat fase yang berurutan : ( 1 ) membangun tabel hash R1 , (2 ) menyelidiki dengan R2 dan membangun tabel hash Temp1 itu , ( 3 ) menyelidiki dengan R3 dan membangun tabel hash Temp2 itu , ( 3 ) menyelidiki itu dengan R3 dan menghasilkan hasil . Gambar 14.16 ( b ) menunjukkan eksekusi pipeline . Pohon dapat dieksekusi dalam dua tahap jika memori yang tersedia untuk membangun tabel hash : ( 1 ) membangun tabel untuk R1 R3 dan R4 , ( 2 ) mengeksekusi Probe1 , Probe2 dan Probe3 dalam pipa . Himpunan node di mana relasi disimpan disebut rumahnya . Rumah dari operator adalah himpunan node di mana ia dieksekusi dan itu harus menjadi rumah operan dalam rangka bagi operator untuk mengakses operan nya . Bagi operator biner seperti bergabung, ini mungkin berarti partisi ulang salah satu operan . Optimizer bahkan mungkin kadang-kadang menemukan bahwa partisi ulang kedua operan adalah kepentingan . Pohon Operator menanggung eksekusi penjelasan untuk menunjukkan partisi ulang .Gambar 14.17 menunjukkan empat pohon operator yang merepresentasikan rencana eksekusi untuk tiga-cara bergabung . Besar kepala panah menunjukkan bahwa hubungan input dikonsumsi dalam pipa , yaitu , tidak disimpan secara lokal . Pohon Operator mungkin linier , yaitu , setidaknya satu operan masing-masing bergabung node hubungan dasar atau lebat. Hal ini mudah untuk mewakili hubungan pipelined sebagai masukan sisi kanan dari operator . Dengan demikian , pohon kanan dalam mengekspresikan pipelining penuh sementara pohon kiri dalam mengekspresikan perwujudan penuh dari semua hasil antara . Dengan demikian , pohon-pohon lama kanan mendalam lebih efisien maka sesuai kiri dalam

pohon tetapi cenderung untuk mengkonsumsi lebih banyak memori untuk menyimpan hubungan sisi kiri . Di kiri -pohon yang mendalam seperti yang dari Gambar 14.17 ( a) , hanya operator terakhir dapat mengkonsumsi hubungan masukan yang tepat di pipa asalkan hubungan masukan kiri dapat sepenuhnya disimpan dalam memori utama .Format pohon paralel selain kiri atau kanan - jauh juga menarik . Misalnya, pohon lebat ( Gambar 14.17 ( d ) ) adalah satu-satunya untuk memungkinkan paralelisme independen dan beberapa pipa paralelisme . Paralelisme independen berguna ketika hubungan dipartisi pada rumah menguraikan . Misalkan bahwa hubungan dalam Gambar 14.17 ( d ) dipartisi sedemikian rupa sehingga ( R1 dan R2 ) memiliki h1 rumah yang sama dan ( R3 dan R4 memiliki h2 rumah yang sama ) , memisah dari h1 . Kemudian , dua bergabung dari hubungan dasar dapat secara independen dieksekusi secara paralel dengan set node yang merupakan h1 dan h2.Ketika pipa paralelisme yang bermanfaat , pohon zigzag , yang merupakan format perantara antara pohon-pohon kiri dan kanan sedalam - dalam, kadang-kadang dapat mengalahkan pohon kanan mendalam karena lebih baik menggunakan memori utama [ Ziane et al . , 1993] . Sebuah heuristik yang masuk akal adalah untuk mendukung pohon kanan dalam atau zigzag ketika hubungan tersebut sebagian terfragmentasi pada rumah disjoint dan hubungan antara agak besar . Dalam hal ini , pohon-pohon lebat biasanya akan membutuhkan lebih banyak tahapan dan memakan waktu lebih lama untuk mengeksekusi . Sebaliknya , ketika hubungan antara kecil , pipelining sangat tidak efisien karena sulit untuk menyeimbangkan beban antara pipa tahap .

14.3.3.2 Biaya Model Ingat bahwa model biaya optimizer bertanggung jawab untuk memperkirakan biaya rencana eksekusi diberikan . Ini terdiri dari dua bagian : arsitektur -dependent dan arsitektur - independen [ . Lanzelotte et al , 1994] . Bagian arsitektur - independen merupakan

fungsi biaya untuk algoritma operator, misalnya , loop bersarang untuk bergabung dan akses sequen -esensial untuk pilih . Jika kita mengabaikan isu-isu concurrency , hanya fungsi biaya untuk data partisi ulang dan konsumsi memori berbeda dan merupakan bagian yang tergantung arsitektur tertentu . Memang , partisi ulang tupel relasi dalam sistem shared- tidak menyiratkan transfer data melalui interkoneksi , sedangkan mengurangi sampai hashing dalam sistem shared- memory . Pemakaian memori dalam kasus shared- tidak ada komplikasi - kasikan oleh antar-operator paralelisme . Dalam sistem shared- memory , semua operator membaca dan menulis data melalui memori global , dan mudah untuk menguji apakah ada cukup ruang untuk mengeksekusi mereka secara paralel , yaitu , jumlah pemakaian memori dari operator individual kurang dari memori yang tersedia . Dalam shared- apa-apa , masing-masing prosesor memiliki memori sendiri , dan itu menjadi penting untuk mengetahui operator yang dijalankan secara paralel pada prosesor yang sama . Dengan demikian , untuk kesederhanaan , dapat diasumsikan bahwa himpunan prosesor ( rumah) ditugaskan untuk operator tidak tumpang tindih , yaitu , baik persimpangan set prosesor kosong atau set identik .Total waktu dari rencana dapat dihitung dengan formula yang hanya menambahkan semua CPU , I / O dan komunikasi komponen biaya seperti dalam optimasi query terdistribusi . Waktu respon lebih terlibat karena harus memperhitungkan pipelining .Waktu respons dari rencana p , dijadwalkan secara bertahap (masing-masing dilambangkan dengan ph ) , adalah com - puted sebagai berikut [ Lanzelotte et al , 1994. ] :

dimana Op menunjukkan operator dan respTime (Op) adalah waktu respon Op, pipa delay (Op) adalah masa tunggu Op diperlukan bagi produsen untuk de-hati hasil tupel pertama (itu adalah sama dengan 0 jika hubungan masukan O disimpan), toko delay (ph) adalah waktu yang diperlukan untuk menyimpan hasil output fase ph (itu adalah sama dengan 0 jika ph adalah fase terakhir, dengan asumsi bahwa hasilnya dikirim segera setelah mereka diproduksi). Untuk memperkirakan biaya rencana eksekusi, model biaya menggunakan statistik database dan informasi organisasi, seperti kardinalitas relasi dan partisi, seperti optimasi query didistribusikan.

14.3.3.3 Cari Strategi Strategi pencarian tidak perlu berbeda dari optimasi query baik tersentralisasi atau terdistribusi. Namun, ruang pencarian cenderung jauh lebih besar karena ada lebih banyak parameter yang mempengaruhi rencana eksekusi paralel, khususnya, pipa dan menyimpan penjelasan. Dengan demikian, strategi pencarian acak (lihat Bagian 8.1.2) umumnya mengungguli strategi deterministik dalam optimasi query paralel.14,4 Load Balancing Baik load balancing sangat penting untuk kinerja sistem paralel. Seperti tercantum dalam Bab 8 waktu respon dari serangkaian operator paralel adalah bahwa dari satu terpanjang. Dengan demikian, meminimalkan waktu yang terpanjang adalah penting untuk meminimalkan waktu respon. Menyeimbangkan beban transaksi dan permintaan antara node yang berbeda berbeda juga penting untuk memaksimalkan throughput. Meskipun query optimizer paralel menggabungkan keputusan tentang bagaimana untuk melaksanakan rencana eksekusi paralel, load balancing dapat terluka oleh beberapa masalah menimbulkan pada waktu eksekusi. Solusi untuk masalah ini dapat diperoleh di tingkat intra-dan antar-operator. Pada bagian ini, kita membahas masalah-masalah eksekusi paralel dan solusi mereka.14.4.1 Masalah Eksekusi ParalelMasalah utama diperkenalkan oleh eksekusi query paralel adalah inisialisasi , gangguan, dan miring .

Inisialisasi .Sebelum eksekusi berlangsung , langkah inisialisasi diperlukan . Langkah pertama ini umumnya berurutan . Ini termasuk proses ( atau benang ) penciptaan dan inisialisasi , inisialisasi komunikasi , dll durasi langkah ini sebanding dengan derajat paralelisme dan benar-benar dapat mendominasi waktu eksekusi query sederhana , misalnya, pilih query pada relasi tunggal . Dengan demikian , derajat paralelisme harus tetap sesuai dengan kompleksitas query.Rumus dapat dikembangkan untuk memperkirakan speedup maksimal dicapai selama pelaksanaan operator dan untuk menyimpulkan jumlah optimal prosesor [ Wilshut dan APERS 1992 ] . Mari kita mempertimbangkan pelaksanaan operator yang memproses N tupel dengan prosesor n . Mari c menjadi waktu proses rata-rata setiap tuple dan waktu inisialisasi per prosesor . Dalam kasus yang ideal , waktu respon dari eksekusi operator

Dengan derivasi, kita bisa mendapatkan jumlah yang optimal dari prosesor n0 untuk mengalokasikan dan speedup dicapai maksimal (S0).

Jumlah optimal prosesor (n0) tidak tergantung pada n dan hanya tergantung pada total waktu proses dan waktu inisialisasi. Dengan demikian, memaksimalkan tingkat paralelisme untuk operator, misalnya, menggunakan semua prosesor yang tersedia, bisa melukai speed-up karena overhead dari inisialisasi.

Interferensi .Sebuah eksekusi sangat paralel dapat diperlambat oleh gangguan. Interferensi terjadi ketika beberapa prosesor secara bersamaan mengakses sumber daya yang sama , perangkat keras atau perangkat lunak .Sebuah contoh khas dari gangguan hardware adalah pendapat dibuat pada bus sistem shared -memory . Ketika jumlah prosesor meningkat , jumlah konflik pada peningkatan bus , sehingga membatasi diperpanjang sistem shared- memory . Sebuah solusi untuk gangguan ini adalah untuk menduplikasi sumber daya bersama . Misalnya , gangguan akses disk dapat dihilangkan dengan menambahkan beberapa disk dan partisi hubungan .Software gangguan terjadi ketika beberapa prosesor ingin mengakses data bersama . Untuk mencegah inkoherensi , variabel saling pengecualian digunakan untuk melindungi data bersama , sehingga menghalangi semua kecuali satu prosesor yang mengakses data bersama . Hal ini mirip dengan algoritma kontrol konkurensi berbasis penguncian ( lihat Bab 11 ) .Namun, variabel bersama mungkin menjadi hambatan eksekusi query, menciptakan hot spot dan efek konvoi [ Blasgen et al . , 1979 ] . Sebuah contoh khas dari gangguan perangkat lunak adalah akses struktur internal yang database seperti indeks dan buffer . Untuk mempermudah, versi sebelumnya dari sistem database yang dilindungi oleh variabel saling pengecualian yang unik . Penelitian telah menunjukkan overhead strategi tersebut : 45 % dari waktu eksekusi query yang dikonsumsi oleh interferensi antara 16 prosesor .Sebuah solusi umum untuk gangguan perangkat lunak untuk partisi sumber daya bersama menjadi beberapa sumber independen , masing-masing dilindungi oleh variabel saling pengecualian yang berbeda . Dengan demikian , dua sumber independen dapat diakses secara paralel , yang mengurangi kemungkinan gangguan. Untuk lebih mengurangi gangguan pada sumber daya yang independen ( misalnya , struktur indeks ) , replikasi dapat digunakan . Dengan demikian , akses ke sumber daya direplikasi juga dapat diparalelkan .

Condong (skew).Masalah Load balancing dapat muncul dengan intra - Operator paralelisme ( variasi ukuran partisi ) , yaitu data yang miring , dan antar-operator paralelisme ( variasi kompleksitas operator ) .Efek dari distribusi data miring pada eksekusi paralel dapat diklasifikasikan sebagai berikut [ Walton et al . , 1991 ] . Atribut nilai condong ( AVS ) miring yang melekat dalam dataset ( misalnya , ada warga lainnya di Paris daripada di Waterloo ) sementara condong penempatan tupel ( TPS ) adalah condong diperkenalkan ketika data awalnya dipartisi ( misalnya , dengan kisaran partisi ) . Selektivitas condong ( SS ) diperkenalkan ketika ada variasi dalam selektivitas pilih predikat pada setiap node . Redistribusi condong ( RS ) terjadi pada langkah redistribusi antara dua operator . Hal ini mirip dengan TPS . Akhirnya bergabung condong produk ( JPS ) terjadi karena bergabung selektivitas dapat bervariasi antara node . Gambar 14.18 mengilustrasikan klasifikasi ini pada permintaan lebih dari dua relasi R dan S yang buruk dipartisi . Kotak sebanding dengan ukuran partisi yang sesuai . Partisi seperti miskin berasal dari salah satu data ( AVS ) atau fungsi partisi ( TPS ) . Dengan demikian , waktu pemrosesan dua contoh scan1 dan Scan2 tidak sama. Kasus bergabung operator buruk . Pertama , jumlah tupel terima berbeda dari satu contoh ke yang lain karena redistribusi miskin partisi R ( RS ) atau selektivitas variabel sesuai dengan partisi R olahan ( SS ) . Akhirnya , ukuran yang tidak merata partisi S ( AVS / TPS ) menghasilkan waktu pengolahan yang berbeda untuk tupel yang dikirim oleh operator memindai dan ukuran hasil berbeda dari satu partisi ke yang lain karena untuk bergabung dengan selektifitas ( JPS ) .

14.4.2 Intra-Operator Load Balancing Baik intra operator load balancing tergantung pada derajat paralelisme dan alokasi prosesor bagi operator. Untuk beberapa algoritma, misalnya, hash paralel bergabung algoritma, parameter ini tidak dibatasi oleh penempatan data. Dengan demikian, rumah dari operator (set prosesor di mana ia dieksekusi) harus hati-hati memutuskan. Masalah condong membuat sulit untuk query optimizer paralel untuk membuat keputusan ini statis (pada saat kompilasi) karena akan membutuhkan model biaya yang sangat akurat dan rinci. Oleh karena itu, solusi utama mengandalkan adaptif atau khusus

yang dapat dimasukkan dalam query optimizer hybrid. Kami jelaskan di bawah teknik ini dalam konteks paralel bergabung, yang telah menerima banyak perhatian. Untuk mempermudah, kita mengasumsikan bahwa masing-masing operator diberikan rumah yang ditetapkan oleh prosesor query (baik statis atau sebelum eksekusi).

Teknik Adaptive .Ide utama adalah untuk statis memutuskan alokasi awal prosesor untuk operator ( menggunakan model biaya ) dan , pada waktu eksekusi , beradaptasi dengan condong menggunakan beban reallo - kation . Suatu pendekatan sederhana untuk memuat realokasi adalah untuk mendeteksi partisi kebesaran dan partisi lagi ke beberapa prosesor ( antara prosesor sudah dialokasikan untuk operasi ) untuk meningkatkan paralelisme [ Kitsuregawa dan Ogawa , 1990; Omiecinski 1991 ] . Pendekatan ini umum untuk memungkinkan penyesuaian lebih dinamis dari tingkat paralelisme [ Biscondi et al . , 1996 ] . Menggunakan operator kontrol tertentu dalam rencana eksekusi untuk mendeteksi apakah perkiraan statis untuk ukuran hasil antara akan berbeda dari nilai-nilai run-time . Selama eksekusi , jika perbedaan antara tje perkiraan dan nilai sebenarnya cukup tinggi , operator control melakukan hubungan redistribusi untuk mencegah bergabung condong produk dan redistribusi miring . Teknik Adaptive berguna untuk meningkatkan intra - Operator load balancing dalam semua jenis arsitektur paralel . Namun, sebagian besar pekerjaan telah dilakukan dalam konteks bersama - ada di mana efek beban tidak seimbang yang lebih parah pada kinerja . DBS3 [ Bergsten et al , 1991; . . Dageville et al , 1994] telah mempelopori penggunaan teknik adaptif berdasarkan hubungan partisi ( seperti pada shared -nothing ) untuk bersama-memori . Dengan mengurangi gangguan prosesor , teknik ini menghasilkan beban yang sangat baik balancing untuk intra - Operator paralelisme [ Bouganim et al . , 1996a , b ] .

Teknik khusus .Paralel bergabung algoritma dapat khusus untuk menangani condong . Salah satu pendekatan adalah dengan menggunakan beberapa algoritma bergabung , masing-masing khusus untuk tingkat yang berbeda miring , dan untuk menentukan , pada waktu eksekusi , yang algoritma yang terbaik [ DeWitt et al , 1992. ] . Hal ini bergantung pada dua teknik utama : kisaran partisi dan sampling. Rentang partisi digunakan sebagai pengganti partisi hash ( hash di paralel bergabung algoritma ) untuk menghindari redistribusi condong dari hubungan bangunan . Dengan demikian , prosesor bisa mendapatkan partisi dari jumlah yang sama dari tuple , sesuai dengan rentang yang berbeda bergabung nilai atribut . Untuk menentukan nilai-nilai yang menggambarkan nilai-nilai range, sampling hubungan bangunan yang digunakan untuk menghasilkan histogram dari join nilai atribut , yaitu , jumlah tupel untuk setiap nilai atribut . Sampling juga berguna untuk menentukan algoritma untuk digunakan dan yang terkait digunakan untuk membangun atau menyelidik . Dengan menggunakan teknik ini , hash bergabung paralel algoritma dapat disesuaikan untuk menangani condong sebagai berikut :1. Contoh hubungan bangunan untuk menentukan rentang partisi. 2. Mendistribusikan bangunan kaitannya dengan prosesor menggunakan rentang. masing-masing prosesor membangun tabel hash yang berisi tupel masuk. 3. Mendistribusikan hubungan menyelidik menggunakan rentang yang sama dengan prosesor. Untuk setiap tuple yang diterima, masing-masing prosesor probe tabel hash untuk melakukan bergabung.

Algoritma ini dapat lebih ditingkatkan untuk menangani condong tinggi menggunakan teknik tambahan dan strategi alokasi prosesor yang berbeda [DeWitt et al, 1992.]. Pendekatan yang serupa adalah dengan memodifikasi algoritma bergabung dengan memasukkan langkah penjadwalan yang bertugas mendistribusikan beban pada saat runtime [Serigala et al., 1993].

14.4.3 Inter - Operator Load BalancingUntuk mendapatkan beban yang baik balancing pada tingkat antar - operator, maka perlu untuk memilih , untuk setiap operator , berapa banyak dan yang prosesor untuk menetapkan untuk pelaksanaannya . Hal ini harus dilakukan dengan mempertimbangkan pipa paralelisme , yang membutuhkan komunikasi antar - operator. Ini lebih sulit untuk mencapai dalam shared - apa-apa untuk alasan berikut [ Wilshut et al . , 1995 ] . Pertama , tingkat paralelisme dan alokasi prosesor untuk operator , ketika memutuskan pada tahap optimasi paralel , didasarkan pada model biaya mungkin tidak akurat . Kedua , pilihan tingkat paralelisme tunduk pada kesalahan karena kedua prosesor dan operator adalah entitas diskrit . Akhirnya , prosesor yang terkait dengan operator terbaru dalam rantai pipa mungkin tetap menganggur waktu yang signifikan . Ini disebut masalah delay pipa .Pendekatan utama dalam shared - tidak ada yang menentukan secara dinamis ( sebelum eksekusi ) derajat paralelisme dan lokalisasi prosesor untuk masing-masing operator . Misalnya, Tingkat Pertandingan algoritma [ Mehta dan DeWitt , 1995 ] . menggunakan model biaya dalam rangka untuk mencocokkan tingkat di mana tupel diproduksi dan dikonsumsi . Ini adalah dasar untuk memilih set prosesor yang akan digunakan untuk eksekusi query ( didasarkan pada memori yang tersedia , CPU , dan pemanfaatan disk) . Banyak algoritma lain yang mungkin untuk pilihan jumlah dan lokalisasi prosesor , misalnya , dengan memaksimalkan penggunaan beberapa sumber daya , menggunakan statistik penggunaannya [ Rahm dan Marek , 1995; Garofalakis dan Ioannidis 1996 ] .Dalam shared- disk dan memori bersama , ada lebih fleksibilitas karena semua prosesor memiliki akses yang sama ke disk . Karena tidak ada kebutuhan untuk hubungan fisik partisi , setiap prosesor dapat dialokasikan untuk operator manapun [ Lu et al , 1991; . . Shekita et al , 1993 ] . Secara khusus, prosesor dapat dialokasikan semua operator dalam rantai pipa yang sama , dengan demikian , dengan tidak ada paralelisme antar - operator. Namun, antar-operator paralelisme berguna untuk melaksanakan rantai pipa independen. Pendekatan yang diusulkan oleh Hong [ 1992 ] untuk shared -memory memungkinkan eksekusi paralel rantai pipa independen , yang disebut tugas . Ide utama adalah untuk menggabungkan I / O - terikat dan tugas CPU - terikat untuk meningkatkan pemanfaatan sumber daya sistem . Sebelum eksekusi , tugas diklasifikasikan sebagai I/O- terikat atau CPU - terikat menggunakan informasi model biaya sebagai berikut . Mari kita anggap bahwa , jika dilaksanakan secara berurutan , tugas t menghasilkan akses disk pada tingkat IO - rate ( t ) , misalnya, dalam jumlah akses disk per detik . Mari kita mempertimbangkan sistem shared- memory dengan prosesor n dan disk bandwidth total B ( jumlah akses disk per detik ) . Tugas t didefinisikan sebagai I / O - terikat jika IO - rate ( t ) > B / n dan CPU - terikat sebaliknya. CPU -bound dan I / O - terikat pembicaraan kemudian dapat dijalankan secara paralel pada optimal I/O- titik keseimbangan CPU mereka . Hal ini dilakukan dengan secara dinamis menyesuaikan tingkat intra - Operator paralelisme tugas untuk mencapai pemanfaatan sumber daya yang maksimal .

14.4.4 Intra - Query Load BalancingIntra - permintaan load balancing harus menggabungkan intra - dan antar-operator paralelisme . Sampai batas tertentu , mengingat arsitektur paralel , teknik baik untuk intra - atau antar-operator load balancing kita hanya disajikan dapat dikombinasikan . Namun, dalam konteks penting sistem hibrida seperti NUMA atau klaster , masalah load balancing diperburuk karena mereka harus ditujukan pada dua tingkat , lokal antara prosesor dari setiap node shared- memory ( SM - node) dan global di antara semua node . Tak satu pun dari pendekatan untuk intra - dan antar-operator load balancing hanya dibahas dapat dengan mudah diperluas untuk menangani masalah ini . Strategi Load balancing untuk shared - tidak akan mengalami lebih parah masalah memburuk ( misalnya , kompleksitas dan ketidaktelitian model biaya ) . Di sisi lain , mengadaptasi solusi dinamis yang dikembangkan untuk sistem shared- memory akan dikenakan biaya overhead komunikasi yang tinggi .Sebuah solusi umum untuk load balancing dalam sistem hybrid adalah model eksekusi disebut Dynamic Processing ( DP ) [ Bouganim et al . , 1996c ] . Ide dasarnya adalah bahwa query didekomposisi menjadi mandiri unit pengolahan sekuensial , yang masing-masing dapat dilakukan oleh prosesor apapun. Secara intuitif , prosesor dapat bermigrasi secara horizontal ( intra operator paralelisme ) dan vertikal ( antar-operator paralelisme ) bersama operator query. Ini meminimalkan overhead komunikasi antar -node load balancing dengan memaksimalkan intra dan beban antar-operator menyeimbangkan dalam node shared- memory . Input ke model eksekusi rencana eksekusi paralel seperti yang dihasilkan oleh optimizer , yaitu , pohon Operator dengan penjadwalan operator dan alokasi sumber daya komputasi untuk operator . Kendala penjadwalan Operator mengungkapkan urutan parsial antara operator query : O1 < O2 menunjukkan bahwa operator O1 tidak dapat dimulai sebelum Operator O2 .

Contoh 14.6. Gambar 14.19 menunjukkan join pohon dengan empat hubungan R1, R2, R3 dan R4, dan pohon operator yang sesuai dengan rantai pipa jelas diidentifikasi. Dengan asumsi bahwa hash paralel bergabung digunakan, kendala penjadwalan Operator adalah antara membangun asosiasi dan penyelidikan operator:Build1 < Probe1 Build2 < Probe3 Build3 < Probe2Ada juga penjadwalan heuristik antara operator rantai pipa yang berbeda yang mengikuti dari kendala penjadwalan:Heuristic1: Build1 < Scan2, Build3 < Scan4, Build2 < Scan3 Heuristic2: Build2 < Scan3Dengan asumsi tiga SM-node i, j dan k dengan R1 disimpan pada node i, R2 dan R3 pada node j dan R4 pada node k, kita dapat memiliki rumah Operator berikut:home (Scan1) = ihome (Build1, Probe1, Scan2, Scan3) = jhome (Scan4) = Node Chome (Build2, Build3, Probe2, Probe3) = j and k

Mengingat seperti pohon operator, masalahnya adalah untuk menghasilkan eksekusi pada arsitektur hybrid yang meminimalkan waktu respon . Hal ini dapat dilakukan dengan menggunakan mekanisme load balancing dinamis pada dua tingkatan : ( i ) dalam SM - node, load balancing dicapai melalui komunikasi interprocess cepat, ( ii ) antara SM - node , lebih mahal komunikasi message-passing diperlukan . Dengan demikian , masalahnya adalah untuk datang dengan model eksekusi sehingga penggunaan load balancing lokal dimaksimalkan sedangkan penggunaan beban balancing global (melalui message passing ) diminimalkan .Kami menyebutnya aktivasi unit terkecil dari pemrosesan sekuensial yang tidak bisa dipartisi lebih lanjut . Properti utama dari model DP adalah untuk memungkinkan setiap prosesor untuk memproses aktivasi apapun dari SM -node . Dengan demikian , tidak ada hubungan statis antara benang dan operator . Ini menghasilkan beban yang baik balancing untuk kedua intra - operator dan antar operator paralelisme dalam SM - node, dan dengan demikian mengurangi ke minimum kebutuhan untuk load balancing global, yakni ketika tidak ada pekerjaan lagi yang harus dilakukan di SM -node .DP Model eksekusi didasarkan pada beberapa konsep : aktivasi , antrian aktivasi , dan benang .

Aktivasi .Aktivasi merupakan unit kerja berurutan . Karena aktivasi apapun dapat dieksekusi oleh setiap thread (dengan prosesor ada) , aktivasi harus mandiri dan referensi semua informasi yang diperlukan untuk eksekusi mereka : kode untuk mengeksekusi dan data untuk diproses. Dua jenis aktivasi dapat dibedakan : aktivasi memicu aktivasi dan data. Sebuah pemicu aktivasi digunakan untuk memulai eksekusi dari operator daun , yaitu , scan . Hal ini diwakili oleh (Operator , Bucket ) pasangan yang referensi operator memindai dan ember hubungan dasar untuk memindai . Sebuah aktivasi data yang menggambarkan tuple yang dihasilkan dalam mode pipa . Hal ini diwakili oleh (Operator , Tupel , Bucket ) tiga yang merujuk operator untuk memproses . Untuk operator membangun , aktivasi data yang menetapkan bahwa tupel harus dimasukkan dalam tabel hash ember dan untuk operator penyelidikan , bahwa tuple harus diperiksa dengan tabel hash ember itu . Meskipun aktivasi mandiri , mereka hanya dapat dijalankan pada SM -node di mana data yang terkait ( tabel hash atau relasi dasar )

Antrian aktivasi .Pindah aktivasi data sepanjang rantai pipa dilakukan dengan menggunakan antrian aktivasi , juga disebut antrian table [ Pirahesh et al . , 1990] , terkait dengan operator . Jika produsen dan konsumen dari sebuah aktivasi yang sama SM - node, maka langkah ini dilakukan melalui shared- memory . Jika tidak , itu memerlukan message-passing . Untuk menyatukan model eksekusi , antrian digunakan untuk memicu aktivasi ( masukan bagi operator scan) serta aktivasi tuple ( masukan untuk membangun atau penyelidikan operator ) . Semua benang telah tidak dibatasi akses ke semua antrian yang terletak di mereka SM -node . Mengelola sejumlah kecil antrian ( misalnya , satu untuk masing-masing operator ) dapat menghasilkan interferensi . Untuk mengurangi gangguan , satu antrian dikaitkan dengan setiap thread bekerja pada sebuah operator. Perhatikan bahwa jumlah yang lebih tinggi dari antrian kemungkinan akan diperdagangkan gangguan untuk manajemen antrian overhead. Untuk lebih mengurangi gangguan tanpa meningkatkan jumlah antrian , setiap thread diberikan akses prioritas untuk satu set yang berbeda dari antrian , yang disebut antrian utama . Dengan demikian , benang selalu mencoba untuk pertama mengkonsumsi aktivasi dalam antrian utama . Selama eksekusi , kendala penjadwalan Operator dapat diartikan bahwa operator harus diblokir sampai akhir beberapa operator lain ( operator blocking ) . Oleh karena itu , antrian untuk operator diblokir juga diblokir , yaitu aktivasi yang tidak bisa dikonsumsi tetapi mereka masih bisa diproduksi jika operator produksi tidak diblokir . Ketika semua operator yang memblokir mengakhiri , antrian diblokir menjadi konsumsi , yaitu , benang dapat mengkonsumsi aktivasi nya . Hal ini diilustrasikan pada Gambar 14.20 dengan snapshot eksekusi untuk pohon operator Gambar 14.19 .

Threads. Sebuah strategi sederhana untuk mendapatkan beban yang baik balancing di dalam SM-node untuk mengalokasikan sejumlah benang yang jauh lebih tinggi daripada jumlah prosesor dan biarkan sistem operasi melakukan penjadwalan thread. Namun, strategi ini menimbulkan tingginya jumlah panggilan sistem karena benang penjadwalan, gangguan, dan masalah konvoi [Pira-Hesh et al, 1990;. Hong, 1992]. Daripada mengandalkan sistem operasi untuk load balancing, adalah mungkin untuk mengalokasikan hanya satu thread per prosesor per query. Hal ini dimungkinkan oleh fakta bahwa setiap thread dapat menjalankan semua operator ditugaskan untuk nya SM-simpul. Keuntungan dari strategi alokasi satu-benang-per-prosesor ini adalah untuk secara signifikan mengurangi overhead gangguan dan sinkronisasi, asalkan benang tidak pernah diblokir.Load balancing dalam SM -node diperoleh dengan mengalokasikan semua antrian aktivasi di segmen shared - memori dan dengan membiarkan semua thread mengkonsumsi aktivasi dalam antrian apapun. Untuk membatasi gangguan benang , benang akan mengkonsumsi sebanyak mungkin dari set antrian utama sebelum mempertimbangkan antrian lain dari SM -node . Oleh karena itu , benang menjadi siaga hanya ketika ada aktivasi tidak lebih dari operator manapun , yang berarti bahwa tidak ada pekerjaan lagi yang harus dilakukan pada perusahaan SM -node yang kelaparan .Ketika SM - simpul kelaparan , kita dapat menerapkan berbagi beban dengan yang lain SM -node dengan mengakuisisi beberapa beban kerja [ Shatdal dan Naughton , 1993 ] . Namun, memperoleh aktivasi (melalui message-passing ) menimbulkan biaya overhead komunikasi . Selain itu , akuisisi aktivasi tidak cukup karena data yang terkait , yaitu , tabel hash , juga harus diperoleh . Jadi, kita perlu suatu mekanisme yang secara dinamis dapat memperkirakan manfaat memperoleh aktivasi dan data.Mari kita sebut " transactioner , " yang memperoleh pekerjaan , SM - node dan " provider , " yang akan off -load dengan memberikan pekerjaan kepada transactioner , SM -node . Masalahnya adalah untuk memilih antrian untuk memperoleh aktivasi dan memutuskan berapa banyak pekerjaan untuk memperoleh . Ini adalah masalah optimasi dinamis karena ada trade - off antara keuntungan potensial off -loading penyedia dan overhead memperoleh aktifasi tions dan data. Ini trade- off dapat dinyatakan dengan ketentuan sebagai berikut: ( i ) transactioner harus mampu untuk menyimpan dalam memori aktivasi dan data yang sesuai , ( ii ) pekerjaan yang cukup harus diperoleh untuk amortisasi overhead akuisisi; ( iii ) memperoleh terlalu banyak pekerjaan yang harus dihindari , ( iv ) hanya Probe aktivasi dapat diperoleh sejak aktiva