Topik ini menjelaskan manfaat Query Engine (QE) yang digunakan dalam Hologres dan cara kueri dieksekusi di Hologres.
Manfaat
Hologres QE, dikembangkan oleh Alibaba Cloud, mendukung teknologi data besar terbaru dan memberikan performa tinggi dalam memproses berbagai jenis kueri. Hologres Query Engine (HQE) adalah modul utama dari Hologres QE. Berikut adalah manfaat yang ditawarkan oleh Hologres QE:
Eksekusi Terdistribusi
Hologres QE menggunakan model eksekusi terdistribusi yang bekerja dengan arsitektur Storage Disaggregation. Rencana eksekusi direpresentasikan oleh graf asiklik terarah (DAG) yang terdiri dari operator asinkron. Model ini mampu mengekspresikan berbagai kueri kompleks dan sesuai dengan model penyimpanan data Hologres, sehingga memudahkan Query Optimizer (QO) untuk mengoptimalkan kueri berdasarkan berbagai teknologi optimasi.
Eksekusi Sepenuhnya Asinkron
Hologres QE menyediakan kerangka kerja sepenuhnya asinkron ujung ke ujung yang dapat menghilangkan hambatan sistem konkurensi tinggi dan memanfaatkan sumber daya secara maksimal. Pendekatan ini meminimalkan dampak latensi baca yang disebabkan oleh arsitektur Storage Disaggregation.
Vektorisasi dan Pemrosesan Berorientasi Kolom
Hologres QE memproses data secara vektorisasi di operator kapan pun memungkinkan. Hologres QE terintegrasi mendalam dengan Storage Engine (SE). Model eksekusi fleksibel dibangun untuk memanfaatkan berbagai indeks secara optimal. Vektorisasi dan materialisasi ditunda sebanyak mungkin untuk mencegah pembacaan data atau komputasi yang tidak perlu.
Pemrosesan Inkremental Adaptif
Hologres QE mengimplementasikan pemrosesan inkremental adaptif untuk data real-time reguler.
Optimasi Kueri Spesifik
Hologres QE menyediakan optimasi unik untuk kueri tertentu.
Proses eksekusi kueri
Hologres QE mencakup beberapa pekerja. Gambar berikut menunjukkan bagaimana pekerja mengeksekusi kueri yang diinisiasi oleh klien. 
Setelah klien memulai kueri SQL, kueri dieksekusi melalui proses berikut:
Frontend (FE) mengotentikasi dan mengurai kueri SQL, lalu mendistribusikan kueri tersebut ke modul-modul berbeda dari Hologres QE.
Hologres QE memilih jalur eksekusi berdasarkan karakteristik kueri SQL.
Jika kueri SQL adalah kueri titik, FE mendistribusikan kueri SQL ke Fixed QE untuk mendapatkan data tanpa melewati Query Optimizer (QO). Ini mempersingkat jalur eksekusi dan meningkatkan performa kueri. Jalur eksekusi ini disebut rencana tetap. Kueri titik, mirip dengan kueri key-value di HBase, serta penulisan titik diproses menggunakan rencana tetap.
Jika kueri SQL adalah kueri pemrosesan analitik online (OLAP), FE mendistribusikan kueri SQL ke QO. QO mengurai kueri SQL dan menghasilkan rencana eksekusi. Rencana eksekusi mencakup informasi seperti estimasi biaya untuk eksekusi operator, statistik, dan rentang kueri yang dipersempit. QO menentukan penggunaan HQE, PostgreSQL Query Engine (PQE), Seahawks Query Engine (SQE), atau Hive Query Engine (Hive QE) untuk menghitung operator berdasarkan rencana eksekusi.
Berikut adalah pengenalan tentang HQE, PQE, dan SQE:
Hologres Query Engine (HQE)
Dikembangkan oleh Alibaba Cloud, HQE menggunakan arsitektur Massively Parallel Processing (MPP) yang skalabel untuk mengimplementasikan komputasi paralel penuh. HQE menggunakan operator vektorisasi untuk memaksimalkan penggunaan CPU dan mencapai performa kueri terbaik. HQE adalah modul utama dari Hologres QE.
PostgreSQL Query Engine (PQE)
PQE menyediakan kompatibilitas dengan PostgreSQL. PQE mendukung berbagai ekstensi PostgreSQL, seperti PostGIS dan fungsi yang ditentukan pengguna (UDF) yang ditulis dalam PL/Java, PL/SQL, atau PL/Python. Fungsi dan operator yang tidak didukung oleh HQE dapat dieksekusi menggunakan PQE. HQE terus dioptimalkan di setiap versi dengan tujuan akhir untuk mengintegrasikan semua fitur PQE.
Seahawks Query Engine (SQE)
SQE memungkinkan Hologres terhubung tanpa batas ke MaxCompute. Ini memberikan akses berperforma tinggi ke semua jenis file MaxCompute tanpa perlu memigrasi atau mengimpor data. SQE juga memungkinkan Hologres mengakses tabel kompleks seperti tabel hash dan tabel terkluster rentang, serta menerapkan analisis interaktif pada data batch tingkat PB.
Setelah Hologres QE menentukan rencana eksekusi yang tepat, Hologres QE menggunakan SE untuk mendapatkan data, menggabungkan data dari shard yang berbeda, dan mengembalikan hasil kueri ke klien.