Google BigQuery là một kho dữ liệu (data warehouse) trên nền tảng điện toán đám mây của Google (Google Cloud) cho phép bạn chạy các truy vấn siêu nhanh trên các tập dữ liệu lớn. BigQuery hoạt động dưới dạng nền tảng là một dịch vụ (Platform as a Service – PaaS) trên hạ tầng của Google nên được thừa hưởng nhiều công nghệ hiện đại và tiên tiến. BigQuery hiện nay đã trở thành một trong những data warehouse được sử dụng nhiều nhất trên thế giới. Vì vậy, trong sự kiện lần này, diễn giả tại Kyanon Digital muốn chia sẻ để các bạn hệ thống lại được tổng quan kiến thức về BigQuery và cách sử dụng data warehouse trong công việc lập trình. Cùng lắng nghe những chia sẻ đến từ bạn Nhat Nguyen, Software Engineer đến từ Chapter NoPy tại Kyanon Digital để cùng tìm hiểu về:
- Sự khác nhau giữa database truyền thống và data warehouse.
- Định nghĩa về BigQuery.
- Cấu trúc của BigQuery.
- Phương thức chuyển dữ liệu vào data warehouse: ETL và ELT.
- Bảng giá của BigQuery.
- Cách sử dụng BigQuery khi kết hợp với Google Console.
- Tích hợp BigQuery với các thư viện client.
1. Database truyền thống và data warehouse.
Relational Database | Data warehouse |
Ứng dụng xử lý giao dịch trực tuyến (Online Transaction Processing Applications – OLTP) | Ứng dụng xử lý phân tích dữ liệu trực tuyến (Online Analytical Processing – OLAP) |
Dữ liệu được bổ sung, sửa đổi và xóa đi trên cùng một bản ghi. | Dữ liệu được cập nhật định kỳ theo từng đợt. |
Lưu trữ và khôi phục dữ liệu. | Phân tích dữ liệu. |
Dữ liệu được lưu trữ và sắp xếp theo hàng. | Dữ liệu được lưu trữ theo cột. |
→ Databases cho thấy tình trạng của hệ thống tại thời điểm hiện tại, còn data warehouse có thể cung cấp cả những dữ liệu trong quá khứ có thể hữu ích trong việc phân tích dữ liệu.
2. Định nghĩa về BigQuery
BigQuery là một kho dữ liệu (data warehouse) của Google và Machine Learning cũng được sử dụng để tạo nên kho dữ liệu này. Đây là một nền tảng không máy chủ (serverless), có mức giá hợp lý và có khả năng mở rộng cao.
SQL kết hợp với cấu trúc hạ tầng mạnh mẽ của Google giúp người dùng quản lý, xem và thực hiện các truy xuất dữ liệu từ nhiều nguồn khác nhau.
Bạn có thể xuất dữ liệu phiên hoạt động và dữ liệu lượt truy cập từ tài khoản Google Analytics 360 sang BigQuery, sau đó sử dụng cú pháp giống như SQL để truy vấn tất cả dữ liệu trong Analytics. Sử dụng Machine Learning có thể giúp các Data Scientist và Data Analyst xây dựng và sử dụng được nhiều module bằng những cú pháp SQL đơn giản. Ngoài ra, BigQuery được sử dụng rộng rãi bởi các công ty: UPS, Twitter, và Dow Jones…
Những lợi ích mà BigQuery đem lại:
- Tự động phân phối dữ liệu
- Tăng khả năng tiếp cận các insights
- Xây dựng nền tảng cho trí tuệ nhân tạo (AI)
- Chuẩn bị các insights đúng thời điểm
- Bảo mật dữ liệu kinh doanh
- Đơn giản hóa quy trình dữ liệu hoạt động
3. Cấu trúc của BigQuery
Cấu trúc của BigQuery gồm có 2 phần: Lưu trữ và Tính toán.
Dữ liệu đưa vào được chia làm 2 loại: dữ liệu được đưa vào liên tục trong một luồng dữ liệu (streaming ingest) và dữ liệu được đưa vào theo một khối (free bulk loading). Hai loại dữ liệu này tách biệt với nhau nên có thể scale up chúng một cách độc lập tùy theo nhu cầu sử dụng và giúp kiểm soát phần coding rõ ràng hơn.
Các loại định dạng dữ liệu đầu vào mà BigQuery có thể đọc được: JSON (đã nén), CSV (đã nén), JSON, CSV, Parquet/ORC, Avro (chưa nén), Avro (đã nén).
4. Phương thức vận chuyển data ETL và ELT
ETL (Extract, Transform, Load) và ELT (Extract, Load, Transform) đều là các phương pháp tích hợp dữ liệu giúp chuyển dữ liệu từ một nguồn bên ngoài vào data warehouse.
ETL là tên viết tắt của Extract, Transform và Load. Trong hệ thống Data Warehouse, một công cụ ETL trích xuất dữ liệu từ các hệ thống nguồn RDBMS khác nhau sau đó chuyển đổi dữ liệu như áp dụng các biến đổi dữ liệu ( tính toán, nối chuỗi v.v. ) và sau đó tải dữ liệu vào hệ thống Data Warehouse. ETL là những luồng từ “nguồn” tới ”đích”. Trong quá trình ETL, engine chuyển đổi sẽ xử lý mọi thay đổi dữ liệu. Quá trình ETL bắt buộc cần quá trình “Transform” hoàn tất trước ki dữ liệu được lưu (Load) vào kho. Khi kích thước dữ liệu tăng lên, thời gian chuyển đổi cũng tăng theo.
ELT là một phương pháp khác để tiếp cận công cụ chuyển động dữ liệu trong data warehouse. Thay vì chuyển đổi dữ liệu trước khi lưu vào kho, ELT cho phép người sử dụng lưu trực tiếp dữ liệu thô (Raw Data) vào kho. Nhờ sức mạnh xử lý của Google mà ELT có thể sử dụng cho lượng data rất lớn mà không ảnh hưởng quá nhiều về hiệu suất.
BigQuery chú trọng sử dụng ELT hơn ETL bởi vì ELT dễ sử dụng hơn, giảm bớt khối lượng công việc cho Data Engineer.
Cách import data mới vào table của BigQuery.
Khi bấm vào New Project, chúng ta phải tạo dataset, bao gồm nhiều table ở bên trong. Data có thể lấy từ nhiều nguồn khác nhau.
Table của dataset gồm 2 loại: Native và External. Native table sẽ import data vào BigQuery và cho phép bạn query từ đó, dung lượng lưu trữ được sử dụng nhưng bù lại cho sự tối ưu về thời gian query. Trong khi đó, data trong các External tables được lưu trên các sources khác như Cloud Storage, Google Sheets,… lúc này BigQuery đọc data trực tiếp từ các sources nên không tốn dung lượng lưu trữ, bù lại thời gian query lâu.
5. Pricing
Định giá phân tích (Analysis pricing) là chi phí để xử lý các truy vấn, bao gồm truy vấn SQL, hàm do người dùng xác định, tập lệnh và một số câu lệnh ngôn ngữ thao tác dữ liệu (DML) và ngôn ngữ định nghĩa dữ liệu (DDL).
Định giá bộ nhớ (Storage pricing) là chi phí để lưu trữ dữ liệu mà bạn tải vào BigQuery.
6. Phân tích mô hình định giá
Định giá dựa trên nhu cầu (on demand pricing): với mô hình định giá này, phí được tính theo số lượng bytes được xử lý cho mỗi lần query. 1 TB dữ liệu query xử lý đầu tiên vào mỗi tháng sẽ được miễn phí.
Định giá thống nhất (flat-rate pricing): với mô hình định giá này, khi mua slots, cũng chính là các CPUs ảo (virtual CPUs), là đang mua khả năng xử lý chuyên dụng để có thể sử dụng trong việc chạy query.
7. Định giá lưu trữ
Định giá lưu trữ là chi phí để lưu trữ data load vào BigQuery.
Lưu trữ ngắn hạn (Active storage) bao gồm table và table partition đã được chỉnh sửa trong vòng 90 ngày.
Lưu trữ lâu dài (Long-term storage) là table và table partition không được chỉnh sửa trong vòng 90 ngày liên tiếp.
Miễn phí 10GB đầu/ tháng.
8. Tài khoản Dịch vụ (Service Account)
Nếu bạn muốn tích hợp BigQuery vào một công cụ thứ ba, chúng ta phải sử dụng một tài khoản Dịch vụ để hệ thống nhận diện chúng ta là key pair để kết nối. Đây là tài khoản đặc biệt được sử dụng bởi một ứng dụng hoặc phần mềm chứ không phải một người.
Tài khoản dịch vụ có thể thực hiện các lệnh gọi API được ủy quyền với tư cách là tài khoản dịch vụ hoặc là người dùng Google Workspace, Cloud Identity thông qua ủy quyền trên toàn miền.
Phần Q&A
Q: Có một số tips để cho query bên SQL chạy nhanh hơn, vậy mình có thể làm tương tự với BigQuery không ? Vì câu query viết rất giống như câu query SQL.
A: Đúng là câu query khi dùng BigQuery rất giống câu query khi dùng Relational Database (RD), nhưng do kiến trúc và thiết kế khác nhau, BigQuery không có tối ưu cho việc join giữa các bảng, ưu tiên cho các dạng denormalize (tích hợp nhiều bảng vào trong một)… nên một số kỹ thuật query bên RD khi sang BigQuery sẽ khác nhiều chút.
Q: Bạn có thể nhắc lại sự khác nhau giữa ETL và ELT không?
A: ETL bắt buộc bạn phải transform dữ liệu trước khi load vào database. Việc transform là công việc của data engineer. Ngược lại, đối với ELT thì data engineer không cần phải làm công việc transform nữa vì data warehouse sẽ tự động transform phần dữ liệu đó.
Q: Điểm mạnh của BigQuery so với các data warehouse khác là gì?
A: BigQuery có thể tự sửa chữa (repair) các source data lộn xộn trước khi load vào hệ thống. Đó là điểm mạnh của BigQuery so với các data warehouse khác.
Qua buổi ArchersTalk này, Kyanon Digital hy vọng những chia sẻ trên sẽ giúp bạn hiểu thêm về Google BigQuery. Cảm ơn bạn Nhat Nguyen đã chia sẻ những thông tin bổ ích cũng như kinh nghiệm cá nhân đến mọi người, góp phần phát triển văn hóa chia sẻ kiến thức tại Kyanon Digital.
Nếu bạn nghĩ những chia sẻ này có thể giúp ích cho bạn bè hoặc đồng nghiệp, đừng quên nhấn nút Share bên dưới nhé!
—————————-
ArchersTalk là chuỗi sự kiện chia sẻ kiến thức liên quan đến lĩnh vực công nghệ và lập trình của Kyanon Digital, nơi các thành viên Kyanon Digital (Archers) sẽ chia sẻ những kiến thức thực tiễn trong quá trình làm việc cũng như những kinh nghiệm đúc kết được để giúp các bạn còn lại trong team, trong nội bộ công ty hoặc các bạn bên ngoài công ty có quan tâm sẽ có những góc nhìn và tư duy mới hơn để ứng dụng vào công việc hiện tại của mình.