Trong phần một của bài viết (link ở đây), chúng ta đã tìm hiểu sơ qua các khái niệm cơ bản của BigQuery và các cách thức, kiến trúc khi tiến hành việc migrate dữ liệu tại chỗ sang BigQuery. Ở bài viết này chúng ta sẽ đi vào cụ thể trong việc xây dựng một migration tool có thể thực hiện kết nối vào các database như Mysql, Oracle … và đẩy dữ liệu lên BigQuery.
Có nhiều lại công nghệ cũng như ngôn ngữ lập trình có thể sử dụng để xây dựng migration tool. Trong bài viết này, tác giả sẽ sử dụng ngôn ngữ lập trình Java, hai công nghệ chủ đạo trong ứng dụng này sẽ là Spring Boot và Spring Batch.
1. Các giải pháp có thể cân nhắc khi xây dựng migration tool
Có nhiều cách để xây dựng một migration tool dùng cho việc migrate dữ liệu tại chỗ lên BigQuery sử dụng Java
- Spring Batch + BigQuery Streaming API/Loading API
- Spring Batch + Cloud Storage + BigQuery Import Service
- Spring Data Flow + BigQuery Streaming/Loading API
- …
Mỗi giải pháp đều có những ưu nhược điểm riêng trong việc xây dựng ứng dụng migration. Vì vậy, tuỳ vào mục đích, thời gian, cũng như nguồn lực của doanh nghiệp mà bạn có thể chọn một giải pháp phù hợp nhất đối với mình. Ở trong bài viết này, tác giả sẽ sử dụng giải pháp là sự kết hợp giữa Spring Batch + BigQuery Streaming API.
2. Tổng quan về những công nghệ và thư viện cần thiết để xây dựng migration tool với Java
- Spring Boot: Nếu các bạn đã sử dụng ngôn ngữ lập trình Java thì Spring Boot sẽ là một cái tên quen thuộc khi chúng ta muốn xây dựng nhanh một ứng dụng Java, giúp chúng ta giảm thiểu tối đa thời gian cấu hình và quản lí dự án và tập trung vào việc coding nhiều hơn.
- Spring Batch: Khi nghĩ đến việc migrate dữ liệu lớn, spring batch là một sự lựa chọn tốt trong việc quản lý các migration jobs cũng như việc phân trang và xử lí dữ liệu (ETL) từ dưới local database lên trên BigQuery.
- BigQuery Streaming API: BigQuery hỗ trợ streaming api trong việc streaming dữ liệu trực tiếp lên BigQuery mà không cần thông qua các định dạng cụ thể như csv, json …
Vị trí của migration tool trong một dự án BigQuery
3. Migrate dữ liệu tại chỗ lên BigQuery
Migration pine line
Những vấn đề thường gặp khi xây dựng ứng dụng migration với Spring Batch
- Migrate dữ liệu với hàng triệu dòng: Paging dữ liệu từ câu truy vấn, chia dữ liệu thành từng trunk trước khi streaming/load dữ liệu lên BigQuery
- Migrate nhiều bảng dữ liệu cùng một lúc: Tạo job tương ứng với từng bảng dữ liệu, mở multiple thread cho mỗi job
- Xử lí khi job bị failed và cần được khởi động lại: Sắp xếp dữ liệu được trả về bởi câu truy vấn, xác định vị trí dữ liệu bị failed nằm trong database của Spring Batch, từ đó re-import lại vị trí bị lỗi.
- Schedule thời gian chạy cho từng job: Tích hợp Spring Batch với Quatz scheduler để schedule thời gian chạy của từng job
- Xác định thời gian kết thúc của các job (đang được chạy đồng thời) để gửi thông báo đến người dùng: Khai báo một bộ đếm dưới dạng singleton object và listener cho mỗi job. Quan sát các job thông qua listener và bộ đếm để xác định các job đã chạy xong hay chưa. ..
4. Tổng kết
Phía trên là những kiến thức cơ bản khi sử dụng ngôn ngữ lập trình Java trong việc xây dựng ứng dụng cho phép migrate dữ liệu từ on-premise lên trên BigQuery. Hi vọng qua bài viết này, các bạn sẽ có những khái niệm cơ bản về BigQuery cũng như những giải pháp khi xây dựng ứng dụng migrate dữ liệu lên trên BigQuery.