Trong cơ sở dữ liệu, Materialized Views là một đối tượng trong cơ sở dữ liệu, nó chứa các kết quả của một truy vấn tính toán trước. Materialized Views đã xuất hiện khá lâu, lần đầu tiên xuất hiện trên Oracle 8i Database và sau đó phổ biến trên hầu hết các cơ sở dữ liệu mã nguồn mở. Materialized views thường được sử dụng để hỗ trợ công việc BI và OLAP. Bằng cách tính toán trước các truy vấn phổ biến và lưu kết quả vào bộ nhớ đệm nhằm giảm CPU và IO cũng như giảm thời gian chạy.
Một ví dụ điển hình cho việc sử dụng Materialized views là dữ liệu giao dịch bán lẻ. Hầu hết người dùng không chi tiết của dữ liệu giao dịch. Thay vào đó, họ muốn xem dữ liệu giao dịch được tổng hợp theo chiều cụ thể, như theo cửa hàng, sản phẩm, ngày tháng hoặc tất cả. Khi bạn đang làm việc với hàng tỷ bản ghi, việc tính toán kiểu đó trên hàng trăm hoặc hàng nghìn bản ghi sẽ khiến truy vấn có thể cực kỳ đắt từ góc độ máy tính và IO. Materialized views có thể tổng hợp trước các truy vấn kinh doanh phổ biến đó và lưu kết quả vào bộ nhớ cache. Khi làm như vậy, tổng doanh thu đơn giản theo cửa hàng, theo ngày không cần phải quét tất cả dữ liệu thô để tính toán tập hợp kết quả. Thay vào đó, nó sử dụng Materialized views để truy xuất dữ liệu được tính toán trước mà nó cần để đáp ứng truy vấn và điều này có thể làm giảm đáng kể lượng dữ liệu được xử lý bởi bất kỳ truy vấn nhất định.
>>Đọc thêm:
Khoá học Google BigQuery for Data Analysis (Beginner)
Khoá học Truy vấn và thao tác dữ liệu (SQL) từ cơ bản đến nâng cao
LỘ TRÌNH TRỞ THÀNH DATA ENGINEER CHO NGƯỜI MỚI BẮT ĐẦU
DATA ENGINEER LÀ GÌ? CÔNG VIỆC CHÍNH CỦA DATA ENGINEER? CÁC KỸ NĂNG CẦN THIẾT
Mục lục
Sử dụng BigQuery Materialized Views
Trong ví dụ dưới đây, Inda sử dụng dữ liệu của bảng Orders TPCH để thấy được những lợi ích mà Materialized views mang lại trên khối lượng công việc rất lớn của BI. Bảng Orders bên dưới có kích thước 1,5TB và không được phân vùng và không được phân cụm. Truy vấn đơn giản dưới đây lấy ra tổng doanh số bán hàng theo ngày, đây là một câu hỏi khá phổ biến mà nhiều doanh nghiệp đều muốn biết.
Từ BigQuery console, chúng ta có thể thấy rằng truy vấn đã quét 436GB dữ liệu và mất 8,4 giây để chạy. Hãy xem quá trình thực hiện công việc.
Phần lớn thời gian dành cho truy vấn là quét 29 tỷ bản ghi và tổng hợp lại. Bước đầu tiên đó chiếm phần lớn thời gian… chúng ta hãy xem tác động mà một materialized view mang lại đối với truy vấn này.
Chúng tôi lấy truy vấn ban đầu và tạo một materialized view từ nó. Tiếp theo, chạy lại truy vấn ban đầu. Hãy nhớ rằng, ưu điểm chính của materialized view là quá trình tối ưu hóa lại quá trình truy vấn để tận dụng lợi thế của nó.
Truy vấn ban đầu hiện chạy chỉ mất 2,3 giây và chỉ xử lý 2,5 MB dữ liệu! So sánh điều đó với truy vấn ban đầu cần quét gần 500GB. Các chỉ số thực hiện công việc tốt hơn rất nhiều.
Bây giờ phần lớn truy vấn được dành để thực hiện ghi kết quả vào bảng tạm thời. Điều tuyệt vời nhất là bạn không phải làm mới dữ liệu khi sử dụng materialized view với BigQuery! BigQuery tự động thực hiện công việc nặng nhọc đó cho bạn. Khi dữ liệu của bạn thay đổi, BigQuery sẽ làm mới dữ liệu này trên cơ sở dữ liệu một cách tự động, do đó bạn không phải kích hoạt làm mới theo cách thủ công.
Hãy hiểu rằng đây là một ví dụ rất đơn giản nhưng nó cho thấy sức mạnh mà các materialized view trong BigQuery mang lại về hiệu suất cũng như làm cho các truy vấn của bạn hiệu quả hơn nhiều.
Khi nào nên sử dụng BigQuery Materialized Views?
Để tận dụng tối đa các materialized view, cần phải tiến hành phân tích kỹ lưỡng về các câu truy vấn của người dùng để xác định các chỉ số tốt nhất cần thực hiện để tối ưu hóa khối lượng công việc của bạn. Thông thường các bảng dữ kiện lớn hoặc các bảng lớn khác thường xuyên được tính toán bằng các hàm tổng hợp như avg, sum, min, max hoặc các bảng cần tính toán thực sự phức tạp là những bảng cần thiết để tối ưu với materialized view . Các công việc ETL tổng hợp dữ liệu cũng là những ứng cử viên, cũng như một số logic của chúng có thể được tối ưu bằng một materialized view.
>>Đọc thêm:
Khoá học Google BigQuery for Data Analysis (Beginner)
Khoá học Truy vấn và thao tác dữ liệu (SQL) từ cơ bản đến nâng cao
LỘ TRÌNH TRỞ THÀNH DATA ENGINEER CHO NGƯỜI MỚI BẮT ĐẦU
DATA ENGINEER LÀ GÌ? CÔNG VIỆC CHÍNH CỦA DATA ENGINEER? CÁC KỸ NĂNG CẦN THIẾT
Tìm hiểu thêm về BigQuery Materialized Views
https://cloud.google.com/bigquery/docs/materialized-views
https://cloud.google.com/bigquery/docs/materialized-views-best-practices
https://cloud.google.com/bigquery/docs/materialized-views-faq