Phân tích dữ liệu rất quan trọng trong bất kỳ công ty nào vì bạn có thể xem những gì đã xảy ra trong quá khứ để có thể đưa ra quyết định thông minh hoặc thậm chí dự đoán các hành động trong tương lai bằng cách sử dụng dữ liệu hiện có.
Việc phân tích một lượng lớn dữ liệu có thể khó và bạn cần phải sử dụng nhiều hơn một công cụ cơ sở dữ liệu để xử lý khối lượng công việc OLTP và OLAP. Trong blog này, chúng ta sẽ xem HeatWave là gì và nó có thể giúp bạn như thế nào trong công việc này.
HeatWave là gì?
HeatWave là một công cụ tích hợp mới cho Dịch vụ Cơ sở dữ liệu MySQL trên Đám mây. Nó là một công cụ xử lý truy vấn phân tán, có thể mở rộng, không dùng chung, trong bộ nhớ, cột, được thiết kế để thực hiện nhanh các truy vấn phân tích. Theo tài liệu chính thức, nó tăng tốc hiệu suất của MySQL lên 400 lần cho các truy vấn phân tích, mở rộng ra hàng nghìn lõi và nhanh hơn 2,7 lần với chi phí khoảng một phần ba so với các đối thủ cạnh tranh trực tiếp. Dịch vụ cơ sở dữ liệu MySQL, với HeatWave, là dịch vụ duy nhất để chạy khối lượng công việc OLTP và OLAP trực tiếp từ cơ sở dữ liệu MySQL.
Cách thức hoạt động của HeatWave
Cụm HeatWave bao gồm một nút Hệ thống DB MySQL và hai hoặc nhiều nút HeatWave. Nút Hệ thống MySQL DB có một plugin HeatWave chịu trách nhiệm quản lý cụm, tải dữ liệu vào cụm HeatWave, lập lịch truy vấn và trả về kết quả truy vấn cho Hệ thống MySQL DB. Các nút HeatWave lưu trữ dữ liệu trong bộ nhớ và xử lý các truy vấn phân tích. Mỗi nút HeatWave chứa một phiên bản của HeatWave.
Số lượng nút HeatWave cần thiết tùy thuộc vào kích thước dữ liệu của bạn và lượng nén đạt được khi tải dữ liệu vào cụm HeatWave. Chúng ta có thể thấy kiến trúc của sản phẩm này trong hình ảnh sau:
Như bạn có thể thấy, người dùng không truy cập trực tiếp vào cụm HeatWave. Các truy vấn đáp ứng các điều kiện tiên quyết nhất định sẽ tự động được giảm tải từ Hệ thống MySQL DB sang cụm HeatWave để xử lý nhanh hơn và kết quả được trả về nút Hệ thống MySQL DB và sau đó đến ứng dụng hoặc ứng dụng MySQL đã phát hành truy vấn.
Cách sử dụng
Để kích hoạt tính năng này, bạn cần truy cập Trang web quản lý đám mây Oracle, truy cập Hệ thống MySQL DB hiện có (hoặc tạo một hệ thống mới) và thêm Cụm Analitycs. Ở đó bạn có thể chỉ định loại cụm và số lượng nút. Bạn có thể sử dụng tính năng Đếm nút ước tính để biết số lượng cần thiết dựa trên khối lượng công việc của bạn.
Việc tải dữ liệu vào một cụm HeatWave yêu cầu chuẩn bị các bảng trên Hệ thống MySQL DB và thực hiện các thao tác tải bảng.
Chuẩn bị Bảng
Việc chuẩn bị bảng bao gồm việc sửa đổi định nghĩa bảng để loại trừ một số cột nhất định, xác định mã hóa cột chuỗi, thêm khóa vị trí dữ liệu và chỉ định HeatWave (RAPID) làm công cụ phụ cho bảng, vì InnoDB là công cụ chính.
Để xác định RAPID làm công cụ phụ cho một bảng, hãy chỉ định tùy chọn bảng SECONDARY_ENGINE trong câu lệnh CREATE TABLE hoặc ALTER TABLE:
mysql> CREATE TABLE orders (id INT) SECONDARY_ENGINE = RAPID;
or
mysql> ALTER TABLE orders SECONDARY_ENGINE = RAPID;
Đang tải dữ liệu
Việc tải một bảng vào một cụm HeatWave yêu cầu thực hiện thao tác ALTER TABLE với từ khóa SECONDARY_LOAD.
mysql> ALTER TABLE orders SECONDARY_LOAD;
Khi một bảng được tải, dữ liệu được phân chia theo chiều ngang và được phân phối giữa các nút HeatWave. Sau khi một bảng được tải, các thay đổi đối với dữ liệu của bảng trên nút Hệ thống MySQL DB sẽ tự động được truyền đến các nút HeatWave.
Ví dụ
Đối với ví dụ này, chúng tôi sẽ sử dụng các thứ tự bảng:
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
Bạn có thể loại trừ các cột mà bạn không muốn tải vào HeatWave:
mysql> ALTER TABLE orders MODIFY `O_COMMENT` varchar(79) NOT NULL NOT SECONDARY;
Bây giờ, xác định RAPID là SECONDARY_ENGINE cho bảng:
mysql> ALTER TABLE orders SECONDARY_ENGINE RAPID;
Đảm bảo rằng bạn đã thêm thông số SECONDARY_ENGINE vào định nghĩa bảng:
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin SECONDARY_ENGINE=RAPID
Và cuối cùng, tải bảng vào HeatWave:
mysql> ALTER TABLE orders SECONDARY_LOAD;
Bạn có thể sử dụng GIẢI THÍCH để kiểm tra xem nó có đang sử dụng đúng công cụ hay không. Bạn sẽ thấy một cái gì đó như thế này:
Extra:Sử dụng where; Sử dụng tạm thời; Sử dụng tệp tin; Sử dụng công cụ phụ RAPID
Trên trang web chính thức của MySQL, bạn có thể thấy so sánh giữa thực thi bình thường và sử dụng HeatWave:
Thực thi HeatWave
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)
Thực hiện Bình thường
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)
Như bạn có thể thấy, có một sự khác biệt quan trọng về thời gian của truy vấn, ngay cả trong một truy vấn đơn giản. Để biết thêm thông tin, bạn có thể tham khảo tài liệu chính thức.
Kết luận
Một Cơ sở dữ liệu MySQL duy nhất có thể được sử dụng cho cả Ứng dụng OLTP và Analytics. Nó tương thích 100% với MySQL tại chỗ, vì vậy bạn có thể giữ khối lượng công việc OLTP của mình tại chỗ và tải khối lượng công việc phân tích của bạn xuống HeatWave mà không có thay đổi trong ứng dụng của bạn hoặc thậm chí sử dụng nó trực tiếp trên Đám mây Oracle để cải thiện hiệu suất MySQL của bạn cho Analytics mục đích.