Analisis Data penting di perusahaan mana pun karena Anda dapat melihat apa yang terjadi di masa lalu untuk dapat membuat keputusan yang cerdas atau bahkan memprediksi tindakan di masa mendatang menggunakan data yang ada.
Analisis sejumlah besar data bisa jadi sulit dan Anda harus menggunakan lebih dari satu mesin database, untuk menangani beban kerja OLTP dan OLAP. Di blog ini, kita akan melihat apa itu HeatWave, dan bagaimana hal itu dapat membantu Anda dalam tugas ini.
Apa itu Gelombang Panas?
HeatWave adalah mesin terintegrasi baru untuk Layanan Database MySQL di Cloud. Ini adalah mesin pemrosesan kueri terdistribusi, skalabel, tidak dibagikan, dalam memori, berbentuk kolom, yang dirancang untuk eksekusi cepat kueri analitik. Menurut dokumentasi resmi, ini mempercepat kinerja MySQL hingga 400X untuk kueri analitik, menskalakan hingga ribuan core, dan 2,7X lebih cepat sekitar sepertiga dari biaya pesaing langsung. Layanan Database MySQL, dengan HeatWave, adalah satu-satunya layanan untuk menjalankan beban kerja OLTP dan OLAP langsung dari database MySQL.
Cara Kerja Gelombang Panas
Kluster HeatWave mencakup node Sistem DB MySQL dan dua atau lebih node HeatWave. Node Sistem DB MySQL memiliki plugin HeatWave yang bertanggung jawab untuk manajemen cluster, memuat data ke dalam cluster HeatWave, penjadwalan kueri, dan mengembalikan hasil kueri ke Sistem DB MySQL. Node HeatWave menyimpan data dalam memori dan memproses kueri analitik. Setiap node HeatWave berisi turunan dari HeatWave.
Jumlah node HeatWave yang diperlukan bergantung pada ukuran data Anda dan jumlah kompresi yang dicapai saat memuat data ke dalam cluster HeatWave. Kita dapat melihat arsitektur produk ini pada gambar berikut:
Seperti yang Anda lihat, pengguna tidak mengakses klaster HeatWave secara langsung. Kueri yang memenuhi prasyarat tertentu secara otomatis diturunkan dari Sistem DB MySQL ke klaster HeatWave untuk pemrosesan yang dipercepat, dan hasilnya dikembalikan ke node Sistem DB MySQL lalu ke klien MySQL atau aplikasi yang mengeluarkan kueri.
Cara menggunakannya
Untuk mengaktifkan fitur ini, Anda perlu mengakses Situs Manajemen Cloud Oracle, mengakses Sistem DB MySQL yang ada (atau membuat yang baru), dan menambahkan Cluster Analitycs. Di sana Anda dapat menentukan jenis cluster dan jumlah node. Anda dapat menggunakan fitur Perkirakan Jumlah Node untuk mengetahui jumlah yang diperlukan berdasarkan beban kerja Anda.
Memuat data ke dalam klaster HeatWave memerlukan penyiapan tabel di Sistem DB MySQL dan menjalankan operasi pemuatan tabel.
Menyiapkan Tabel
Menyiapkan tabel melibatkan modifikasi definisi tabel untuk mengecualikan kolom tertentu, menentukan pengkodean kolom string, menambahkan kunci penempatan data, dan menentukan HeatWave (RAPID) sebagai mesin sekunder untuk tabel, karena InnoDB adalah yang utama.
Untuk mendefinisikan RAPID sebagai mesin sekunder untuk tabel, tentukan opsi tabel SECONDARY_ENGINE dalam pernyataan CREATE TABLE atau ALTER TABLE:
mysql> CREATE TABLE orders (id INT) SECONDARY_ENGINE = RAPID;
or
mysql> ALTER TABLE orders SECONDARY_ENGINE = RAPID;
Memuat Data
Memuat tabel ke dalam klaster HeatWave memerlukan eksekusi operasi ALTER TABLE dengan kata kunci SECONDARY_LOAD.
mysql> ALTER TABLE orders SECONDARY_LOAD;
Saat sebuah tabel dimuat, data diiris secara horizontal dan didistribusikan di antara node HeatWave. Setelah tabel dimuat, perubahan pada data tabel pada node MySQL DB System secara otomatis disebarkan ke node HeatWave.
Contoh
Untuk contoh ini, kita akan menggunakan urutan tabel:
mysql> SHOW CREATE TABLE orders\G
*************************** 1. row ***************************
Table: orders
Create Table: CREATE TABLE `orders` (
`O_ORDERKEY` int NOT NULL,
`O_CUSTKEY` int NOT NULL,
`O_ORDERSTATUS` char(1) COLLATE utf8mb4_bin NOT NULL,
`O_TOTALPRICE` decimal(15,2) NOT NULL,
`O_ORDERDATE` date NOT NULL,
`O_ORDERPRIORITY` char(15) COLLATE utf8mb4_bin NOT NULL,
`O_CLERK` char(15) COLLATE utf8mb4_bin NOT NULL,
`O_SHIPPRIORITY` int NOT NULL,
`O_COMMENT` varchar(79) COLLATE utf8mb4_bin NOT NULL,
PRIMARY KEY (`O_ORDERKEY`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
Anda dapat mengecualikan kolom yang tidak ingin Anda muat ke HeatWave:
mysql> ALTER TABLE orders MODIFY `O_COMMENT` varchar(79) NOT NULL NOT SECONDARY;
Sekarang, tentukan RAPID sebagai SECONDARY_ENGINE untuk tabel:
mysql> ALTER TABLE orders SECONDARY_ENGINE RAPID;
Pastikan Anda memiliki parameter SECONDARY_ENGINE yang ditambahkan dalam definisi tabel:
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin SECONDARY_ENGINE=RAPID
Dan terakhir, muat tabel ke HeatWave:
mysql> ALTER TABLE orders SECONDARY_LOAD;
Anda dapat menggunakan EXPLAIN untuk memeriksa apakah mesin yang digunakan sudah benar. Anda akan melihat sesuatu seperti ini:
Ekstra:Menggunakan where; Menggunakan sementara; Menggunakan filesort; Menggunakan mesin sekunder RAPID
Di situs resmi MySQL, Anda dapat melihat perbandingan antara eksekusi normal dan menggunakan HeatWave:
Eksekusi Gelombang Panas
mysql> SELECT O_ORDERPRIORITY, COUNT(*) AS ORDER_COUNT FROM orders
WHERE O_ORDERDATE >= DATE '1994-03-01' GROUP BY O_ORDERPRIORITY
ORDER BY O_ORDERPRIORITY;
+-----------------+-------------+
| O_ORDERPRIORITY | ORDER_COUNT |
+-----------------+-------------+
| 1-URGENT | 2017573 |
| 2-HIGH | 2015859 |
| 3-MEDIUM | 2013174 |
| 4-NOT SPECIFIED | 2014476 |
| 5-LOW | 2013674 |
+-----------------+-------------+
5 rows in set (0.04 sec)
Eksekusi Normal
mysql> SELECT O_ORDERPRIORITY, COUNT(*) AS ORDER_COUNT FROM orders
WHERE O_ORDERDATE >= DATE '1994-03-01' GROUP BY O_ORDERPRIORITY
ORDER BY O_ORDERPRIORITY;
+-----------------+-------------+
| O_ORDERPRIORITY | ORDER_COUNT |
+-----------------+-------------+
| 1-URGENT | 2017573 |
| 2-HIGH | 2015859 |
| 3-MEDIUM | 2013174 |
| 4-NOT SPECIFIED | 2014476 |
| 5-LOW | 2013674 |
+-----------------+-------------+
5 rows in set (8.91 sec)
Seperti yang Anda lihat, ada perbedaan penting dalam waktu kueri, bahkan dalam kueri sederhana. Untuk informasi lebih lanjut, Anda dapat merujuk ke dokumentasi resmi.
Kesimpulan
Satu Database MySQL dapat digunakan untuk Aplikasi OLTP dan Analytics. Ini 100% kompatibel dengan MySQL di tempat, sehingga Anda dapat menyimpan beban kerja OLTP Anda di tempat dan memindahkan beban kerja analitik Anda ke HeatWave tanpa perubahan di aplikasi Anda, atau bahkan menggunakannya langsung di Oracle Cloud untuk meningkatkan kinerja MySQL Anda untuk Analytics tujuan.