Topik ini menjelaskan fitur Indeks Kolom Terkluster (CCI).
Solusi Online Transaction Processing (OLTP) dan Online Analytical Processing (OLAP) biasanya dikembangkan berdasarkan model pemisahan baca/tulis atau ekstraksi, transformasi, dan pemuatan (ETL). Solusi-solusi ini mengekstrak data dari database online dan memuatnya ke dalam gudang data untuk analisis melalui metode T+1. Namun, solusi-solusi tersebut memiliki beberapa kelemahan seperti biaya penyimpanan tinggi, kemampuan real-time yang buruk, serta biaya pemeliharaan dan konektivitas yang tinggi.
Untuk menghadapi pertumbuhan data yang eksponensial, PolarDB-X menyediakan fitur CCI berbasis Object Storage Service (OSS). Fitur ini memungkinkan sinkronisasi data berorientasi baris ke data berorientasi kolom secara real-time dan mendukung kemampuan berikut:
Fitur CCI mendukung integrasi OLTP dan analisis data real-time untuk memenuhi persyaratan dalam skenario yang melibatkan OLTP dan OLAP.
Fitur CCI dari PolarDB-X mendukung perutean cerdas dan pemrosesan paralel masif (MPP). Lapisan komputasi secara akurat mengidentifikasi lalu lintas Pemrosesan Transaksional (TP) dan Pemrosesan Analitik (AP), serta merutekan lalu lintas tersebut ke media penyimpanan yang berbeda. Secara default, lapisan komputasi juga memastikan bahwa MPP diaktifkan pada jejak AP untuk memindai CCIs, yang secara signifikan meningkatkan kemampuan analisis kueri.
Fitur CCI menggunakan model Delta+Main untuk menerapkan pembaruan real-time dalam hitungan detik. Fitur ini terintegrasi dengan Kontrol Konkurensi Multi-Versi (MVCC) untuk memastikan snapshot data yang konsisten dapat dibaca kapan saja.
Catatan Penggunaan
Fitur CCI hanya didukung oleh instance Edisi Perusahaan versi 5.4.19-16989811 atau lebih baru.
Hanya database dalam mode AUTO yang mendukung membuat CCIs.
CatatanUntuk informasi tentang versi instance, lihat Catatan Rilis.
Untuk informasi tentang cara melihat versi instance PolarDB-X, lihat Melihat dan Memperbarui Versi Instance.
Arsitektur
Penyimpanan Hibrid Baris-Kolom
Komponen Utama
Node Komputasi (CN) adalah pintu masuk sistem. Node-node ini menggunakan desain tanpa status dan mencakup model seperti pengurai SQL, pengoptimal, dan pelaksana. CN bertanggung jawab atas penyaluran data terdistribusi, komputasi, penjadwalan dinamis, koordinasi transaksi terdistribusi berdasarkan protokol Two-Phase Commit (2PC), dan pemeliharaan indeks sekunder global. CN menyediakan fitur tingkat perusahaan seperti Pembatasan SQL dan mode tiga-peran.
Node Data (DN) bertanggung jawab atas data persisten berorientasi baris. DN memastikan daya tahan data dan memberikan jaminan konsistensi kuat berdasarkan protokol multi-majority Paxos. DN menggunakan MVCC untuk mempertahankan visibilitas transaksi terdistribusi. DN juga dapat memenuhi persyaratan operasi yang perlu mendorong tugas komputasi dalam arsitektur terdistribusi, seperti Project, Filter, Join, dan Aggregation.
Global Meta Service (GMS) bertanggung jawab atas pemeliharaan metadata sistem yang konsisten secara global seperti metadata tabel, metadata skema, dan metadata statistik. GMS mengelola informasi terkait keamanan seperti akun pengguna dan izin. GMS menyediakan layanan Timestamp Oracle (TSO).
Change Data Capture (CDC) menyediakan kemampuan langganan inkremental yang sepenuhnya kompatibel dengan format dan protokol log biner MySQL. CDC juga menyediakan kemampuan replikasi utama/sekunder yang kompatibel dengan protokol replikasi MySQL.
Kolom menyediakan CCIs persisten, mengonsumsi log biner transaksi terdistribusi secara real-time, dan membangun CCIs berbasis OSS untuk memenuhi persyaratan pembaruan real-time. Saat digabungkan dengan CN, kolom dapat menyediakan kemampuan kueri konsisten-snapshot untuk CCIs.
Penyimpanan Berorientasi Kolom
Konsep Arsitektur
Seiring dengan semakin populernya teknologi cloud-native, gudang data cloud-native generasi baru seperti Snowflake dan arsitektur HTAP terus mendorong inovasi. Jelas bahwa di masa depan, penyimpanan hibrid baris-kolom dengan kemampuan HTAP akan menjadi persyaratan standar untuk database. Oleh karena itu, penting untuk fokus pada aspek berorientasi masa depan seperti efisiensi biaya, kemudahan penggunaan, dan kinerja tinggi dalam desain penyimpanan berorientasi kolom saat ini.
PolarDB-X menyediakan fitur CCI. Secara default, tabel berorientasi baris di PolarDB-X memiliki indeks kunci utama dan indeks sekunder. CCI adalah indeks sekunder yang dibangun di atas struktur berorientasi kolom dan berlaku untuk semua kolom dalam tabel berorientasi baris. Sebuah tabel dapat berisi data berorientasi baris dan data berorientasi kolom.
Fitur Arsitektur
Arstiektur cloud-native (penyimpanan dan komputasi terpisah serta efisiensi biaya)
Fitur CCI dari PolarDB-X menggunakan OSS sebagai penyimpanan data utama, yang menghasilkan biaya sekitar satu keenam hingga sepersepuluh dari biaya penyimpanan berbasis disk lokal. Fitur ini juga mengimplementasikan rasio kompresi tinggi data berorientasi kolom yang berkisar antara tiga hingga lima kali lipat dari jenis data lainnya. Ini memberikan keunggulan kompetitif bagi fitur CCI dalam hal biaya lebih rendah. Dalam skenario HTAP yang melibatkan penyimpanan hibrid baris-kolom, tambahan biaya penyimpanan berorientasi kolom dapat dikendalikan dalam kisaran 5% hingga 10% dari biaya penyimpanan berorientasi baris.
Fitur CCI dari PolarDB-X memanfaatkan model dua tingkat Delta+Main yang mirip dengan struktur LSM dan teknologi penghapusan tag di lapisan penyimpanannya untuk memastikan bahwa fitur ini menyediakan kemampuan pembaruan konkurensi tinggi saat menggunakan OSS. Beberapa lapisan cache data lokal dan mekanisme statistik multi-level juga digunakan pada jejak tempat fitur CCI membaca data dari OSS untuk meminimalkan akses jarak jauh yang tidak perlu ke data penyimpanan OSS.
Sistem database terdistribusi (skalabilitas linier)
Pada database terdistribusi tradisional, CCIs umumnya dibangun menggunakan mekanisme multi-replika berbasis protokol Paxos atau Raft. Namun, OLTP dan OLAP memiliki persyaratan kueri yang berbeda dan tingkat ketergantungan sumber daya yang beragam. Kebijakan partisi konsistensi kuat dan mekanisme penskalaan antar replika yang berbeda dapat membatasi kemampuan skalabilitas linier TP dan AP, yang menurunkan kinerja database.
Fitur CCI dari PolarDB-X mengimplementasikan transformasi heterogen dari data berorientasi baris ke data berorientasi kolom (M:N) berdasarkan sinkronisasi real-time log biner transaksi terdistribusi. Fitur ini mendefinisikan kunci partisi terdistribusi dan kunci sortir untuk CCIs. PolarDB-X memanfaatkan teknik pemrosesan paralel terdistribusi untuk menyediakan skalabilitas linier untuk kueri berbasis CCI. Media penyimpanan berorientasi baris dan kolom diisolasi satu sama lain. Dengan cara ini, sumber daya penyimpanan dan komputasi dapat diskalakan dengan mudah. Dalam lingkungan terdistribusi, kueri berbasis CCI dapat memanfaatkan skalabilitas linier ekstrem.
Pemisahan baca/tulis (arsitektur serverless dengan harga bayar sesuai pemakaian untuk pembacaan)
Fitur CCI dari PolarDB-X mengadopsi arsitektur pemisahan baca/tulis berbasis komponen. Arsitektur ini terdiri dari node penyimpanan kolom dan node komputasi. Node penyimpanan kolom adalah node tanpa status yang tidak langsung menangani permintaan tulis dari klien eksternal. Sebagai gantinya, node-node ini memanfaatkan teknologi Group Commit untuk memperbarui data CCI secara batch. Node komputasi adalah node tanpa status yang mengambil metadata kolomar dari node GMS dan langsung mengakses data CCI yang disimpan di OSS.
Jika Anda ingin membuat instance PolarDB-X, sistem secara otomatis menyediakan node penyimpanan kolom. Node-node ini terus berjalan dan menyinkronkan CCIs. Anda dapat dengan mudah membuat CCI dengan mengeksekusi pernyataan DDL. Setelah CCI dibangun, data CCI secara otomatis dibuat dan diperbarui secara real-time. Anda dapat menggunakan instance utama atau membeli instance hanya-baca tambahan untuk mengakses indeks penyimpanan baris dan CCIs. Mode serverless juga cocok untuk CN tanpa status. Anda hanya dikenakan biaya untuk penggunaan CN.
Kombinasi penyimpanan berorientasi baris dan kolom (kemudahan penggunaan, mesin SQL vektorisasi terintegrasi)
PolarDB-X menggunakan kembali mesin SQL CN untuk menyediakan kemampuan lengkap CN. Pengoptimal biaya dibangun untuk skenario hibrid baris-kolom. Pengoptimal biaya ini secara cerdas mengidentifikasi rute berdasarkan biaya eksekusi, dan meneruskan kueri OLTP ke jejak kueri penyimpanan baris dan kueri OLAP ke jejak kueri berbasis CCI. Pengoptimal biaya memungkinkan Anda mengakses data berorientasi baris dan kolom yang berbeda pada level operator SQL, yang sepenuhnya mengimplementasikan kemampuan hibrid baris-kolom HTAP. Pengoptimal biaya juga memungkinkan akses terpadu ke satu set mesin SQL.
PolarDB-X sepenuhnya kompatibel dengan vektorisasi. Struktur data chunk kolomar digunakan oleh operator TableScan untuk membaca data berorientasi kolom. Komputasi operator berikutnya juga sepenuhnya mewarisi struktur kolomar dalam-memori dari chunk. Ini meningkatkan kinerja kueri berdasarkan vektorisasi ujung-ke-ujung. Operator TableScan untuk penyimpanan berorientasi baris juga secara dinamis diubah menjadi chunk kolomar untuk mengimplementasikan kueri hibrid baris-kolom berdasarkan struktur data terpadu.
Gudang satu atap (Zero-ETL)
Gudang data tradisional menggunakan ETL untuk menyinkronkan data dan memanfaatkan arsitektur komputasi paralel, seperti MPP dan Bulk Synchronous Parallel (BSP), untuk menangani kueri OLAP kompleks. Namun, dalam kueri online konkurensi tinggi (skenario Serving), gudang-gudang ini memiliki hambatan pada konkurensi sumber daya. Dalam kasus ini, gudang-gudang ini mengembalikan data ke database OLTP untuk menyediakan kueri online.
PolarDB-X terintegrasi dengan AnalyticDB for MySQL untuk menyediakan gudang satu atap. Gudang ini memanfaatkan data CCI bersama berdasarkan konsep zero-ETL. Gudang ini juga memungkinkan pihak-pihak berbeda melakukan agregasi data dan kueri korelasi data serta menyediakan analisis gudang data tradisional dan danau data berbasis kemampuan warehousing AnalyticDB for MySQL. Arsitektur hibrid baris-kolom dengan kemampuan HTAP dari PolarDB-X juga dapat digunakan untuk kueri konkurensi pada data online untuk menghilangkan kebutuhan ETL data tradisional.
Cara Kerja CCIs
Pembuatan CCIs

CCIs dibangun oleh node penyimpanan kolom. Data terkait CCIs yang telah dibangun disimpan dalam objek shard dalam format CSV dan ORC. Format CSV digunakan untuk menyimpan data inkremental real-time. Data inkremental yang berlebih dikompaksi secara tepat waktu dan di-dump ke format ORC. PolarDB-X telah mengoptimalkan format CSV dan ORC. Format yang dioptimalkan mewarisi fitur open source dari format asli, dan memastikan bahwa kedua format dapat sepenuhnya mengekspresikan protokol data MySQL.
Dari perspektif sinkronisasi data, proses pembuatan CCIs melibatkan dua jejak sinkronisasi paralel: pembacaan snapshot penuh dan sinkronisasi data inkremental. Dalam skenario di mana CCIs dibangun dan kemudian data diimpor, hanya data inkremental yang disinkronkan, dan node penyimpanan kolom secara simultan mengonsumsi log biner untuk membangun CCIs. Dalam skenario di mana data sebagian diimpor, dan kemudian CCIs dibangun dan data sisanya diimpor, data inkremental disinkronkan, dan node penyimpanan kolom secara simultan mengonsumsi data inkremental dan penuh yang ada untuk meningkatkan efisiensi pembuatan CCIs.
Dari perspektif hierarkis, node penyimpanan kolom menggunakan model dua tingkat Delta+Main yang mirip dengan struktur LSM dan teknologi penghapusan tag untuk memastikan sinkronisasi data latensi rendah antara penyimpanan berorientasi baris dan kolom serta pembaruan data real-time dalam hitungan detik. Data ditulis ke MemTable secara real-time. Data tersebut disimpan dalam file CSV lokal dan ditambahkan ke file CSV yang sesuai di OSS dalam siklus commit grup. File lokal tersebut diberi nama file delta. File CSV di OSS tidak disimpan secara permanen, tetapi diubah menjadi file ORC oleh kompaksi dari waktu ke waktu.
MPP
Di PolarDB-X, CN digunakan untuk menangani lalu lintas untuk kueri dan analisis. Gambar di atas menunjukkan bahwa seluruh rantai percepatan kueri terdiri dari tiga tingkat: pengoptimal, pelaksana, dan mesin penyimpanan.
PolarDB-X menyediakan pengoptimal biaya yang cocok untuk skenario hibrid baris-kolom. Pengoptimal biaya secara cerdas mengidentifikasi rute berdasarkan biaya eksekusi, dan meneruskan kueri TP ke jejak kueri penyimpanan baris dan kueri AP ke jejak kueri berbasis CCI.
PolarDB-X menyediakan pelaksana terintegrasi yang cocok untuk skenario hibrid baris-kolom. Satu set pelaksana tersedia dalam skenario HTAP. Lapisan operator juga divectorisasi dan mendukung MPP. Dalam skenario kueri kompleks, sumber daya multi-node dapat digunakan untuk komputasi paralel untuk memenuhi persyaratan kueri kompleks dengan throughput tinggi. Untuk menghilangkan latensi jaringan yang disebabkan oleh arsitektur dengan sumber daya komputasi dan penyimpanan terpisah, lapisan pelaksana juga memperkenalkan teknologi caching lokal untuk memuat data panas ke disk lokal secara real-time. Ini memastikan bahwa persyaratan kueri latensi rendah dipenuhi.
Pada tingkat mesin penyimpanan, pembuatan CCIs memungkinkan atomicitas transaksi yang telah dilakukan dan memastikan bahwa data konsisten tingkat transaksi dapat dikueri.
Jenis Layanan
Dengan diperkenalkannya kolomar, PolarDB-X menyediakan jenis layanan tambahan selain instance utama dan instance hanya-baca. Jenis layanan tambahan ini dikenal sebagai instance penyimpanan kolom hanya-baca.
Instance Utama: Secara default, instance utama memungkinkan Anda hanya mengkueri data berorientasi baris. Namun, ketika digabungkan dengan instance hanya-baca, titik akhir instance utama memungkinkan pemisahan baca/tulis transparan dan konsisten kuat. Instance utama mempertahankan kemampuan untuk langsung mengkueri data berorientasi kolom. Kemampuan perutean cerdas dan kueri hibrid baris-kolom akan tersedia di masa mendatang.
Instance Hanya-Baca: Instance hanya-baca memungkinkan Anda mengkueri data baca-saja berorientasi baris dan data CCI. Instance hanya-baca memiliki titik akhir hanya-baca khusus. Aplikasi dapat membuat koneksi terpisah ke titik akhir hanya-baca ini untuk melakukan operasi baca. Dengan terhubung ke titik akhir hanya-baca ini, aplikasi dapat mengelola operasi baca dan tulis secara independen.
Instance Penyimpanan Kolom Hanya-Baca: Instance penyimpanan kolom hanya-baca memungkinkan Anda hanya mengkueri data CCI. Instance-instance ini memiliki titik akhir hanya-baca khusus. Aplikasi dapat membuat koneksi terpisah ke titik akhir hanya-baca ini untuk melakukan operasi baca. Instance-instance ini hanya terdiri dari CN dan lebih hemat biaya.
Skenario
Fitur CCI dari PolarDB-X menyediakan solusi HTAP satu atap dan dapat digunakan dalam berbagai skenario bisnis.
Skenario yang memerlukan analisis data online secara real-time dalam hitungan detik, seperti pembuatan laporan bisnis real-time.
Skenario gudang data yang bergantung pada kapasitas penyimpanan data volume besar PolarDB-X untuk menggabungkan beberapa sumber data upstream dan menggunakan PolarDB-X sebagai gudang data khusus.
Skenario komputasi berbasis ETL memanfaatkan kemampuan komputasi yang kuat dan fleksibel dari CCIs PolarDB-X.
Fitur CCI dari PolarDB-X memenuhi kebutuhan skenario yang melibatkan TP dan AP, serta menyediakan solusi HTAP transparan dan hemat biaya berbasis Object Storage Service (OSS) dan teknologi perutean cerdas.
Uji Kinerja
Untuk informasi tentang uji TPC Benchmark-H (TPC-H) PolarDB-X untuk Indeks Kolom Terkluster (CCIs) PolarDB-X, lihat Uji TPC-H untuk CCIs berbasis 100 GB data.