+1

Query data firestore bằng các câu lệnh như mysql với bigquery

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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí