You are on page 1of 73

Chapt.

14
Sistem 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, shareddisk, shared-apa-apa dan hibrida arsitektur.

14.1.1 Tujuan
Pemrosesan 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 sharedmemory 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 Diskusi Mari 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 data Pada bagian ini , kita asumsikan arsitektur shared- apa-apa karena itu adalah kasus yang paling umum dan teknik pelaksanaannya juga berlaku , kadangkadang 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 satusatunya 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 roundrobin 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 Paralelisme Intra - 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 Data Data 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 pseudobersamaan 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 actionA


menunjukkan 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 dari hubungan 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 memiliki

CPRO(PNL) = n CLOC(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 antaroperator 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 Ruang Rencana 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, kadangkadang 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 (masingmasing 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 Paralel Masalah 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 Balancing Untuk 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 Balancing Intra - 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 < Probe2 Ada juga penjadwalan heuristik antara operator rantai pipa yang berbeda yang mengikuti dari kendala penjadwalan: Heuristic1: Build1 < Scan2, Build3 < Scan4, Build2 < Scan3 Heuristic2: Build2 < Scan3 Dengan 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) = i home (Build1, Probe1, Scan2, Scan3) = j home (Scan4) = Node C home (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 messagepassing 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 satubenang-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 aktivasi dipicu membutuhkan akses disk dan bangunan aktivasi memerlukan tabel hash bangunan lokal , ( v ) tidak ada keuntungan dalam memindahkan aktivasi dikaitkan dengan diciptakan dengan operator yang bisa diblokir tidak akan diproses pula . Akhirnya , untuk menghormati keputusan optimizer , sebuah SM -node tidak bisa mengeksekusi aktivasi dari operator yang tidak memiliki , yaitu SM - node tidak di rumah operator. Jumlah load balancing tergantung pada jumlah operator yang Setuju rently dieksekusi , yang memberikan peluang untuk menemukan beberapa pekerjaan untuk berbagi dalam hal waktu idle . Peningkatan jumlah operator bersamaan dapat dilakukan dengan memungkinkan eksekusi bersamaan beberapa rantai pipa atau dengan menggunakan non-blocking hash -join algoritma , yang memungkinkan eksekusi konkuren dari semua operator pohon lebat [ Wilshut et al

. , 1995 ] . Di sisi lain , melaksanakan lebih operator secara bersamaan dapat meningkatkan konsumsi memori . Static Operator penjadwalan seperti yang disediakan oleh optimizer harus menghindari overflow memori dan memecahkan tradeoff ini . Evaluasi kinerja DP dengan 72 - prosesor diatur sebagai sekelompok SM node telah menunjukkan bahwa DP melakukan serta model khusus dalam shared memory dan dapat meningkatkan sangat baik [ Bouganim et al . , 1996c ] . 14,5 Cluster database Cluster server PC adalah bentuk lain dari komputer paralel yang menyediakan alternatif biaya - efektif untuk superkomputer atau multiprocessors erat-coupled . Misalnya , mereka telah berhasil digunakan dalam pengambilan komputasi ilmiah , informasi web ( misalnya , mesin pencari Google ) dan data warehousing . Namun, appli - kation biasanya membaca intensif , yang membuatnya lebih mudah untuk mengeksploitasi paralelisme . Dalam rangka mendukung update- intensif aplikasi yang khas dari pengolahan data bisnis , kemampuan database paralel penuh , termasuk dukungan transaksi , harus disediakan . Hal ini dapat dicapai dengan menggunakan DBMS paralel dilaksanakan selama cluster . Dalam hal ini , semua node cluster yang homogen , di bawah kontrol penuh dari DBMS paralel . Solusi DBMS paralel mungkin tidak layak untuk beberapa bisnis seperti Application Service Provider ( ASP ) . Dalam model ASP , aplikasi pelanggan dan database ( termasuk data dan DBMS ) yang diselenggarakan di situs penyedia dan harus tersedia , biasanya melalui internet , seefisien olah mereka lokal ke lokasi pelanggan . Persyaratan utama adalah bahwa aplikasi dan database tetap otonom , yaitu , tetap tidak berubah ketika pindah ke cluster situs penyedia dan di bawah kendali pelanggan . Dengan demikian , melestarikan otonomi sangat penting untuk menghindari biaya tinggi dan masalah yang terkait dengan kode aplikasi modifikasi . Menggunakan DBMS paralel dalam hal ini tidak tepat karena mahal , memerlukan migrasi berat untuk DBMS paralel dan sakit otonomi basis data .

Sebuah solusi adalah dengan menggunakan cluster database, yang merupakan sekelompok database otonom , masing-masing dikelola oleh off - theshelf DBMS [ Ro HM et al . , 2000, 2001 ] . Sebuah dif -konferensi utama dengan DBMS paralel diimplementasikan pada cluster adalah penggunaan " kotak hitam " DBMS pada setiap node . Karena kode sumber DBMS tidak selalu tersedia dan tidak dapat diubah menjadi " cluster-aware " , paralel kemampuan manajemen data harus dilaksanakan melalui middleware . Dalam bentuk yang paling sederhana , cluster database dapat dilihat sebagai sistem multidatabase pada sebuah cluster . Namun, banyak penelitian telah dikhususkan untuk mengambil keuntungan penuh dari lingkungan cluster ( dengan cepat, handal com munication ) dalam rangka meningkatkan kinerja dan ketersediaan dengan memanfaatkan replikasi data. Hasil utama dari penelitian ini adalah teknik-teknik baru untuk replikasi , load balancing , pemrosesan query , dan toleransi kesalahan . Pada bagian ini , kami menyajikan teknik ini setelah memperkenalkan arsitektur database cluster . 14.5.1 database Cluster Arsitektur Sebagaimana dibahas dalam Bagian 14.1.3.4 , cluster dapat memiliki shared- disk atau shared -nothing arsitektur . Shared-disk memerlukan interkoneksi khusus yang menyediakan ruang disk bersama untuk semua node dengan ketentuan untuk konsistensi persediaan . Bersama - tidak ada yang bisa lebih baik basis otonomi dukungan tanpa biaya tambahan interkoneksi khusus dan dapat meningkatkan untuk konfigurasi yang sangat besar . Hal ini menjelaskan mengapa sebagian besar bekerja di cluster database telah diasumsikan arsitektur shared- apa-apa . Namun, teknik yang dirancang untuk shared -tidak dapat diterapkan , mungkin dengan cara yang sederhana , untuk bersama - disk. Gambar 14.21 mengilustrasikan cluster database dengan arsitektur sharedapa-apa . Manajemen data paralel dilakukan dengan DBMS independen diatur oleh pertengahan dleware direplikasi di setiap node . Untuk meningkatkan kinerja dan ketersediaan , data dapat direplikasi di node yang berbeda menggunakan DBMS lokal . Aplikasi client ( misalnya , di server aplikasi ) berinteraksi dengan middleware dengan cara klasik untuk mengirimkan database transaksi , yaitu ,

query ad-hoc , transaksi , atau panggilan ke prosedur yang tersimpan . Beberapa node dapat khusus sebagai node akses untuk menerima transaksi , dalam hal ini mereka berbagi layanan direktori global yang menangkap informasi tentang pengguna dan database . Pengolahan umum transaksi ke database tunggal adalah sebagai berikut . Pertama , transaksi tersebut otentikasi dan otorisasi menggunakan direktori . Jika berhasil , transaksi tersebut dialihkan ke DBMS di beberapa , mungkin berbeda , simpul akan dieksekusi . Kita akan melihat dalam Bagian 14.5.4 bagaimana model sederhana ini dapat diperpanjang untuk menangani pemrosesan query paralel , dengan menggunakan beberapa node untuk memproses query tunggal . Seperti dalam DBMS paralel , cluster middleware database memiliki beberapa lapisan software : beban transaksi penyeimbang , manajer replikasi , prosesor permintaan dan manajer toleransi kesalahan . Beban transaksi penyeimbang memicu eksekusi transaksi pada node terbaik, dengan menggunakan informasi yang diperoleh dari beban probe simpul . "Terbaik " node didefinisikan sebagai satu dengan beban transaksi ringan . Transaksi load balancer juga memastikan bahwa setiap pelaksanaan transaksi mematuhi sifat ACID , dan kemudian sinyal ke DBMS untuk melakukan atau membatalkan transaksi . Manajer replikasi mengelola akses ke data direplikasi dan menjamin konsistensi yang kuat dalam sedemikian rupa sehingga transaksi yang direplikasi pembaruan data yang dijalankan dalam urutan serial yang sama di setiap node . Query processor mengeksploitasi baik inter - dan intra - permintaan paralelisme . Dengan antar - permintaan paralelisme , rute query processor masing-masing disampaikan query untuk satu simpul dan , setelah permintaan selesai , mengirimkan hasil ke aplikasi client . Intra - permintaan paralelisme lebih terlibat . Sebagai DBMSs black-box tidak cluster-aware , mereka tidak dapat berinteraksi satu sama lain untuk memproses permintaan yang sama . Kemudian , terserah kepada query processor untuk mengontrol eksekusi query , komposisi hasil akhir dan load balancing . Akhirnya , manajer kesalahan - toleransi menyediakan pemulihan online dan failover .

14.5.2 Replikasi Seperti dalam DBMS terdistribusi , replikasi dapat digunakan untuk meningkatkan kinerja dan ketersediaan . Dalam cluster database, cepat interkoneksi dan sistem komunikasi dapat dimanfaatkan untuk mendukung satu copy serializability sambil memberikan skalabilitas ( untuk mencapai kinerja dengan sejumlah besar node ) dan otonomi ( untuk mengeksploitasi black-box DBMS ) . Tidak seperti sistem terdistribusi , cluster menyediakan lingkungan yang stabil dengan sedikit evolusi dari topologi ( misalnya , sebagai akibat dari node ditambahkan atau kegagalan link komunikasi ) . Dengan demikian , lebih mudah untuk mendukung sistem komunikasi kelompok [ Chockler et al . , 2001 ] yang mengelola komunikasi yang handal antara kelompok node . Primitif komunikasi kelompok dapat digunakan dengan teknik replikasi baik bersemangat atau malas sebagai sarana untuk mencapai penyebaran atom informasi (yaitu , bukan 2PC mahal ) . Protokol Nodo ( lihat Bab 13 ) adalah wakil dari protokol bersemangat yang dapat digunakan dalam database cluster . Kami hadir sekarang protokol lain untuk replikasi yang malas dan menyediakan dukungan untuk satu copy serializability dan skalabilitas . Protokol replikasi pencegahan . Replikasi pencegahan adalah protokol malas untuk replikasi didistribusikan malas dalam cluster database [ Pacitti et al , 2003; . . Coulon et al , 2005 ; . Pacitti et al , 2006 ] . Hal ini juga mempertahankan otonomi DBMS . Alih-alih menggunakan jumlah memerintahkan multicast , seperti dalam protokol

bersemangat seperti Nodo , menggunakan FIFO multicast handal yang lebih sederhana dan lebih efisien . Prinsipnya adalah sebagai berikut. Setiap transaksi T yang masuk ke sistem memiliki ts timestamp kronologis ( T ) = C , dan multicast untuk semua node lain di mana ada salinan . Pada setiap node , penundaan waktu diperkenalkan sebelum memulai pelaksanaan T . Penundaan ini sesuai dengan batas atas waktu yang dibutuhkan untuk multicast pesan ( sistem sinkron dengan perhitungan dibatasi dan waktu transmisi diasumsikan ) . Isu penting adalah perhitungan akurat dari batas atas untuk pesan (yaitu , delay ) . Dalam sistem cluster, batas atas dapat dihitung cukup akurat . Ketika penundaan berakhir , semua transaksi yang mungkin dilakukan sebelum C dijamin akan diterima dan dieksekusi sebelum T , mengikuti urutan timestamp (yaitu , total order ) . Oleh karena itu , pendekatan ini mencegah konflik dan memberlakukan konsistensi yang kuat dalam kelompok basis data . Memperkenalkan delay waktu juga telah dimanfaatkan dalam beberapa protokol replikasi terpusat malas untuk sistem terdistribusi [ Pacitti et al , 1999; . Pacitti dan Simon , 2000; . Pacitti et al , 2006 ]. Kami menyajikan algoritma penyegaran dasar untuk memperbarui salinan , dengan asumsi replikasi penuh , untuk kesederhanaan . Sistem komunikasi diasumsikan untuk memberikan FIFO multicast [ Pacitti et al . , 2003 ] . Max adalah batas atas dari waktu yang dibutuhkan untuk multicast pesan dari node i ke node j lainnya . Sangat penting untuk memiliki nilai Max yang tidak lebih dari perkiraan . Perhitungan Max resort untuk teori penjadwalan [ Pinedo 2001 ] dan mempertimbangkan beberapa parameter seperti jaringan global yang handal itu sendiri , karakteristik pesan untuk multicast dan kegagalan untuk ditoleransi . Setiap node memiliki jam lokal . Untuk keadilan , jam diasumsikan memiliki drift dan menjadi - disinkronisasi , yaitu , perbedaan antara dua jam yang benar adalah tidak lebih tinggi bahwa ( dikenal sebagai presisi ) . Inkonsistensi mungkin timbul setiap kali perintah serial dua transaksi pada dua node tidak sama. Oleh karena itu , mereka harus dijalankan dalam urutan serial yang sama pada setiap dua node . Dengan demikian , FIFO pemesanan global tidak cukup untuk menjamin kebenaran algoritma penyegaran . Setiap transaksi dikaitkan dengan nilai timestamp C. kronologis Prinsip algoritma penyegaran preventif adalah untuk mengirimkan urutan transaksi dalam urutan kronologis yang sama di setiap

node . Sebelum mengirimkan transaksi pada node i , cek apakah ada transaksi yang lebih tua dalam perjalanan ke node i . Untuk mencapai hal ini , waktu pengajuan transaksi baru pada node i tertunda oleh Max + . Jadi saat awal transaksi diajukan adalah C + + Max ( selanjutnya disebut waktu pengiriman ) . Setiap kali transaksi Ti yang akan dipicu pada beberapa node i , node i multicast Ti ke semua node 1,2 , ... , n , termasuk dirinya sendiri . Setelah Ti diterima di beberapa j node yang lain ( saya mungkin sama dengan j ) , ia ditempatkan dalam antrian tertunda di urutan FIFO sehubungan dengan memicu simpul i . Oleh karena itu , pada setiap node i , ada satu set antrian , q1 , q2 , ... , qn , disebut tertunda antrian , yang masing-masing sesuai dengan node dan digunakan oleh algoritma penyegaran untuk melakukan pemesanan kronologis sehubungan dengan waktu pengiriman . Gambar 14.22 menunjukkan bagian dari komponen yang diperlukan untuk menjalankan algoritma . The Penyegaran membaca transaksi dari puncak tertunda antrian dan melakukan pemesanan kronologis sehubungan dengan waktu pengiriman . Setelah transaksi diperintahkan , maka penyegaran menulis ke antrian berjalan dalam rangka FIFO , satu demi satu . Akhirnya Pembebas terus memeriksa bagian atas antrian berjalan untuk memulai eksekusi transaksi , satu demi satu , dalam DBMS lokal .

Contoh 14.7. Mari kita menggambarkan algoritma. Misalkan kita memiliki dua node i dan j, tuan dari R. copy Jadi pada node i, ada dua antrian tertunda: qi dan qj yang sesuai untuk menguasai node i dan j. T1 dan T2 adalah dua transaksi yang pembaruan R pada node i dan j, masing-masing. Mari kita anggap bahwa Max 10 dan = 1 =. Jadi, pada node i, kami memiliki urutan berikut eksekusi: Pada saat 10: T2 tiba dengan ts timestamp (T2) = 5. Jadi qi = [T2 (5)], q (j) = [] dan T2 dipilih oleh Penyegaran menjadi transaksi berikutnya untuk tampil

di waktu pengiriman 16 (= 5 + 10 + 1), dan waktu diatur ke berakhir pada saat 16. Pada saat 12: T1 tiba dari node j dengan ts timestamp (T1) = 3, maka qi = [T2 (5)], qj = [T1 (3)]. T1 dipilih oleh Penyegaran menjadi transaksi berikutnya untuk tampil di waktu pengiriman 14 (= 3 + 10 + 1), dan waktu tersebut kembali ditetapkan untuk berakhir pada saat 14. Pada saat 14: batas waktu berakhir dan Penyegaran menulis T1 ke queue.Thus +. 1). Pada saat 16: batas waktu berakhir. The Penyegaran menulis T2 ke dalam antrian berjalan. Jadi qi = [], q (j) = []. Meskipun transaksi diterima dalam urutan yang salah sehubungan dengan cap mereka (T2 maka T1), mereka ditulis ke dalam antrian berjalan dalam urutan kronologis menurut cap mereka (T1 maka T2). Dengan demikian, total order diberlakukan bahkan jika pesan tidak dikirim dalam total order. The original protokol replikasi preventif memiliki dua keterbatasan . Pertama , diasumsikan bahwa database sepenuhnya direplikasi di semua node cluster dan dengan demikian menyebarkan setiap transaksi untuk setiap node cluster . Hal ini membuat algoritma tidak cocok untuk mendukung database yang sangat besar . Kedua, ia memiliki keterbatasan kinerja sejak transaksi dilakukan satu demi satu , dan harus bertahan menunggu penundaan sebelum memulai . Dengan demikian , penyegaran adalah hambatan potensial , khususnya, dalam hal beban kerja bursty di mana tingkat kedatangan transaksi yang tinggi di kali. Keterbatasan pertama dapat diatasi dengan memberikan dukungan untuk replikasi parsial [ Coulon et al . , 2005]. Dengan replikasi parsial , beberapa node sasaran mungkin tidak dapat melakukan transaksi T karena mereka tidak memegang semua salinan yang diperlukan untuk melakukan membaca set T . Namun menulis set T , yang sesuai dengan transaksi yang menyegarkan , harus dipesan dengan menggunakan T ' s nilai timestamp untuk memastikan konsistensi berjalan, qi = [T2 (5)], q (j) = [] T2 isselectedtobethenexttransactionto tampil di waktu pengiriman 16 (= 5 + 10

. Jadi T dijadwalkan seperti biasa tapi tidak disampaikan untuk eksekusi . Sebaliknya , node sasaran terlibat menunggu penerimaan menulis sesuai set . Kemudian , pada asal node i , ketika komitmen T terdeteksi , menulis yang sesuai set diproduksi dan node i multicast ke arah node sasaran . Setelah penerimaan menulis set pada target node j , isi T ( masih menunggu ) diganti dengan isi yang masuk menulis set dan T dapat dieksekusi . Keterbatasan kedua ditangani oleh algoritma penyegaran yang (berpotensi ) menghilangkan waktu delay [ Pacitti et al . , 2006 ] . Dalam cluster ( yang biasanya cepat dan handal ) , pesan sering alami kronologis memerintahkan [ Pedone dan Schiper , 1998] . Hanya beberapa pesan dapat diterima dalam urutan yang berbeda dari urutan pengiriman . Berdasarkan properti ini , algoritma dapat ditingkatkan dengan mengirimkan transaksi untuk eksekusi segera setelah diterima , sehingga menghindari penundaan sebelum mengirimkan transaksi . Untuk menjamin konsistensi yang kuat , urutan melakukan transaksi dijadwalkan sedemikian rupa sehingga transaksi dapat dilakukan hanya setelah Max + . Ketika transaksi T diterima out-of -order , semua transaksi yang lebih muda harus dibatalkan dan re - disampaikan sesuai dengan urutan timestamp yang benar sehubungan dengan T . Oleh karena itu , semua transaksi yang dilakukan dalam rangka timestamp mereka . Untuk meningkatkan waktu respon beban kerja bursty , transaksi dapat dipicu secara bersamaan . Menggunakan properti isolasi DBMS yang mendasari , setiap node dapat menjamin bahwa setiap transaksi melihat database yang konsisten setiap saat . Untuk menjaga konsistensi kuat di semua node , transaksi berkomitmen dalam urutan yang sama di mana mereka disampaikan dan ditulis ke antrian berjalan . Dengan demikian , total order selalu ditegakkan . Namun, tanpa akses ke controller DBMS concurrency ( untuk alasan otonomi ) , seseorang tidak dapat menjamin bahwa dua transaksi konkuren yang saling bertentangan mendapatkan kunci dalam urutan yang sama pada dua node yang berbeda . Oleh karena itu , transaksi yang saling bertentangan tidak dipicu bersamaan . Mendeteksi bahwa dua transaksi yang bertentangan memerlukan analisis kode sebagai untuk menentukan kelas konflik di protokol NoDo . Validasi protokol replikasi pencegahan menggunakan eksperimen dengan benchmark TPC

- C atas sekelompok 64 node menjalankan PostgreSQL DBMS telah menunjukkan baik skala - up dan kecepatan -up [ Pacitti et al . , 2006 ] . 14.5.3 Load Balancing Dalam cluster database replikasi menawarkan peluang load balancing yang baik . Dengan replikasi bersemangat atau preventif , beban permintaan balancing mudah untuk dicapai. Karena semua salinan yang saling konsisten , setiap node yang menyimpan salinan data ditransaksikan , misalnya , node paling tidak dimuat , dapat dipilih pada saat run -time dengan strategi load balancing konvensional . Beban transaksi balancing juga mudah dalam hal replikasi didistribusikan malas karena semua node induk perlu akhirnya melakukan transaksi . Namun, total biaya eksekusi transaksi pada semua node mungkin tinggi . Dengan santai konsistensi , replikasi malas yang lebih baik dapat mengurangi biaya transaksi eksekusi dan dengan demikian meningkatkan kinerja kedua query dan transaksi . Jadi , tergantung pada persyaratan konsistensi / kinerja , replikasi bersemangat dan malas keduanya berguna dalam cluster basis data . Model konsistensi santai telah diusulkan untuk mengendalikan replika perbedaan berdasarkan kebutuhan pengguna . Kebutuhan pengguna pada konsistensi yang diinginkan dapat dinyatakan baik oleh programmer , misalnya , dalam pernyataan uo et al . , atau administrator database , anc arski et al . , . alam misalnya , menggunakan aturan akses

kebanyakan pendekatan , konsistensi mengurangi kesegaran ke : transaksi pembaruan secara global serial lebih node cluster yang berbeda , sehingga setiap kali permintaan dikirim ke node yang diberikan , ia membaca keadaan yang konsisten dari database . Konsistensi global dicapai dengan memastikan bahwa transaksi yang bertentangan dijalankan pada setiap node dalam urutan yang relatif sama . Namun, keadaan yang konsisten mungkin bukan yang terbaru , karena transaksi dapat berjalan pada node lain . Kesegaran data node mencerminkan perbedaan antara negara database dari node dan negara itu akan ada jika semua transaksi berjalan sudah diterapkan pada simpul tersebut . Namun, kesegaran tidak mudah untuk menentukan , khususnya untuk negara-negara database yang sempurna segar . Dengan demikian , konsep kebalikan dari staleness , sering

digunakan karena selalu didefinisikan ( misalnya , sama dengan 0 untuk negara database yang sempurna segar ) . The staleness dari salinan relasi kemudian dapat ditangkap oleh jumlah perubahan yang telah dilakukan terhadap salinan lain , yang diukur dengan jumlah tupel diperbarui [ Pape et al . , 2004 ] . Contoh 14.8. Mari kita menggambarkan bagaimana replikasi didistribusikan malas dapat memperkenalkan basi-ness, dan dampaknya terhadap jawaban query. Pertimbangkan hal berikut permintaan Q:
SELECT FROM WHERE PNO ASG SUM(DUR) > 200

GROUP BY PNO

Mari kita berasumsi bahwa hubungan ASG direplikasi di node i dan j , kedua salinan dengan staleness dari 0 pada waktu t0 . Asumsikan bahwa , untuk kelompok tuple mana PNO = " P1 " , kita memiliki SUM ( DUR ) = 180 . Pertimbangkan bahwa , pada t0 +1 , node i , masing-masing node j , melakukan transaksi yang menyisipkan tuple untuk PNO = " P1 " dengan DUR = 12 , masing-masing DUR = 18 . Dengan demikian, staleness kedua i dan j adalah 1 . Sekarang, pada t0 +2 , melaksanakan Q baik di i atau j tidak akan mengambil " P1 " karena untuk kelompok tuple mana PNO = " P1 " , kita memiliki SUM ( DUR ) = 192 di i dan j di 198 . Alasannya adalah bahwa dua salinan , meskipun konsisten , yang basi . Namun, setelah rekonsiliasi , misalnya , pada t0 +3 , kita memiliki SUM ( DUR ) = 210 pada kedua node dan melaksanakan Q akan mengambil " P1 " . Dengan demikian , akurasi Q jawaban tergantung pada seberapa banyak basi copy node adalah . Dengan santai kesegaran , load balancing lebih kompleks karena biaya rekonsiliasi copy untuk menegakkan persyaratan kesegaran yang ditetapkan pengguna harus dipertimbangkan ketika routing transaksi dan pertanyaan ke node cluster . Ro HM et al . [ 2002b ] mengusulkan solusi sederhana untuk kesegaran aware permintaan routing dalam cluster basis data . Menggunakan teknik replikasi tunggal -master ( yaitu , transaksi selalu diteruskan ke node master ) , pertanyaan

yang diarahkan ke node paling tidak dimuat yang cukup segar . Jika tidak ada simpul yang cukup segar , query hanya menunggu . anc arski et al . mengusulkan solusi yang lebih umum untuk kesegaran - sadar kekalahan - ing . Ia bekerja dengan replikasi didistribusikan malas yang menghasilkan peluang tertinggi untuk beban transaksi balancing . Kami meringkas solusi ini . Sebuah router transaksi menghasilkan untuk setiap transaksi yang masuk atau query rencana eksekusi berdasarkan kebutuhan pengguna kesegaran yang diperoleh dari direktori bersama . Kemudian , memicu eksekusi pada node terbaik, dengan menggunakan informasi run-time pada beban node ' . Bila perlu , itu juga memicu transaksi penyegaran dalam rangka untuk membuat beberapa node segar untuk melaksanakan transaksi atau pertanyaan berikutnya . Router transaksi memperhitungkan persyaratan kesegaran query pada tingkat hubungan untuk meningkatkan load balancing . Menggunakan fungsi biaya yang memperhitungkan tidak hanya beban klaster dalam hal transaksi konkuren dan permintaan , tetapi juga perkiraan waktu untuk menyegarkan replika ke tingkat yang dibutuhkan oleh permintaan yang masuk . Router transaksi menggunakan dua strategi routing yang berbasis biaya , masing-masing cocok dengan kebutuhan aplikasi yang berbeda . Strategi pertama , yang disebut hanya ( CB ) berbasis biaya , tidak membuat asumsi tentang beban kerja dan menilai biaya sinkronisasi untuk menghormati staleness diterima oleh permintaan dan transaksi . CB hanya mengevaluasi , untuk setiap node , biaya menyegarkan node ( jika perlu ) untuk memenuhi persyaratan kesegaran serta biaya melaksanakan transaksi itu sendiri . Kemudian memilih node yang meminimalkan biaya . Strategi kedua nikmat transaksi update untuk menangani beban kerja OLTP . Ini adalah varian dari CB dengan waktu respon dibatasi ( BRT ) yang secara dinamis memberikan node untuk proses transaksi dan node untuk pemrosesan query. Menggunakan parameter , T max , yang merupakan pengguna waktu respon maksimum dapat menerima pembaruan untuk transaksi . Ini mendedikasikan banyak node cluster yang diperlukan untuk memastikan bahwa update dijalankan dalam waktu kurang dari T max , dan menggunakan node yang tersisa untuk permintaan pengolahan . Validasi dari pendekatan ini , menggunakan

implementasi dan emulasi hingga 1 2007 ] .

node dengan benchmark

C - C ,

menunjukkan bahwa skala yang baik sampai dapat diperoleh

anc arski et al . ,

Pendekatan-pendekatan lain telah diusulkan untuk load balancing dalam kelompok basis data . Pendekatan dalam [ Mila n - Franco et al . , 2004 ] menyesuaikan dengan perubahan beban disampaikan kepada replika yang berbeda dan jenis beban kerja . Ini menggabungkan load-balancing dengan penyesuaian umpan balik berbasis jumlah transaksi konkuren . Pendekatan ini terbukti memberikan throughput yang tinggi , skalabilitas yang baik , dan waktu respon yang rendah untuk mengubah beban dan beban kerja dengan sedikit overhead. 14.5.4 Query Processing Dalam cluster database, proses query paralel dapat berhasil digunakan untuk menghasilkan kinerja tinggi . Inter- query ( atau antar - transaksi ) paralelisme secara alami diperoleh sebagai hasil dari load balancing dan replikasi seperti yang dibahas di bagian sebelumnya . Paralelisme seperti ini terutama berguna untuk meningkatkan thoughput aplikasi berorientasi transaksi dan , sampai batas tertentu , untuk mengurangi waktu respon transaksi dan permintaan . Untuk aplikasi OLAP yang biasanya menggunakan query ad-hoc , yang mengakses sejumlah besar data , intra - permintaan paralelisme sangat penting untuk mengurangi waktu respon . Intra - permintaan paralelisme terdiri dari pengolahan permintaan yang sama pada partisi yang berbeda dari hubungan yang terlibat dalam query . Ada dua solusi alternatif untuk mempartisi hubungan dalam database cluster : fisik dan virtual. Partisi fisik mendefinisikan partisi relasi , pada dasarnya sebagai fragmen horisontal , dan mengalokasikan mereka untuk cluster node , mungkin dengan replika - tion . Ini ressembles fragmentasi dan desain alokasi dalam database terdistribusi ( lihat Bab 3 ) kecuali bahwa tujuannya adalah untuk meningkatkan intra - permintaan paralelisme , bukan lokalitas referensi . Jadi , tergantung pada permintaan dan hubungan ukuran , tingkat partisi harus jauh lebih halus . Partisi fisik dalam kelompok database untuk pendukung keputusan ditujukan oleh Sto HR et al . [ 2000], menggunakan partisi biji-bijian kecil . Berdasarkan distribusi data seragam , solusi ini terbukti menghasilkan baik intra -

permintaan paralelisme dan mengungguli antar - permintaan paralelisme . Namun, partisi fisik statis dan dengan demikian sangat sensitif terhadap data kondisi miring dan variasi pola permintaan yang mungkin memerlukan partisi ulang periodik . Virtual partisi menghindari masalah partisi fisik statis menggunakan pendekatan yang dinamis dan replikasi penuh ( setiap relasi direplikasi di setiap node ) . Dalam bentuk yang paling sederhana , yang kita sebut partisi virtual yang sederhana ( SVP ) , partisi virtual secara dinamis diproduksi untuk setiap query dan intra - permintaan paralelisme diperoleh dengan mengirimkan sub - query untuk partisi virtual yang berbeda [ Akal et al . , 2002 ] . Untuk menghasilkan subqueries yang berbeda , prosesor database cluster permintaan menambahkan predikat dengan permintaan yang masuk untuk membatasi akses ke subset dari relasi , yaitu , partisi virtual. Hal ini juga dapat melakukan beberapa menulis ulang untuk menguraikan query menjadi subqueries setara diikuti dengan permintaan komposisi . Kemudian , masing-masing DBMS yang menerima sub-query dipaksa untuk memproses subset yang berbeda dari item data . Akhirnya , hasil dipartisi perlu dikombinasikan oleh permintaan agregat . Contoh 14.9. Mari kita menggambarkan SVP dengan query berikut Q:
SELECT FROM WHERE PNO, AVG(DUR) ASG SUM(DUR) > 200

GROUP BY PNO

Sebuah subquery generik pada partisi virtual diperoleh dengan menambahkan ke Q di mana klausul predikat " dan PNO > = P1 dan PNO < P2 " . Dengan mengikat [ P1 , P2 ] untuk rentang n selanjutnya nilai PNO , kita memperoleh n subqueries , masing-masing untuk node yang berbeda pada partisi virtual yang berbeda dari ASG . Dengan demikian , tingkat intra - permintaan paralelisme adalah n . Selanjutnya, " AVG ( DUR ) " operasi harus rewriten sebagai " SUM ( DUR ) , COUNT ( DUR ) " dalam subquery . Akhirnya , untuk mendapatkan hasil yang benar untuk " AVG ( DUR ) " , query komposisi harus melakukan " SUM ( DUR ) / SUM ( COUNT ( DUR ) ) " atas n hasil parsial .

Kinerja eksekusi setiap subquery sangat bergantung pada metode akses yang tersedia pada atribut partisi ( PNO ) . Dalam contoh ini , indeks berkerumun di PNO akan menjadi yang terbaik . Dengan demikian , penting untuk prosesor query untuk mengetahui metode akses yang tersedia untuk memutuskan , sesuai dengan permintaan, yang partisi atribut untuk digunakan . SVP memungkinkan fleksibilitas yang besar untuk alokasi simpul selama pemrosesan query karena setiap node dapat dipilih untuk mengeksekusi subquery . Namun, tidak semua jenis pertanyaan bisa mendapatkan keuntungan dari SVP dan diparalelkan . Akal et al . [ 2002 ] mengusulkan klasifikasi query OLAP sehingga permintaan dari kelas yang sama memiliki sifat yang sama paralelisasi . Klasifikasi ini bergantung pada bagaimana hubungan terbesar , disebut tabel fakta ( misalnya , Orders dan LineItems ) dalam aplikasi OLAP yang khas , yang diakses . Alasannya adalah bahwa seperti partisi virtual hubungan tersebut menghasilkan banyak intra - Operator paralelisme . Tiga kelas utama diidentifikasi : 1. Pertanyaan tanpa subqueries yang mengakses tabel fakta. 2. Pertanyaan dengan subquery yang setara dengan query Kelas 1. 3. Pertanyaan lainnya. Pertanyaan dari Kelas 2 perlu ditulis ulang ke dalam pertanyaan Kelas 1 agar SVP untuk menerapkan , sementara permintaan dari Kelas 3 tidak bisa mendapatkan keuntungan dari SVP . SVP memiliki beberapa keterbatasan . Pertama , menentukan atribut terbaik partisi virtual dan rentang nilai bisa sulit karena asumsi distribusi seragam nilai tidak realistis . Kedua , beberapa DBMSs melakukan scan meja penuh, bukan akses diindeks ketika mengambil tupel dari interval besar nilai . Hal ini akan mengurangi manfaat dari akses disk paralel sejak satu node kebetulan bisa membaca seluruh kaitannya dengan mengakses partisi virtual. Hal ini membuat SVP tergantung pada DBMS yang mendasari kemampuan query . Ketiga , sebagai permintaan tidak dapat diubah secara eksternal ketika sedang dieksekusi , load balancing sulit dicapai dan tergantung pada partisi awal .

Partisi maya halus alamat keterbatasan ini dengan menggunakan sejumlah besar sub - query , bukan satu per DBMS [ Lima et al . , 2004a ] . Bekerja dengan sub - query yang lebih kecil menghindari scan meja penuh dan membuat pemrosesan query kurang rentan terhadap DBMS keanehan . Namun, pendekatan ini harus memperkirakan ukuran partisi , menggunakan statistik database dan perkiraan waktu pemrosesan query. Dalam prakteknya , perkiraan ini sulit untuk mendapatkan dengan kotak hitam DBMS . Partisi maya Adaptive ( AVP ) memecahkan masalah ini dengan dinamis menyetel ukuran partisi , sehingga tanpa memerlukan perkiraan ini [ Lima et al . , 2004b ] . AVP berjalan secara independen pada setiap node cluster yang berpartisipasi , menghindari komunikasi antar -node ( untuk penentuan ukuran partisi ) . Awalnya , setiap node menerima selang nilai untuk bekerja dengan . Interval ini ditentukan persis seperti untuk SVP . Kemudian , setiap node melakukan langkah-langkah berikut : 1. Mulailah dengan ukuran partisi sangat kecil dimulai dengan nilai pertama dari interval yang diterima. 2. Mengeksekusi sub-query dengan interval ini. 3. Meningkatkan ukuran partisi dan jalankan sesuai sub-query sementara peningkatan waktu eksekusi secara proporsional lebih kecil dari peningkatan ukuran partisi. 4. Berhenti meningkat. Sebuah ukuran yang stabil telah ditemukan. 5. Jika ada penurunan kinerja, yaitu, ada berturut-turut lebih buruk eksekusi, mengurangi ukuran dan pergi ke Langkah 2. Dimulai dengan ukuran partisi yang sangat kecil menghindari scan meja penuh pada awal proses . Ini juga menghindari harus mengetahui ambang setelah DBMS tidak menggunakan indeks berkerumun dan mulai melakukan scan meja penuh . Ketika ukuran partisi meningkat, permintaan waktu eksekusi dimonitor memungkinkan penentuan titik setelah langkah-langkah pemrosesan query yaitu data ukuran independen tidak mempengaruhi terlalu banyak total waktu eksekusi query . Sebagai contoh, jika dua kali lipat ukuran partisi ini menghasilkan waktu eksekusi yang dua kali sebelumnya , ini berarti bahwa titik tersebut telah

ditemukan . Dengan demikian algoritma berhenti meningkatkan ukuran . Kinerja sistem dapat memburuk karena DBMS cache data misses atau peningkatan beban sistem secara keseluruhan . Ini mungkin terjadi bahwa ukuran yang digunakan terlalu besar dan telah mendapatkan manfaat dari sebelumnya hit cache data . Dalam hal ini , mungkin lebih baik untuk mengecilkan ukuran partisi . Justru itulah langkah 6 tidak. Ini memberikan kesempatan untuk kembali dan memeriksa ukuran partisi yang lebih kecil . Di sisi lain , jika penurunan kinerja disebabkan oleh peningkatan santai dan sementara beban sistem atau misses cache data , menjaga ukuran partisi kecil dapat mengakibatkan kinerja yang buruk . Untuk menghindari situasi seperti ini , algoritma berjalan kembali ke langkah 2 dan restart meningkatkan ukuran . AVP dan varian lain dari partisi virtual yang memiliki beberapa keunggulan : fleksibilitas untuk alokasi node, ketersediaan tinggi karena replikasi penuh , dan peluang untuk load balancing dinamis . Tapi replikasi penuh dapat menyebabkan biaya tinggi dalam penggunaan disk. Untuk mendukung replikasi parsial , solusi hybrid telah diajukan untuk menggabungkan partisi fisik dan virtual. The hybrid design by Ro HM et al . [ 2000 ] menggunakan partisi fisik untuk hubungan terbesar dan paling penting dan sepenuhnya meniru meja kecil . Dengan demikian , intra - permintaan paralelisme dapat dicapai dengan persyaratan ruang disk yang lebih rendah . Solusi hybrid karena Furtado et al . [ 2005, 2006 ] menggabungkan AVP dengan partisi fisik . Ini memecahkan masalah penggunaan disk sekaligus menjaga keuntungan dari AVP , yaitu meja penuh memindai penghindaran dan load balancing dinamis. 14.5.5 kesalahan - toleransi Pada bagian sebelumnya , telah fokus pada bagaimana mencapai konsistensi , kinerja dan skalabilitas ketika sistem tidak gagal . Pada bagian ini , kita membahas apa yang terjadi dalam munculnya kegagalan . Ada beberapa isu yang diangkat oleh kegagalan . Yang pertama adalah bagaimana menjaga konsistensi meskipun kegagalan . Kedua , untuk transaksi luar biasa , ada masalah bagaimana untuk melakukan failover . Ketiga , ketika sebuah replika gagal diperkenalkan kembali ( setelah pemulihan ) , atau replika segar diperkenalkan

dalam sistem , keadaan saat ini database harus dipulihkan . Perhatian utama adalah bagaimana mengatasi kegagalan . Untuk mulai dengan , kegagalan perlu dideteksi . Dalam komunikasi berbasis pendekatan kelompok , kegagalan deteksi disediakan oleh komunikasi kelompok yang mendasari ( biasanya didasarkan pada beberapa jenis mekanisme detak jantung ) . Perubahan Keanggotaan akan diberitahu sebagai events1 . Dengan membandingkan keanggotaan baru dengan yang sebelumnya , menjadi mungkin untuk mempelajari replika telah gagal . Komunikasi kelompok juga menjamin bahwa semua replika terhubung berbagi gagasan keanggotaan yang sama . Untuk pendekatan yang tidak didasarkan pada komunikasi kelompok kegagalan deteksi baik dapat didelegasikan ke lapisan yang mendasari komunikasi ( misalnya , TCP / IP ) , atau diimplementasikan sebagai komponen tambahan logika replikasi . Namun, beberapa protokol perjanjian diperlukan untuk memastikan bahwa semua replika terhubung berbagi gagasan keanggotaan yang sama yang replika yang operasional dan mana yang tidak . Jika tidak , inkonsistensi bisa timbul. Kegagalan juga harus terdeteksi pada sisi klien oleh klien API . Klien typi -Cally terhubung melalui TCP / IP dan dapat menduga node gagal melalui koneksi rusak . Setelah kegagalan replika , klien API harus menemukan replika baru , membangun kembali sambungan baru untuk itu , dan , dalam kasus yang paling sederhana , retransmit transaksi terakhir yang luar biasa untuk replika hanya terhubung . Karena retransmisi diperlukan , duplikat transaksi dapat disampaikan . Hal ini memerlukan deteksi transaksi duplikat dan penghapusan mekanisme - anism . Dalam kebanyakan kasus , itu sudah cukup untuk memiliki klien identifier yang unik , dan pengenal transaksi unik per klien . Yang terakhir ini bertambah untuk setiap transaksi yang diajukan baru . Dengan demikian , cluster dapat melacak apakah transaksi klien telah diproses dan jika demikian , membuangnya. Setelah kegagalan replika telah terdeteksi , beberapa tindakan harus diambil di cluster database . Tindakan ini merupakan bagian dari proses failover , yang harus mengarahkan transaksi dari node gagal simpul replika lain , dengan cara yang setransparan mungkin untuk klien . Failover sangat tergantung pada apakah atau tidak replika gagal adalah master . Jika replika non -master gagal ,

tidak ada tindakan yang perlu diambil di sisi klaster . Klien dengan transaksi luar biasa terhubung ke replika node baru dan kirim ulang transaksi terakhir . Namun, pertanyaan yang menarik adalah definisi konsistensi disediakan . Ingat dari Bagian 13.1 yang , dalam database direplikasi , satu - copy serializability dapat dilanggar sebagai akibat dari serialisasi transaksi pada node yang berbeda dalam urutan terbalik . Karena failover , transaksi juga dapat diolah sedemikian rupa sehingga satu - copy serializability dikompromikan . Dalam kebanyakan pendekatan replikasi , failover ditangani oleh batal semua transaksi-transaksi yang sedang berlangsung untuk mencegah situasi ini . Namun, cara ini kegagalan penanganan berdampak pada klien yang harus mengajukan kembali transaksi dibatalkan . Karena klien biasanya tidak memiliki kemampuan transaksi untuk membatalkan hasil interaksi percakapan , ini bisa sangat kompleks . Konsep transaksi sangat tersedia membuat kegagalan benarbenar transparan kepada klien sehingga mereka tidak mengamati aborsi transaksi karena kegagalan [ Perez - Sorrosal et al . , 2006 ] . Telah diterapkan pada protokol replikasi Nodo ( lihat Bab 13 ) sebagai berikut . Yang menulis set dan respon transaksi untuk setiap transaksi update yang multicast ke replika lainnya sebelum menjawab klien . Dengan demikian, setiap replika lain dapat mengambil alih pada setiap titik interaksi transaksional . Tindakan yang akan diambil dalam kasus kegagalan replika menguasai lebih terlibat daripada untuk kasus non -master . Pertama , master baru harus ditunjuk untuk mengambil alih master gagal. Penunjukan master baru harus disepakati semua replika di cluster . Dalam replikasi berbasis kelompok , berkat pemberitahuan perubahan keanggotaan , itu sudah cukup untuk menerapkan fungsi deterministik atas keanggotaan baru untuk menetapkan master ( semua node menerima persis daftar yang sama dan terhubung node ) . Sebagai contoh, protokol NoDo menangani kegagalan dengan cara ini . Ketika menunjuk master baru , perlu untuk mengurus konsistensi . Aspek penting lain dari toleransi kesalahan adalah pemulihan setelah kegagalan . Tinggi availabil - ity memiliki dua wajah . Salah satunya adalah bagaimana untuk mentolerir kegagalan dan terus memberikan akses yang konsisten data meskipun kegagalan . Namun, kegagalan mengurangi tingkat

redundansi dalam sistem , dengan demikian menurunkan ketersediaan dan kinerja . Oleh karena itu , perlu untuk memperkenalkan kembali replika gagal atau segar dalam sistem untuk memelihara atau meningkatkan ketersediaan dan kinerja . Kesulitan utama adalah bahwa replika yang memiliki keadaan dan replika gagal mungkin telah terjawab update sementara itu turun . Dengan demikian , replika gagal pulih perlu menerima update hilang sebelum dapat mulai memproses transaksi baru . Sebuah solusi untuk menghentikan proses transaksi . Dengan demikian , keadaan diam langsung dicapai yang dapat ditransfer oleh salah satu replika bekerja untuk pulih satu . Setelah replika pulih telah menerima semua pembaruan terjawab , proses transaksi dapat melanjutkan dan semua replika dapat memproses transaksi baru . Namun, ini protokol pemulihan secara offline sakit ketersediaan , yang bertentangan dengan tujuan awal replikasi . Oleh karena itu , jika ketersediaan tinggi dan kinerja harus disediakan , satu-satunya pilihan adalah untuk melakukan pemulihan secara online [ Kemme et al , 2001; . . Jime nez Peris et al , 2002 ] . 14.6 Kesimpulan Sistem database paralel berusaha untuk mengeksploitasi arsitektur multiprosesor menggunakan solusi perangkat lunak yang berorientasi untuk pengelolaan data . Janji-janji mereka adalah kinerja tinggi , ketersediaan tinggi , dan diperpanjang dengan rasio biaya / kinerja yang baik . Selain itu , paralelisme adalah satusatunya solusi yang layak untuk mendukung database yang sangat besar dalam satu sistem . Sistem database paralel dapat didukung oleh berbagai arsitektur paralel antara shared- memory , shared- disk, shared- apa-apa dan arsitektur hybrid . Setiap arsitektur memiliki kelebihan dan keterbatasan dalam hal kinerja , ketersediaan , dan diperpanjang . 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. Hybrid arsitektur seperti NUMA dan cluster dapat menggabungkan efisiensi dan kesederhanaan bersama - memori dan diperpanjang dan biaya baik disk bersama atau berbagi apa-apa . Secara khusus, mereka dapat menggunakan node sharedmemori dengan sangat baik kinerja / biaya . 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 desain database dan administrasi . Namun, dengan menggunakan node PC standar dan interkoneksi , cluster menyediakan keseluruhan rasio biaya / kinerja yang lebih baik dan , menggunakan shared - apa-apa, bisa meningkatkan ke konfigurasi yang sangat besar ( ribuan node ) . Teknik manajemen data paralel memperpanjang teknik basis data terdistribusi untuk mendapatkan performa tinggi , ketersediaan tinggi , dan diperpanjang . Pada dasarnya , solusi untuk manajemen transaksi , yaitu , didistribusikan kontrol konkurensi , reliabilitas , atomicity , dan replikasi dapat digunakan kembali . Namun, isu-isu penting untuk arsitektur seperti penempatan data, eksekusi query paralel , pengolahan data paralel , optimasi query paralel dan load balancing . Solusi untuk masalah ini lebih terlibat daripada DBMS terdistribusi karena jumlah node mungkin jauh lebih tinggi . Selain itu , teknik pengelolaan data paralel menggunakan asumsi yang berbeda seperti interkoneksi yang cepat dan node homogen yang memberikan lebih banyak kesempatan untuk optimasi . Sekelompok database merupakan jenis penting dari sistem database paralel yang menggunakan kotak hitam DBMS pada setiap node . Banyak penelitian telah dikhususkan untuk mengambil keuntungan penuh dari cluster lingkungan yang stabil dalam rangka meningkatkan kinerja dan ketersediaan dengan memanfaatkan replikasi data. Hasil utama dari penelitian ini adalah teknik-teknik baru untuk replikasi , load balancing , pemrosesan query , dan toleransi kesalahan .

14,7 bibliografi Catatan

Proposal awal dari sebuah server database atau mesin database yang diberikan dalam [ Canaday et al . , 1974 ] . Survei komprehensif dari sistem database paralel disediakan dalam [ Graefe , 1993] . Arsitektur sistem database paralel dibahas dalam [ Bergsten et al , 1993; . Stonebraker , 1986 ] , dan dibandingkan dengan menggunakan model simulasi sederhana dalam [ Bhide dan Stonebraker , 1988] . Arsitektur NUMA dijelaskan dalam [ Lenoski et al , 1992. ; Goodman dan Woest , 1988] . Pengaruh mereka pada eksekusi query dan kinerja dapat ditemukan dalam [ Bouganim et al . , 1999 ] dan [ Dageville et al . , 1994] . Contoh prototipe basis data paralel atau produk yang dijelaskan dalam [ DeWitt et al , 1986; . Tandem , 1987; . Pirahesh et al , 1990; Graefe , 1990; Group, 1990; . Bergsten et al , 1991; Hong , 1992 ] , dan [ APERS et al , 1992. ] . Penempatan data dalam server database paralel dirawat di [ Livny et al . , 1987] . Studi optimasi paralel muncul dalam [ Shekita et al . , 1993] , [ Ziane et al . , 1993] , dan [ Lanzelotte et al . , 1994] . Load balancing dalam sistem database paralel telah dipelajari secara ekstensif . [ Wal - ton et al . , 1991 ] menyajikan taksonomi intra - Operator masalah load balancing , yaitu , data yang condong . [ DeWitt et al . , 1992 ] , [ Kitsuregawa dan Ogawa , 1990 ] , [ Shatdal dan Naughton , 1993 ] , [ Serigala et al . , 1993 ] , [ Rahm dan Marek , 1995 ] , [ Mehta dan DeWitt , 1995 ] dan [ Garofalakis dan Ioannidis 1996 ] hadir beberapa aproaches untuk load balancing dalam shared nothing arsitektur . [ Omiecinski 1991 ] dan [ Bouganim et al . , 1996b ] fokus pada arsitektur shared- memory sementara [ Bouganim et al . , 1996c ] dan [ Bouganim et al, 1999. ] Mempertimbangkan load balancing dalam konteks hybrid architecure . Konsep database cluster sebagai cluster otonom DBMS didefinisikan dalam [ Ro HM et al . , 2000 ] . Beberapa protokol untuk replikasi bersemangat scalable dalam kelompok database menggunakan komunikasi kelompok yang diusulkan dalam [ Kemme dan Alonso , 2000a , b; Patin o - Mart Inez et al , 2000; . . Jime Nez - Peris et al , 2002 ] . Skalabilitas mereka telah dipelajari secara analitis dalam [ Jime nez - Peris et al . , 2003 ] . Replikasi parsial dipelajari dalam [ Sousa et al . , 2001 ] . Presentasi replikasi preventif dalam agian 1 . . berdasarkan

acitti et al ,

. Coulon et al ,

. . acitti et al ,

. ebagian besar anc arski . oad balancing dalam

isi agian 1 . . pada kesegaran -aware load balancing berdasarkan et al , 2002; . . Pape et al , 2004; . Gan c arski et al

kelompok database juga dibahas dalam [ Mila n - Franco et al . , 2004 ] . Isi dari Pasal 14.5.5 pada toleransi kesalahan dalam kelompok database berdasarkan [ Kemme et al , 2001; . . Jime nez - Peris et al , 2002; . Perez - Sorrosal et al , 2006 ] . Pemrosesan query berdasarkan partisi virtual telah pertama kali diusulkan pada [ Akal et al . , 2002 ] . Menggabungkan partisi fisik dan virtual diusulkan dalam [ Ro HM et al . , 2000 ] . Sebagian besar isi Bagian 14.5.4 didasarkan pada bekerja pada partisi virtual yang adaptif [ Lima et al . , 2004a , b ] dan partisi hibrida [ Furtado et al . , 2005 , 2006 ] .

You might also like