My Post (1)

Tối ưu hiệu suất (performance) Google BigQuery (PART 1)

Google BigQuery được phát hành phổ biến vào năm 2011 và kể từ đó đã được định vị như một dịch vụ lưu trữ và phân tích dữ liệu độc nhất. Kiến trúc serverless của BigQuery cho phép nó vận hành, triển khai ở quy mô lớn mà vẫn đảm bảo tốc độ cực kỳ nhanh trên các tập dữ liệu lớn. Ngoài ra, BigQuery còn sử dụng ngôn ngữ SQL dùng để thực hiện các câu truy vấn dữ liệu, điều này giúp cho những người mới tiếp cận không hề xa lạ với BigQuery nếu đã từng có kinh nghiệm sử dụng các loại database như MSSQL, MySQL, PostgreSQL. Kể từ khi thành lập, nhiều tính năng và cải tiến đã được thực hiện để cải thiện hiệu suất, bảo mật, độ tin cậy và giúp người dùng khám phá thông tin chi tiết dễ dàng hơn.

Nếu bạn từng biết hay tìm hiểu về BigQuery thì chắc hẳn là bạn cũng đã biết BigQuery là một data warehouse nổi tiếng, bạn có thể tham khảo đường link này để đọc trước khi vô bài viết phía dưới. 

Trong bài viết này, chúng ta sẽ tìm hiểu về cách để thiết kế BigQuery Schema để có thể đạt được hiệu quả tốt nhất khi sử dụng BigQuery. Đây là phần đầu tiên trong chuỗi tối ưu hóa hiệu quả sử dụng BigQuery.

1. Tổng quan về cấu trúc dạng bảng trong BigQuery

Trong BigQuery, các lược đồ được xác định ở dạng bảng dữ liệu có cấu trúc. Mỗi bảng mô tả đầy đủ thông tin bao gồm: tên cột kèm theo kiểu dữ liệu và mô tả; ngoài ra, còn có trạng thái của cột đó.

Kiểu dữ liệu có thể rất đơn giản, chẳng hạn như số nguyên, số thực; hoặc phức tạp hơn, như ARRAY hay STRUCT cho các giá trị lồng nhau và giá trị lặp lại.

Lược đồ bảng được chỉ định khi tải dữ liệu vào bảng hoặc khi tạo bảng trống. Ngoài ra, khi tải dữ liệu, bạn có thể sử dụng tính năng tự động phát hiện lược đồ để tự mô tả các định dạng dữ liệu nguồn như tệp xuất Avro, Parquet, ORC, Cloud Firestore hoặc Cloud Datastore. Mỗi bảng dữ liệu được xác định theo cách thủ công hoặc trong tệp JSON như được hiển thị.

2. Tổ chức bảng dữ liệu trong BigQuery

Khi chúng ta sử dụng những dạng relational-database thì để truy vấn ra một chuỗi thông tin, thông thường, ta hay sử dụng những phép “join” các bảng lại với nhau để có đủ lượng thông tin mong muốn. Nhưng khi sử dụng BigQuery, một data warehouse chuyên dùng để phân tích dữ liệu lớn, thì quan điểm của những người làm việc dữ liệu lớn đó chính là truy vấn nhanh và thao tác cập nhật hay xóa dữ liệu tốn ít chi phí nhất.

Với các kiểu dữ liệu đã đề cập ở trên, BigQuery có 2 loại dữ liệu mà chúng ta nên để ý, đó là ARRAY và STRUCT (REPEATED/NESTED). Đây là hai công cụ rất mạnh giúp chúng ta có thể thiết kế cấu trúc bảng dữ liệu một cách hợp lý mà vẫn đảm bảo được hai tiêu chí chính: truy vấn nhanh và “update, delete” dữ liệu tốn ít chi phí.

Bên cạnh đó, BigQuery cũng cung cấp hàm UNNEST giúp người sử dụng có thể “flatten” dữ liệu để có thể phục vụ mục đích phân tích dữ liệu

Với cách tổ chức lại cấu trúc dữ liệu bảng đáp ứng nhu cầu phân tích dữ liệu lớn, nhiều câu truy vấn dữ liệu lên tới 1PB trên BigQuery chỉ trong vài giây, hay nói cách khác tổ chức dữ lệu làm tăng hiệu quả sử dụng BigQuery

Đây chỉ mới là PART 1, sẽ còn nhiều ứng dụng thực tế để tăng hiệu quả sử dụng BigQuery sẽ tiếp tục được hé lộ ở những bài viết trong chuỗi seri này, cùng nhau theo dõi nhé!

Comments are closed.