Tổng quan về Data Warehouse
Data Warehouse là gì?
Data Warehouse là hệ thống được thiết kế chuyên biệt để lưu trữ, truy vấn và phân tích khối lượng dữ liệu lớn, thường lên đến hàng terabyte (TB) hoặc hơn.
Tại sao cần triển khai Data Warehouse trong một dự án?
Data Warehouse đóng vai trò quan trọng trong việc cải thiện hiệu suất và quản lý dữ liệu hiệu quả, đặc biệt khi khối lượng thông tin ngày càng tăng. Cơ sở dữ liệu truyền thống thường khó đáp ứng nhu cầu lưu trữ và phân tích dữ liệu lớn trong thời gian dài.
Những hạn chế của Database là gì?
Tương tác trực tiếp với các ứng dụng người dùng: Database thường được xây dựng để phục vụ các ứng dụng vận hành, đảm bảo người dùng có trải nghiệm mượt mà. Tuy nhiên, khi phải lưu trữ lượng lớn dữ liệu — đặc biệt là dữ liệu lịch sử như các giao dịch của khách hàng — hiệu suất của Database có thể bị ảnh hưởng. Ví dụ, nếu một ứng dụng được vận hành trong 10–20 năm mà không loại bỏ bất kỳ dữ liệu nào, khối lượng dữ liệu sẽ ngày càng lớn, dẫn đến tốc độ xử lý chậm và ảnh hưởng đến hiệu suất toàn hệ thống.
Requirements for reporting and data analysis: Yêu cầu về báo cáo và phân tích dữ liệu: Doanh nghiệp thường cần tổng hợp các thông tin như giao dịch và hoạt động kinh doanh thành các báo cáo định kỳ để theo dõi, phân tích và xây dựng chiến lược. Điều này không chỉ làm gia tăng khối lượng dữ liệu lưu trữ mà còn ảnh hưởng đến hiệu suất khi Database phải xử lý các tác vụ phức tạp như tổng hợp và phân tích dữ liệu.
Điều này tạo ra hai vấn đề chính:
- Khối lượng dữ liệu ngày càng tăng nhưng không trực tiếp phục vụ người dùng.
- Hiệu suất suy giảm khi Database phải thực hiện các truy vấn phân tích phức tạp, ảnh hưởng đến trải nghiệm người dùng.
Giải pháp: Triển khai Data Warehouse
Data Warehouse là hệ thống chuyên biệt được thiết kế để lưu trữ, truy vấn và phân tích khối lượng dữ liệu lớn. Hệ thống cho phép tách biệt những dữ liệu không trực tiếp phục vụ người dùng — chẳng hạn như dữ liệu lịch sử hoặc các báo cáo định kỳ — khỏi Database chính. Việc tách biệt này mang lại một số lợi ích chính:
- Tối ưu hiệu suất: Database có thể tập trung xử lý các truy vấn từ ứng dụng, giúp duy trì tốc độ và hiệu suất cao, đảm bảo trải nghiệm người dùng liền mạch.
- Phân tích dữ liệu hiệu quả: Data Warehouse tạo ra một môi trường tối ưu để xử lý các tác vụ phân tích dữ liệu phức tạp mà không làm gián đoạn hoạt động của hệ thống chính. Nhờ đó, doanh nghiệp có thể dễ dàng tạo báo cáo, phát hiện xu hướng và đưa ra các quyết định chiến lược dựa trên dữ liệu mà không lo hệ thống bị chậm hoặc quá tải.
Mục tiêu của bài hướng dẫn
- Chuyển các dữ liệu cần được tách khỏi Database sang Data Warehouse.
- Tạo các báo cáo định kỳ một cách hiệu quả và lưu trữ các báo cáo này trên Data Warehouse.
Công nghệ sử dụng:
Database: MySQL
Data Warehouse: Google BigQuery
Ngôn ngữ: Java
Tổng quan về triển khai
Mục tiêu 1: Chuyển các dữ liệu cần được tách khỏi Database sang Data Warehouse.
Bài hướng dẫn này trình bày hai phương pháp để chuyển dữ liệu từ cơ sở dữ liệu MySQL sang Google BigQuery:
- Sử dụng ứng dụng Java: Xây dựng ứng dụng Java sử dụng thư viện Google BigQuery để tải dữ liệu lên Data Warehouse.
- Sử dụng Google Data Stream: Tận dụng tính năng Data Stream của Google Cloud để tự động hóa quá trình truyền dữ liệu giữa MySQL và BigQuery.
Mục tiêu 2: Tạo các báo cáo định kỳ một cách hiệu quả và lưu trữ các báo cáo này trên Data Warehouse.
Bài hướng dẫn trình bày hai phương pháp để tạo báo cáo và lưu kết quả trên BigQuery:
- Sử dụng ứng dụng Java: Xây dựng ứng dụng Java để thực thi truy vấn, lấy dữ liệu từ BigQuery và lưu trữ kết quả báo cáo.
- Sử dụng Scheduled Query của BigQuery: Tận dụng tính năng Scheduled Query của BigQuery để tự động hóa việc tạo báo cáo định kỳ.
Hướng dẫn triển khai
Thiết lập môi trường trên Google BigQuery:
1. Truy cập trang chủ Google Cloud Console theo đường dẫn bên dưới.
https://console.cloud.google.com/

2. Tạo một dự án mới cho ứng dụng của bạn


3. Sau khi tạo và chọn dự án, hãy vào thanh tìm kiếm và nhập “BigQuery”.

4. Sau khi truy cập trang BigQuery, nhấn “Enable” để kích hoạt Google BigQuery API. (Khi muốn sử dụng một tính năng cụ thể của Google Cloud, bạn cần bật API tương ứng để ứng dụng có thể kết nối và sử dụng tính năng đó.)

5. Sau khi bật BigQuery API, bước tiếp theo là cấp quyền sử dụng BigQuery cho tài khoản mà bạn sẽ sử dụng cho ứng dụng. Nhấn “Navigation Menu” → chọn mục “IAM & Admin” → chọn “IAM” (Identity and Access Management).

6. Chọn tài khoản mà bạn muốn chỉnh sửa để cấp quyền sử dụng BigQuery API.

7. Tiếp theo, nhấn “ADD ANOTHER ROLE” → chọn vai trò “BigQuery Admin” cho tài khoản của bạn.


8. Tiếp theo, cần tải xuống khóa (Key) của tài khoản để tạo Google Credentials trong ứng dụng. Nhấn “Navigation Menu” → chọn mục “IAM & Admin” → chọn “Service Accounts”.

9. Chọn tài khoản mà bạn đã cấp quyền “BigQuery Admin” ở bước trước.

10. Nhấn “KEYS” → chọn “ADD KEY” → chọn “Create new key” → chọn loại khóa “JSON” → nhấn “Create”. Sau đó, Google sẽ tự động tải file JSON chứa khóa xuống máy tính của bạn.



Tạo Dataset trong Google BigQuery (Tương ứng với Schema trong Database)
1. Quay lại BigQuery. Tại đây, bạn sẽ thấy tài nguyên (Resource) của project vừa tạo. Chọn “Create dataset” để tạo Dataset trong BigQuery. Điền các thông tin trong bảng “Create dataset”: -
- Dataset ID: Mã định danh duy nhất của Dataset.
- Location type: Chọn khu vực lưu trữ Dataset. (Thiết lập này ảnh hưởng đến hạn mức sử dụng [số lượng yêu cầu API] và chi phí.)
Sau đó nhấn “CREATE DATASET”.
2. Sau khi tạo Dataset, tiếp tục tạo một Table bên trong Dataset (tương ứng với một bảng trong Database).
3. Điền các thông tin cần thiết trong bảng “Create table”.
- Table: Tên của bảng, ví dụ: transaction, report,...
- Schema: Tạo các cột trong bảng.
- Partitioning and cluster settings: Chọn cột được sử dụng để phân vùng (Partitioning) và thiết lập thứ tự phân cụm (Clustering).
Bạn đã thiết lập thành công môi trường trên Google BigQuery! Bây giờ, hãy tiếp tục với các bước tiếp theo để hoàn thành mục tiêu của bạn.
Sử dụng ứng dụng Java để chuyển dữ liệu từ Database sang BigQuery và truy vấn dữ liệu từ BigQuery về ứng dụng Java
1. Mở file pom.xml và thêm các dependency của Google BigQuery.


2. Lưu thông tin của Project, Dataset và Table cần tương tác trong BigQuery.


3. Cấu hình Google Credentials và Project
Đây là đường dẫn đến file JSON chứa khóa (Key) đã tải xuống.

4. Truy vấn dữ liệu từ Database (Trong hướng dẫn này, dữ liệu chỉ được mô phỏng để minh họa.)


5. Chuyển đổi dữ liệu thành đối tượng RowToInsert của Google BigQuery.


6. Chèn dữ liệu vào BigQuery.


Bạn đã hoàn tất chức năng chuyển dữ liệu từ Database sang Data Warehouse bằng ứng dụng Java. Tiếp theo, bạn sẽ triển khai chức năng truy vấn dữ liệu từ BigQuery.
7. Tạo truy vấn

8. Tạo một BigQuery Job từ truy vấn và thực thi Job.

9. Kiểm tra lỗi và hiển thị kết quả nhận được.


Kết quả minh họa:
[
FieldValue{attribute=PRIMITIVE, value=1},
FieldValue{attribute=PRIMITIVE, value=BTC},
FieldValue{attribute=PRIMITIVE, value=A},
FieldValue{attribute=PRIMITIVE, value=B},
FieldValue{attribute=PRIMITIVE, value=1},
FieldValue{attribute=PRIMITIVE, value=1725718844.0}
]
Bạn đã hoàn tất việc thiết lập quy trình truy vấn dữ liệu từ BigQuery bằng ứng dụng Java. Tiếp theo, chúng ta sẽ tìm hiểu cách chuyển dữ liệu từ Database sang BigQuery và tạo các báo cáo định kỳ mà không cần sử dụng ứng dụng Java.
Sử dụng DataStream để chuyển dữ liệu từ Database sang BigQuery.
Datastream for BigQuery là dịch vụ của Google Cloud cho phép sao chép dữ liệu từ các cơ sở dữ liệu quan hệ như MySQL, PostgreSQL, Oracle và các hệ quản trị cơ sở dữ liệu khác sang BigQuery.

1. Truy cập Google Cloud Console, tìm kiếm “Datastream” và bật API tương ứng.

2. Tạo Stream

3. Điền các thông tin cần thiết trong bảng “Create table”.
– Stream name: Đặt tên cho Stream.
– Region: Chọn khu vực (Region).
– Source Type: Chọn một trong các loại nguồn: Oracle, MySQL, PostgreSQL hoặc SQL Server.

– Destination Type: Chọn một trong các loại đích: Cloud Storage hoặc BigQuery.


4. Để Datastream có thể lấy dữ liệu từ Database, Database cần được cấu hình một số thiết lập. Tùy thuộc vào loại Database bạn đang sử dụng, hãy thực hiện theo hướng dẫn cấu hình tương ứng. (Trong hướng dẫn này, chúng ta sẽ sử dụng Cloud SQL cho MySQL.)

5. Nhấn “Next” để chuyển sang biểu mẫu tiếp theo. Tại đây, bạn cần nhập các thông tin cần thiết để tạo Connection Profile.

6. Điền các thông tin trong bảng “Create MySQL connection profile”:
– Connection profile name: Tên của Connection Profile.
– Hostname or IP: Tên máy chủ hoặc địa chỉ IP của Database.
– Port: Cổng kết nối của Database mà bạn đang sử dụng.
– Username: Tên đăng nhập của tài khoản Database.
– Password: Mật khẩu của tài khoản

7. Tiếp theo, bạn có thể cấu hình các thiết lập bảo mật cho Stream. Trong hướng dẫn này, chúng ta sẽ sử dụng các thiết lập mặc định. Các địa chỉ IP được liệt kê bên dưới sẽ được sử dụng để truy cập vào Database, vì vậy hãy đảm bảo Database của bạn được cấu hình để cho phép kết nối từ các địa chỉ IP này.

8. Nhấn “Run test”, sau đó nhấn “Continue”.

9. Điền các thông tin trong bảng “Configure stream source”:
– Các đối tượng cần đưa vào Stream.
+ All tables from all schemas: Stream toàn bộ các bảng thuộc tất cả các schema trong Database.
+ Specific schemas and tables: Chọn các schema và bảng cụ thể mà bạn muốn Stream.
+ Custom: Tương tự như Specific schemas and tables, nhưng sử dụng trường nhập văn bản thay vì checkbox để lựa chọn.

10. Chọn “SHOW ADVANCED OPTIONS”, sau đó điền các thông tin trong bảng này:
– Objects to exclude: Chọn các dữ liệu không muốn Stream, bao gồm schema, bảng hoặc cột.
– Choose backfill mode for historical data: Chọn chế độ xử lý dữ liệu lịch sử đã tồn tại trước khi sử dụng Stream:
+ Automatic: Stream toàn bộ các bản ghi hiện có trong Database và các bản ghi được tạo sau khi Stream được khởi chạy.
+ Manual: Chỉ Stream các bản ghi được tạo sau khi Stream được khởi chạy.

11. Nhấn ‘CONTINUE’, sau đó điền các thông tin trong bảng ‘CREATE CONNECTION PROFILE’.

12. Chọn ‘CONTINUE’, sau đó điền các thông tin trong bảng ‘Configure the connection from Datastream to BigQuery’:
– Specify how Datastream should stream into a BigQuery dataset: Chỉ định cách Datastream sẽ Stream dữ liệu vào Dataset trên BigQuery:
+ Dataset for each schema: Mỗi schema sẽ được Stream vào một Dataset riêng.
+ Single dataset for all schemas: Tất cả các schema sẽ được Stream vào một Dataset duy nhất.
– Chế độ ghi dữ liệu của Stream:
+ Merge: Đồng bộ các bản ghi với Database. Cho phép thêm, cập nhật hoặc xóa bản ghi theo dữ liệu trong Database.
+ Append-only: Mỗi sự kiện (thêm, cập nhật, xóa) trong Database sẽ được ghi lại trong BigQuery.
– Stateleness limit: Thời gian cập nhật dữ liệu định kỳ từ Database sang BigQuery.

13. Kiểm tra lại các thông tin, chọn ‘RUN VALIDATION AND CREATE STREAM’ để xác thực và tạo Stream.

Bạn đã hoàn tất việc thiết lập Datastream để chuyển dữ liệu từ Database sang BigQuery. Tiếp theo, chúng ta sẽ hướng dẫn cách sử dụng Scheduled Queries để tạo các báo cáo định kỳ.
Sử dụng Scheduled Queries để tạo báo cáo định kỳ
1. Truy cập trang BigQuery và thêm một bảng Report.

2. Chọn tab Query để viết truy vấn tạo báo cáo.

3. Sau khi hoàn tất, chọn mục ‘SCHEDULE’ để thiết lập lịch chạy định kỳ cho Query.

4. Điền các thông tin trong bảng ‘New scheduled query’:
– Name for scheduled query: Nhập tên của Scheduled Query.
– Schedule options: Thiết lập tần suất thực thi Query: hàng giờ, hàng ngày, hàng tuần,... cùng các tùy chọn liên quan khác.

– Nơi lưu trữ kết quả của Query:
+ Dataset: Chọn Dataset để lưu dữ liệu tổng hợp.
+ TableId: Chọn bảng dùng để lưu dữ liệu tổng hợp.
+ Chọn phương thức ghi dữ liệu vào bảng đích:
- Append to table: Thêm dữ liệu mới vào bảng.
- Overwrite table: Dữ liệu mới sẽ ghi đè lên dữ liệu hiện có trong bảng.

– Service account: Chọn tài khoản sẽ thực thi Scheduled Query.
– Notification option: Gửi thông báo đến tài khoản nếu Scheduled Query không thể thực thi.

Bạn đã hoàn tất việc thiết lập Scheduled Query để tạo các báo cáo định kỳ.















