Topik ini menjelaskan fitur Clustered Columnar Index (CCI).
Solusi Online Transaction Processing (OLTP) dan Online Analytical Processing (OLAP) dikembangkan berdasarkan model pemisahan baca/tulis atau extract, transform, load (ETL). Solusi tersebut mengekstrak data dari database online dan memuatnya ke dalam gudang data untuk dianalisis dengan pendekatan T+1. Namun, solusi ini memiliki beberapa kelemahan, seperti biaya penyimpanan yang tinggi, kemampuan real-time yang terbatas, serta biaya pemeliharaan dan konektivitas yang besar.
Untuk mengatasi 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 kebutuhan skenario yang melibatkan OLTP dan OLAP.
Fitur CCI pada PolarDB-X mendukung routing cerdas dan massively parallel processing (MPP). Lapisan komputasi secara akurat mengidentifikasi trafik pemrosesan transaksional (TP) dan trafik pemrosesan analitik (AP), lalu mengarahkannya ke media penyimpanan yang berbeda. Secara default, lapisan komputasi juga memastikan bahwa MPP diaktifkan pada jejak AP untuk memindai CCI, sehingga secara signifikan meningkatkan kemampuan analisis kueri.
Fitur CCI menggunakan model Delta+Main untuk menerapkan pembaruan real time dalam hitungan detik. Fitur ini terintegrasi dengan Multi-Version Concurrency Control (MVCC) guna memastikan pembacaan snapshot data yang konsisten kapan saja.
Catatan penggunaan
Fitur CCI hanya didukung oleh instans Edisi Perusahaan dengan versi 5.4.19-16989811 atau lebih baru.
Hanya database dalam mode AUTO yang mendukung pembuatan CCI.
CatatanUntuk informasi tentang pengendalian versi instans, lihat Catatan rilis kernel.
Untuk informasi tentang cara melihat versi instans PolarDB-X, lihat Lihat dan perbarui versi engine instans PolarDB for Xscale.
Arsitektur
Penyimpanan hibrida baris-kolom
Komponen utama
Compute nodes (CNs) merupakan pintu masuk sistem. Node-node ini menggunakan desain tanpa status (stateless) dan mencakup komponen seperti parser SQL, pengoptimal, dan pelaksana. CN bertanggung jawab atas routing data terdistribusi, komputasi, penjadwalan dinamis, koordinasi transaksi terdistribusi berbasis protokol Two-Phase Commit (2PC), serta pemeliharaan indeks sekunder global. CN menyediakan fitur tingkat perusahaan seperti pembatasan SQL dan mode tiga role.
Data nodes (DNs) bertanggung jawab atas data berorientasi baris yang persisten. DN menjamin 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 kebutuhan operasi yang perlu mendorong tugas komputasi dalam arsitektur terdistribusi, seperti Project, Filter, Join, dan Aggregation.
Global Meta Service (GMS) bertanggung jawab memelihara metadata sistem yang konsisten secara global, seperti metadata tabel, metadata skema, dan metadata statistik. GMS mengelola informasi terkait keamanan seperti akun pengguna dan izin, serta 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 primer/sekunder yang kompatibel dengan protokol replikasi MySQL.
Columnar menyediakan CCI persisten dengan mengonsumsi Log biner dari transaksi terdistribusi secara real-time dan membangun CCI berbasis OSS untuk memenuhi kebutuhan pembaruan real-time. Ketika digabungkan dengan CNs, Columnar mampu menyediakan kemampuan kueri snapshot konsisten untuk CCI.
Penyimpanan berorientasi kolom
Konsep arsitektur
Dengan meningkatnya popularitas teknologi cloud-native, gudang data cloud-native generasi baru seperti Snowflake dan arsitektur HTAP terus mendorong inovasi. Jelas bahwa dalam waktu dekat, penyimpanan hibrida baris-kolom dengan kemampuan HTAP akan menjadi persyaratan standar bagi database. Oleh karena itu, penting untuk fokus pada aspek berorientasi masa depan seperti efektivitas biaya, kemudahan penggunaan, dan performa tinggi dalam desain penyimpanan berorientasi kolom saat ini.
PolarDB-X menyediakan fitur CCI. Secara default, tabel berorientasi baris di PolarDB-X memiliki indeks kunci primer 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
Arsitektur cloud-native (komputasi dan penyimpanan terpisah serta efektivitas biaya)
Fitur CCI pada PolarDB-X menggunakan OSS sebagai penyimpanan data utama, yang menghasilkan biaya sekitar seperenam hingga sepersepuluh dari biaya penyimpanan berbasis disk lokal. Fitur ini juga menerapkan rasio kompresi tinggi untuk data berorientasi kolom, yaitu tiga hingga lima kali lipat dibandingkan jenis data lainnya, sehingga memberikan keunggulan kompetitif dalam hal biaya yang lebih rendah. Dalam skenario HTAP yang melibatkan penyimpanan hibrida baris-kolom, tambahan biaya penyimpanan berorientasi kolom dapat dikendalikan dalam kisaran 5% hingga 10% dari biaya penyimpanan berorientasi baris.
Fitur CCI pada PolarDB-X memanfaatkan model dua lapis Delta+Main yang mirip dengan struktur LSM dan teknologi tag deletion pada lapisan penyimpanannya untuk memastikan kemampuan pembaruan konkurensi tinggi saat menggunakan OSS. Beberapa lapis cache data lokal dan mekanisme statistik multi-level juga diterapkan pada jejak tempat fitur CCI membaca data dari OSS guna meminimalkan akses jarak jauh yang tidak perlu ke data penyimpanan OSS.
Sistem database terdistribusi (skalabilitas linear)
Pada database terdistribusi tradisional, CCI umumnya dibangun menggunakan mekanisme multi-replika berbasis protokol Paxos atau Raft. Namun, OLTP dan OLAP memiliki kebutuhan kueri yang berbeda serta tingkat ketergantungan sumber daya yang bervariasi. Kebijakan partisi konsistensi kuat dan mekanisme penskalaan antar replika yang berbeda dapat membatasi kemampuan skalabilitas linear TP dan AP, sehingga menurunkan performa database.
Fitur CCI pada PolarDB-X menerapkan transformasi heterogen dari data berorientasi baris ke data berorientasi kolom (M:N) berdasarkan sinkronisasi real time log biner transaksi terdistribusi. Fitur ini menetapkan kunci partisi terdistribusi dan kunci pengurutan untuk CCI. PolarDB-X memanfaatkan teknik pemrosesan paralel terdistribusi untuk menyediakan skalabilitas linear bagi kueri berbasis CCI. Media penyimpanan berorientasi baris dan berorientasi kolom saling terisolasi satu sama lain, sehingga sumber daya penyimpanan dan komputasi dapat diskalakan dengan mudah. Di lingkungan terdistribusi, kueri berbasis CCI dapat memperoleh manfaat dari skalabilitas linear ekstrem.
Pemisahan baca/tulis (arsitektur serverless dengan harga bayar sesuai penggunaan untuk operasi baca)
Fitur CCI pada 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 melakukan pembaruan batch data CCI. Node komputasi adalah node tanpa status yang mengambil metadata columnar dari node GMS dan langsung mengakses data CCI yang disimpan di OSS.
Jika Anda ingin membuat instans PolarDB-X, sistem secara otomatis menyediakan node penyimpanan kolom. Node-node ini terus berjalan dan menyinkronkan CCI. Anda dapat dengan mudah membuat CCI dengan menjalankan pernyataan DDL. Setelah CCI dibangun, data CCI secara otomatis dihasilkan dan diperbarui secara real time. Anda dapat menggunakan instans utama atau membeli instansi hanya baca tambahan untuk mengakses indeks penyimpanan baris dan CCI. Mode serverless juga cocok untuk CN tanpa status. Anda hanya dikenai biaya berdasarkan penggunaan CN.
Kombinasi penyimpanan berorientasi baris dan berorientasi kolom (kemudahan penggunaan, mesin SQL vektorisasi terintegrasi)
PolarDB-X menggunakan kembali mesin SQL CN untuk menyediakan kemampuan lengkap CN. Pengoptimal biaya dibangun untuk skenario hibrida baris-kolom. Pengoptimal biaya ini secara cerdas mengidentifikasi entri rute berdasarkan biaya eksekusi, serta meneruskan kueri OLTP ke jejak kueri penyimpanan baris dan kueri OLAP ke jejak kueri berbasis CCI. Pengoptimal biaya memungkinkan akses ke data berorientasi baris dan berorientasi kolom yang berbeda pada level operator SQL, yang sepenuhnya menerapkan kemampuan hibrida baris-kolom HTAP. Pengoptimal biaya juga memungkinkan akses terpadu ke satu set mesin SQL.
PolarDB-X sepenuhnya kompatibel dengan vektorisasi. Struktur data chunk columnar digunakan oleh operator TableScan untuk membaca data berorientasi kolom. Komputasi operator selanjutnya juga sepenuhnya mewarisi struktur columnar dalam memori dari chunk, sehingga meningkatkan performa kueri berdasarkan vektorisasi end-to-end. Operator TableScan untuk penyimpanan berorientasi baris juga secara dinamis dikonversi menjadi chunk columnar untuk menerapkan kueri hibrida baris-kolom berdasarkan struktur data terpadu.
Gudang data 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 data ini mengalami bottleneck pada konkurensi sumber daya. Dalam kasus ini, gudang data tersebut mengembalikan data ke database OLTP untuk menyediakan kueri online.
PolarDB-X terintegrasi dengan AnalyticDB for MySQL untuk menyediakan gudang data satu atap. Gudang data ini memanfaatkan data CCI bersama berdasarkan konsep zero-ETL. Gudang data ini juga memungkinkan banyak pihak melakukan agregasi data dan kueri korelasi data, serta menyediakan analisis gudang data tradisional dan data lake berdasarkan kemampuan warehousing AnalyticDB for MySQL. Arsitektur hibrida baris-kolom dengan kemampuan HTAP dari PolarDB-X juga dapat digunakan untuk kueri konkuren pada data online guna menghilangkan kebutuhan akan ETL data tradisional.
Cara kerja CCI
Pembangunan CCI

CCI dibangun oleh node penyimpanan kolom. Data terkait CCI yang telah dibangun disimpan dalam objek shard dalam format CSV dan ORC. Format CSV digunakan untuk menyimpan data inkremental real time. Data inkremental yang berlebihan dikompaksi secara tepat waktu dan di-dump ke dalam format ORC. PolarDB-X telah mengoptimalkan format CSV dan ORC. Format yang dioptimalkan ini mewarisi fitur open source dari format aslinya dan memastikan bahwa kedua format tersebut dapat sepenuhnya merepresentasikan protokol data MySQL.
Dari perspektif sinkronisasi data, proses pembangunan CCI melibatkan dua jejak sinkronisasi paralel: pembacaan snapshot lengkap dan sinkronisasi data inkremental. Dalam skenario di mana CCI dibangun terlebih dahulu lalu data diimpor, hanya data inkremental yang disinkronkan, dan node penyimpanan kolom secara simultan mengonsumsi log biner untuk membangun CCI. Dalam skenario di mana sebagian data diimpor terlebih dahulu, lalu CCI dibangun dan sisa data diimpor, data inkremental disinkronkan, dan node penyimpanan kolom secara simultan mengonsumsi data inkremental dan data lengkap yang ada untuk meningkatkan efisiensi pembuatan CCI.
Dari perspektif hierarkis, node penyimpanan kolom menggunakan model dua lapis Delta+Main yang mirip dengan struktur LSM dan teknologi tag deletion untuk memastikan sinkronisasi data latensi rendah antara penyimpanan berorientasi baris dan berorientasi 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 satu siklus group commit. File lokal ini disebut file delta. File CSV di OSS tidak disimpan secara permanen, melainkan dikonversi menjadi file ORC melalui proses compaction dari waktu ke waktu.
MPP
Di PolarDB-X, CN digunakan untuk menangani trafik kueri dan analisis. Gambar di atas menunjukkan bahwa seluruh rantai akselerasi kueri terdiri dari tiga level: pengoptimal, pelaksana, dan mesin penyimpanan.
PolarDB-X menyediakan pengoptimal biaya yang sesuai untuk skenario hibrida baris-kolom. Pengoptimal biaya ini secara cerdas mengidentifikasi entri rute berdasarkan biaya eksekusi, serta meneruskan kueri TP ke jejak kueri penyimpanan baris dan kueri AP ke jejak kueri berbasis CCI.
PolarDB-X menyediakan pelaksana terintegrasi yang sesuai untuk skenario hibrida baris-kolom. Satu set pelaksana tersedia dalam skenario HTAP. Lapisan operator juga divektorisasi dan mendukung MPP. Dalam skenario kueri kompleks, sumber daya multi-node dapat digunakan untuk komputasi paralel guna memenuhi kebutuhan kueri kompleks ber-throughput tinggi. Untuk menghilangkan latensi jaringan yang disebabkan oleh arsitektur dengan sumber daya komputasi dan penyimpanan yang terpisah, lapisan pelaksana juga memperkenalkan teknologi caching lokal untuk memuat data hot ke disk lokal secara real time, sehingga memastikan kebutuhan kueri latensi rendah terpenuhi.
Pada level mesin penyimpanan, pembangunan CCI memungkinkan atomicity transaksi yang dikomit dan memastikan bahwa data konsisten tingkat transaksi dapat dikueri.
Jenis layanan
Dengan diperkenalkannya columnar, PolarDB-X menyediakan jenis layanan tambahan selain instans utama dan instansi hanya baca. Jenis layanan tambahan ini dikenal sebagai instansi penyimpanan kolom hanya baca.
Instans Utama: Secara default, instans utama hanya memungkinkan Anda mengkueri data berorientasi baris. Namun, ketika dikombinasikan dengan instansi hanya baca, endpoint instans utama memungkinkan pemisahan baca/tulis yang transparan dan konsistensi kuat. Instans utama tetap mempertahankan kemampuan untuk langsung mengkueri data berorientasi kolom. Kemampuan routing cerdas dan kueri hibrida baris-kolom akan tersedia di masa mendatang.
Instansi hanya baca: Instansi hanya baca memungkinkan Anda mengkueri data hanya baca berorientasi baris dan data CCI. Instansi hanya baca memiliki endpoint hanya-baca khusus. Aplikasi dapat membuat koneksi terpisah ke endpoint hanya-baca ini untuk melakukan operasi baca. Dengan menghubungkan ke endpoint hanya-baca ini, aplikasi dapat mengelola operasi baca dan tulis secara independen.
Instansi penyimpanan kolom hanya baca: Instansi penyimpanan kolom hanya baca memungkinkan Anda mengkueri hanya data CCI. Instansi ini memiliki endpoint hanya-baca khusus. Aplikasi dapat membuat koneksi terpisah ke endpoint hanya-baca ini untuk melakukan operasi baca. Instansi ini hanya terdiri dari CN dan lebih efektif dari segi biaya.
Skenario
Fitur CCI PolarDB-X menyediakan solusi HTAP satu atap dan dapat digunakan dalam berbagai skenario bisnis.
Skenario yang memerlukan analisis data online real time dalam hitungan detik, seperti bisnis laporan real time.
Skenario gudang data yang bergantung pada kapasitas penyimpanan data volume besar PolarDB-X untuk mengagregasi berbagai sumber data hulu dan menggunakan PolarDB-X sebagai gudang data khusus.
Skenario komputasi berbasis ETL yang bergantung pada kemampuan komputasi CCI PolarDB-X yang andal dan fleksibel.
Fitur CCI PolarDB-X memenuhi kebutuhan skenario yang melibatkan TP dan AP, serta menyediakan solusi HTAP yang transparan dan efektif dari segi biaya berdasarkan OSS dan teknologi routing cerdas.
Uji performa
Untuk informasi tentang uji TPC Benchmark-H (TPC-H) PolarDB-X untuk Clustered Columnar Indexes (CCI) PolarDB-X, lihat Uji TPC-H untuk clustered columnar index (100 GB).