BigQuery 101 — Phần 1: — 4 hình thức chuyển tải dữ liệu lên BigQuery

Ruby Duong
Google Cloud Vietnam
4 min readMay 14, 2023

Trước đây trong loạt bài viết về BigQuery , chúng ta đã xem xét kiến trúc tính toán và lưu trữ của BigQuery giúp cho kho dữ liệu này đạt được tốc độ phản hồi câu lệnh truy vấn cực kì nhanh.

Trong bài đăng này, chúng ta sẽ xem cách tải hoặc nhập dữ liệu vào BigQuery. Hãy bắt đầu!

Bring any data into BigQuery. Source: BigQuery public website

Trước khi bắt đầu, hãy xem xét sự khác biệt giữa tải dữ liệu vào BigQuery và truy vấn trực tiếp từ nguồn dữ liệu ngoài mà không tải vào BigQuery.

  • Nhập trực tiếp (Bảng được quản lý — Managed Tables): BigQuery có thể nhập trực tiếp các bộ dữ liệu từ nhiều định dạng khác nhau vào bộ lưu trữ gốc của nó. Bộ nhớ gốc BigQuery được Google quản lý hoàn toàn — điều này bao gồm sao chép, sao lưu, mở rộng kích thước, v.v.
  • Truy vấn không cần tải (Bảng bên ngoài — External Tables): Sử dụng truy vấn có liên kết là một trong các tùy chọn để truy vấn trực tiếp các nguồn dữ liệu bên ngoài mà không cần tải vào bộ lưu trữ BigQuery. Bạn có thể truy vấn trên các dịch vụ của Google như Google Sheets, Google Drive, Google Cloud Storage, Cloud SQL hoặc Cloud BigTable mà không phải nhập dữ liệu vào BigQuery.

Một điểm khác biệt chính là hiệu suất truy vấn nguồn dữ liệu ngoài có thể không tương đương với truy vấn dữ liệu trong bảng BigQuery gốc. Nếu ưu tiên tốc độ truy vấn, hãy tải dữ liệu vào BigQuery. Hiệu suất của truy vấn có liên kết phụ thuộc vào hiệu suất của công cụ lưu trữ bên ngoài thực sự chứa dữ liệu.

4 cách tải dữ liệu vào BigQuery

1. Chuyển tải theo dạng lô — Batch Loading

Với hình thức này, chúng ta load dữ liệu vào 1 BigQuery table theo một thao tác hoặc theo một lịch trình định kỳ. Muốn load dữ liệu định kỳ có thể sử dụng BigQuery Data Transfer Service, dịch vụ orchestration như Cloud Composer hoặc thiết lập một cron job.

Có những options cho batch loading:

  • Load jobs: load dữ liệu từ Google Cloud Storage hoặc từ file local bằng cách tạo 1 load job. Các format được hỗ trợ: Arvo, CSV, JSON, ORC và Parquet.
  • SQL: sử dụng câu lệnh LOAD DATA
  • BigQuery Data Transfer Service: tự động hóa việc load dữ liệu từ các ứng dụng của Google như Cloud Storage, Google Ads, Google Play, Youtube Channel,… và các ứng dụng của bên thứ ba như Amazon S3, Azure Blob Storage, Teradata, Amazon Redshift, Salesforce CRM, Adobe Analytics, Facebook Ads,…
  • BigQuery Storage Write API: cho phép ghi dữ liệu số lượng lớn trong 1 thao tác.

2. Chuyển tải theo dạng luồng — Streaming, có những options:

  • Storage Write API: hỗ trợ việc streaming dữ liệu đúng 1 lần (exactly-once delivery)
  • Dataflow: Sử dụng Dataflow với Apache Beam SDK để thiết lập 1 streaming pipeline đẩy data vào BigQuery
  • BigQuery Connector for SAP: cho phép nhân bản dữ liệu gần thời gian thực (near real-time data replication) từ SAP vào BigQuery

3. Tạo dữ liệu: dùng câu lệnh SQL để tạo dữ liệu và lưu trữ kết quả ở BigQuery

  • Dùng câu lệnh DML (data manipulation language) để insert dữ liệu vào 1 table có sẵn hoặc lưu kết quả câu lệnh thành 1 table mới.
  • Dùng câu lệnh CREATE TABLE … AS
  • Chạy câu lệnh và lưu kết quả vào 1 table.

4. Chuyển tải dữ liệu bằng một giải pháp bên thứ ba như Informatica, Fivetran,…

Mind map:

Đây là bản đồ nhanh với các tùy chọn để đưa dữ liệu của bạn vào BigQuery (không phải là danh sách đầy đủ). Nhấn vào đây để xem hình ảnh với độ phân giải tốt hơn.

Trong bài viết tiếp theo, chúng ta tìm hiểu về các yếu tố cần cân nhắc khi tải dữ liệu vào BigQuery để tìm ra hình thức phù hợp nhất cho dữ liệu của doanh nghiệp.

👏 và Comment vào bài viết chủ đề nào bạn muốn được tìm hiểu thêm về Google Cloud Platform!

💻 Hãy follow và đón đọc cái bài viết tiếp theo ở channel Google Cloud Vietnam!

📚 Đã sử dụng Google Cloud và muốn chia sẻ về trải nghiệm sử dụng của bạn hoặc công ty của bạn, hãy viết bài và đóng góp vào channel!

#googlecloud #bigquery #googlecloudvietnam #gcp

--

--