×

Bài viết này là bản dịch Tiếng Việt của bài đã đăng trên Google Cloud Blog:”Make “Streaming data from Cloud Storage into BigQuery using Cloud Functions“.

Như chúng ta đã biết, việc  sử dụng Cloud Storage của Google Cloud Platform (GCP) giúp chúng ta lưu trữ dữ liệu của mình một cách an toàn và dễ dàng tích hợp vào các ứng dụng. Để phân tích theo thời gian thực các đối tượng Cloud Storage, bạn có thể sử dụng sản phẩm của GCP là  BigQuery. Có rất nhiều các phương pháp để truyền dữ liệu từ Cloud Storage vào BigQuery. Chúng tôi giới thiệu giải pháp mới để giúp bạn truyền dữ liệu nhanh chóng vào BigQuery từ Cloud Storage, cụ thể là cách truyền các đối tượng mới được tạo trong Cloud Storage sang BigQuery liên tục bằng cách sử dụng Cloud Functions.

Sử dụng Cloud Functions cho phép bạn tự động hóa quá trình sao chép các đối tượng vào BigQuery để phân tích nhanh, cho phép bạn truy cập gần thời gian thực vào dữ liệu được tải lên Cloud Storage. Điều này có nghĩa là bạn có thể nhận được thông tin tốt hơn nhanh hơn và phản hồi nhanh hơn với các sự kiện đang diễn ra trong doanh nghiệp của bạn.

Cloud Functions là nền tảng tính toán serverless theo sự kiện, cung cấp khả năng mở rộng tự động, tính sẵn sàng cao và khả năng chịu lỗi cao. Truyền dữ liệu bằng Cloud Functions cho phép bạn kết nối và mở rộng các dịch vụ GCP khác, trong khi chỉ phát sinh chi phí  khi ứng dụng của bạn đang chạy.

Lưu ý rằng chúng ta  cũng có thể truyền dữ liệu từ Cloud Storage vào BigQuery bằng Cloud Dataflow (Cloud Dataflow sử dụng Apache Beam framework)

Tuy nhiên, nếu bạn không thông thạo API Beam của Apache và bạn gặp khó khăn khi thu thập các file  mà không xem xét windowing hoặc biến đổi phức tạp, chẳng hạn như truyền trực tiếp các file nhỏ vào các bảng, thì trong trường hợp này Cloud Function chính là một giải pháp  đơn giản và hiệu quả.

Giải pháp dùng Cloud Functions này hoạt động như thế nào?

Sơ đồ kiến trúc dưới đây minh họa các thành phần và flow của một streaming pipeline  được tạo bằng Cloud Functions. Pipeline này giả định rằng bạn đang tải lên các files JSON vào Cloud Storage, đối với định dạng file khác thì ta sẽ phải thực hiện một số thay đổi nhỏ.

Google Cloud Functions solution

Trong Step 1  các file JSON chưa dữ liệu được tải lên Cloud Storage. Mỗi khi một file mới được thêm vào bucket FILES_SOURCE,  hàm  streaming Cloud Function được kích hoạt. Hàm này phân tích dữ liệu, truyền các luồng (flow) vào BigQuery (Step 3), ghi log  trạng thái thu thập vào Cloud Firestore để tránh lặp lại (Step 4) và gửi message tới Cloud Pub/Sub, tùy từng trường hợp error hoặc success (Step 5). Cuối cùng, tuỳ vào trường hợp error hoặc success mà Cloud Functions sẽ di chuyển file JSON từ  bucket gốc tới bucket FILES_ERROR  hoặc bucket  FILES_SUCCESS (Step 6).   

Sử dụng Cloud Functions có nghĩa là kiến trúc này không chỉ đơn giản mà còn linh hoạt và mạnh mẽ. Ngoài khả năng mở rộng linh hoạt lên xuống (scaling up and down ) để phù hợp với dung lượng tải file lên Cloud Storage, Cloud Function còn cho phép bạn triển khai các chức năng khác thông qua việc sử dụng Cloud Firestore.

Bạn muốn có sample code để thực hành và cách triển khai loại kiến trúc này, hãy truy cập hướng dẫn trang giải pháp (solutions page tutorial), để hiểu chi tiết hơn.