zorba-xquery – Penggunaan XML yang luas untuk manajemen dokumen dan pertukaran data telah menciptakan kebutuhan untuk melakukan query terhadap repositori data XML yang besar. Untuk membuat kueri data sebesar itu secara efisien dan memanfaatkan paralelisme, kami telah menerapkan Apache VXQuery, prosesor XQuery sumber terbuka yang dapat diskalakan. Sistem ini dibangun di atas dua kerangka kerja sumber terbuka lainnya: Hyracks, mesin eksekusi paralel, dan Algebricks, kotak alat kompiler agnostik bahasa.
Prosesor XQuery Paralel yang Dapat Diskalakan – Apache VXQuery memperluas kerangka kerja ini dan menyediakan implementasi spesifik XQuery (model data, fungsi dan pengoptimalan yang bergantung pada model data, dan parser). Kami menjelaskan arsitektur Apache VXQuery, integrasinya dengan Hyracks dan Algebricks, dan aturan pengoptimalan XQuery yang diterapkan pada rencana kueri untuk meningkatkan efisiensi ekspresi jalur dan untuk mengaktifkan paralelisme kueri. Evaluasi eksperimental menggunakan set data 500GB nyata dengan berbagai pilihan, agregasi, dan bergabung dengan kueri XML menunjukkan bahwa Apache VXQuery berkinerja baik baik dalam hal peningkatan skala dan kecepatan. Eksperimen kami menunjukkan bahwa ini sekitar 3,5x lebih cepat daripada Saxon (prosesor XQuery open-source dan komersial) pada implementasi 4-core, node tunggal, dan sekitar 2,5x lebih cepat daripada Apache MRQL (prosesor kueri paralel berbasis MapReduce) pada delapan (4-core) node cluster.
Prosesor XQuery Paralel yang Dapat Diskalakan
Penerimaan luas XML sebagai standar untuk manajemen dokumen dan pertukaran data telah memungkinkan pembuatan repositori data XML yang besar. Untuk secara efisien meminta koleksi data besar seperti itu, diperlukan implementasi XQuery yang dapat diskalakan yang dapat memanfaatkan paralelisme. Meskipun ada berbagai prosesor XQuery open-source asli (Saxon , Galax , dll.) mereka telah dioptimalkan untuk pemrosesan node tunggal dan tidak mendukung penskalaan ke banyak node. Untuk membuat prosesor XQuery yang dapat diskalakan, seseorang dapat: 1) menambahkan skalabilitas ke prosesor XQuery yang ada, 2) memulai dari awal, atau 3) memperluas kerangka kerja kueri skalabel yang ada untuk mendukung XQuery. Sayangnya, prosesor XQuery yang ada akan membutuhkan penulisan ulang yang ekstensif dari fitur arsitektur inti mereka untuk menambahkan paralelisme. Demikian pula, membangun prosesor XQuery dari awal akan melibatkan pemrograman skalabel kompleks yang sama (beberapa tidak terkait dengan model data XML). Opsi terakhir, memperluas kerangka kerja terukur yang ada untuk mendukung XQuery, tampaknya menguntungkan karena menggabungkan manfaat teknologi paralel yang telah terbukti dengan waktu implementasi yang lebih singkat.
Di antara beberapa kerangka kerja terukur yang tersedia, seseorang dapat menggunakan mesin basis data paralel relasional dan memanfaatkan teknik pengoptimalannya yang matang. Namun, ini memerlukan biaya tambahan untuk menerjemahkan data/kueri ke model relasional dan kembali ke XML; selain itu, kueri jalur XML yang panjang dapat menghasilkan banyak gabungan. Pendekatan lain adalah membangun prosesor XQuery di atas kerangka MapReduce. Contohnya termasuk ChuQL , yang merupakan ekstensi MapReduce ke XQuery yang dibangun di atas Hadoop, dan HadoopXML , yang menggabungkan banyak kueri XPath menjadi beberapa pekerjaan Hadoop MapReduce. Demikian pula, Apache MRQL menerjemahkan kueri XPath ke dalam bahasa seperti SQL yang diimplementasikan melalui operator MapReduce. Namun, pendekatan berbasis Hadoop ini terbatas karena hanya dapat menggunakan beberapa operator MapReduce yang tersedia (yaitu memetakan, mengurangi, dan menggabungkan).
Baca Juga : Mengulas Tentang XQuery Design Patterns
Baru-baru ini, kerangka kerja telah diusulkan yang menggeneralisasi
model eksekusi MapReduce dengan mendukung sekumpulan operator yang lebih besar untuk membuat pekerjaan paralel (termasuk Hyracks , Spark , dan Stratosphere ). Sistem ‘aliran data’ seperti itu biasanya mencakup model data fleksibel yang mendukung berbagai format data (relasional, semi terstruktur, teks, JSON, XML, dll.) yang membuatnya mudah diperluas. Dalam makalah ini, kami menggunakan Hyracks sebagai kerangka kerja paralel kami dan menggunakan Algebricks , kotak alat kompiler agnostik bahasa, untuk mengimplementasikan XQuery. Implementasi kami tersedia sebagai open source di ASF. Kami telah melakukan evaluasi eksperimental menggunakan kumpulan data nyata yang besar (500GB) (dataset cuaca NOAA dari ) dan berbagai pilihan, agregasi, dan kueri gabungan XML yang menunjukkan efisiensi prosesor XQuery kami, baik dalam hal kecepatan dan peningkatan.
Sisa makalah ini disusun sebagai berikut: Bagian II meninjau pendekatan saat ini untuk menanyakan repositori data XML besar sementara Bagian III mencakup tumpukan perangkat lunak Apache VXQuery dengan detail tentang kerangka kerja yang mendasarinya (Hyracks dan Algebricks) dan bagaimana model data, parser, dan runtime diperpanjang untuk dukungan XQuery. Mengingat spesifikasi XQuery, kami harus memperluas aturan penulisan ulang Aljabar yang ada dan memperkenalkan yang baru; diskusi ini muncul di Bagian IV. Terakhir, Bagian V menyajikan hasil eksperimen kami tentang kinerja Apache VXQuery serta perbandingan dengan dua prosesor XML open-source – SaxonHE single-threaded dan Apache MRQL paralel.
Hadoop menyediakan kerangka kerja untuk pemrosesan terdistribusi berdasarkan model MapReduce. Itu meninggalkan beban implementasi yang signifikan pada programmer aplikasi. Akibatnya, sejumlah bahasa telah diusulkan di atas Hadoop (misalnya Hive , PigLatin , dan Jaql ); namun, bahasa MapReduce tingkat tinggi yang populer tidak mendukung model data XML. Pendekatan terbaru untuk menutup kesenjangan ini meliputi: ChuQL, Apache MRQL, HadoopXML, dan Oracle XQuery untuk Hadoop. ChuQL memperluas XQuery untuk menyertakan dukungan MapReduce untuk memproses XML asli di Hadoop. Di ChuQL, ekspresi MapReduce disertakan sebagai fungsi XQuery, memungkinkan penulis kueri untuk menentukan definisi pekerjaan MapReduce di XQuery. Sebaliknya, VXQuery menyembunyikan semua detail pemrosesan paralel dari penulis kueri saat masih menggunakan konstruksi XQuery standar. Apache MRQL (MapReduce Query Language), adalah bahasa seperti SQL yang dirancang untuk menjalankan tugas analisis data besar. Bahasa ini mendukung penguraian data XML dari Hadoop melalui ekspresi sumber yang mendefinisikan parser XML, file XML, dan tag XML. Pengurai XML memproses file XML dan mengembalikan semua elemen yang cocok dengan tag ini; Apache MRQL kemudian menerjemahkan elemen-elemen ini ke dalam model data Apache MRQL. Setiap kueri diterjemahkan ke ekspresi aljabar untuk pengoptimal berbasis biaya Apache MRQL, yang dibangun berdasarkan kueri relasional yang diketahui dan teknik pengoptimalan MapReduce. Aljabar menggunakan sejumlah kecil operator fisik untuk membuat pekerjaan MapReduce yang lebih efisien daripada langsung menulisnya menggunakan operator MapReduce. HadoopXML memproses satu file XML besar dengan serangkaian kueri yang telah ditentukan (masing-masing saat ini dalam subset XPath). Mesin mengidentifikasi kesamaan kueri (jalur yang umum) dan mengeksekusinya sekali; itu kemudian membagikan hasil umum dan menambahkannya dengan bagian yang tidak umum per kueri. Pemrosesan ini dilakukan menggunakan pekerjaan MapReduce. Saat kueri dijalankan, pengoptimal kueri menentukan jumlah pekerjaan yang optimal untuk mengeksekusi kueri yang diminta.