Query data firestore bằng các câu lệnh như mysql với bigquery
Bài đăng này đã không được cập nhật trong 4 năm
Bạn đã quen làm báo cáo với cơ sở dữ liệu quan hệ Mysql mà tự nhiên 1 ngày đẹp trời sếp lại bắt suất báo cáo với dữ liệu của firestore
Giờ mà viết code để xử lý thì quá mất effort mà kết quả chắc j đã chính xác
Phải chi có thể viết mấy câu lệnh kiểu select ... where ... thì hay biết mấy
Đừng lo đã có bigquery giải quyết vấn đề của các bạn
1. Bigquery là gì ?
BigQuery là một dịch vụ web RESTful cho phép tương tác để phân tích các tập dữ liệu khổng lồ lên tới hàng tỉ dòng hoạt động cùng với Google Storage . Nó là một cơ sở hạ tầng như một dịch vụ ( IaaS ) có thể được sử dụng bổ sung với MapReduce.
Bigquery có khả năng mở rộng và dễ sử dụng, cho phép các nhà phát triển và doanh nghiệp khai thác các phân tích dữ liệu mạnh mẽ theo yêu cầu.......
Ok, đọc qua về khái niệm để hiểu nó là gì đã . Giờ mình đi sâu vào ứng dụng của nó thì hơn
2. Query firestore như mysql
Vậy làm sao để query firestore với các câu lệnh như select
Chúng ta sẽ thực hiện các bước sau nhé
ở đây mình đã chuẩn bị một data base đơn giản với 2 bảng user và class
B1: Khởi tạo 1 dataset bạn vào link https://console.cloud.google.com/ rồi chọn bigquery nhé Sau đó bạn chọn create dataset nhé
Nhớ tên dataset lát mình sẽ dùng đấy
B2: Tạo table trong biquery
Ở đây mình sử dụng extention "Export Collections to BigQuery". Cơ chế của anh này là sẽ tạo 1 function trigger sự thay đổi của firestore rồi tạo 1 bảng log các trigger đó, rồi từ bảng log đó sẽ tạo ra 1 view hiển thị tương tự mysql, chúng ta sẽ viết các câu lệnh select với view đó.
Bạn vào extention rồi install extention "Export Collections to BigQuery"
Bạn điền các thông tin như sau nhé (ở đây mình tạo với bảng user - bạn sẽ làm tương tự với bảng class nhé):
Sau khi tạo xong bạn sẽ thấy 1 function như này ở trong console.firebase.google.com
Vì chúng ta dựa vào việc trigger sự thay đổi của firestore để tạo bảng log nên đối với những data trước khi tạo bigquery và k có sự thay đổi thì sẽ k có mặt trong log => gcp có hỗ trợ import data collection vào bảng log nhé
Bạn bật cloud shell giúp mình và chạy lệnh này
npx @firebaseextensions/fs-bq-import-collection
Bạn điền thông tin theo các câu hỏi trong lệnh là được nhé . Chạy xong chúng ta có bảng log như này
Mình sẽ viết query tạo view nhé
Nhớ save view để sử dụng
SELECT
document_id,
JSON_EXTRACT(DATA, '$.name') AS name,
JSON_EXTRACT(DATA, '$.class') AS class,
FROM
`fir-bigquery-demo.fir_bigquery_demo.user_test_raw_latest`
Giờ thì select giống mysql thôi ^^
THANKS FOR WATCHING
All rights reserved