如何使用云函数将 PubSub 数据存储到大查询?
How to store PubSub data to big query using cloud functions?
我再次请求您的帮助。
先说说我的现状吧
- 我有一个连接到“Cloud IoT core”并使用 mqtt 发送数据的设备。
- 数据然后转到 Pub/Sub 主题。
- 然后触发“云功能”,将数据存储在“Firestore”中
- 另一个“云功能”被触发,它向我发送了一封电子邮件,其中包含 Firestore 中存储的数据。
数据大小约为 1 KB,我预计每月发送约 10,000 条消息
我需要这些数据来创建我正在使用“Google Data Studio”的仪表板
为了在其中获取我的数据,我安装了 Firebase 扩展“将集合流式传输到 BigQuery”以将数据发送到“BigQuery”。从那里我只需单击几个按钮即可自动将数据从 BigQuery 流式传输到“Google Data Studio”
到目前为止一切正常,但如您所见,我存储了 4 次数据。一次通过电子邮件,一次在 firestore 中,一次在 BigQuery 和 Data studio 中。从长远来看,所有这些都将花费大量资金,因为存储的数据每个月都会翻一番。
我需要你们提供一些最佳实践建议。
当数据到达 Pub/Sub 时,有没有办法将数据直接存储在 BigQuery 中?
如果可以,我也可以将数据作为附件发送电子邮件吗?
BigQuery 是一个好的解决方案还是我应该使用“Cloud SQL”?
要在 Firestore 中保存数据,我可以在云函数中执行以下操作。 BigQuery 有类似的方法吗?
firestore.collection("put Collection name here").doc(put document name here).set({
'name' : name
'age' : age
}).then((writeResult) => {
//console.log('Successfully executed set');
return;
}).catch((err) => {
console.log(err);
return;
});
Is there a way to store the data directly inside BigQuery when it
arrives in the Pub/Sub?
是的,您可以使用 Dataflow 构建流式传输管道,如不同文档项或博客中所述:
- GCP Doc: Pub/Sub Topic to BigQuery
- A Dataflow Journey: from PubSub to BigQuery
- Write a Pub/Sub Stream to BigQuery
但您也可以在云函数中使用 Node.js Client for BigQuery,由 Pub/Sub 触发。但是,可以认为这不会“直接 存储数据 ”...
If so can I also send an email with the data as an attachment?
如果您使用 Cloud Function,那很容易,例如使用专用 "Trigger Email" Firebase Extension.
您还可以使用 nodemailer
包直接从 Cloud Functions 发送电子邮件,请参阅此 official Cloud Function sample。
Is BigQuery a good solution or should I use "Cloud SQL"?
这完全取决于您的确切用例...网上有很多文献:https://www.google.com/search?client=firefox-b-d&q=difference+between+Cloud+SQL+and+BigQuery
但是,由于您要使用 Data Studio,所以经典的答案是使用 BigQuery,因为它最适合分析。但同样,这取决于您的具体用例。
(请注意,这个问题本身可能会在 SO 上结束,因为它是 opinion based)。
To save data inside Firestore I can execute the following inside a
cloud function. Is there a similar way for BigQuery?
是的,如上所述,在您的 Cloud Function 中使用 Node.js Client for BigQuery。
我再次请求您的帮助。
先说说我的现状吧
- 我有一个连接到“Cloud IoT core”并使用 mqtt 发送数据的设备。
- 数据然后转到 Pub/Sub 主题。
- 然后触发“云功能”,将数据存储在“Firestore”中
- 另一个“云功能”被触发,它向我发送了一封电子邮件,其中包含 Firestore 中存储的数据。
数据大小约为 1 KB,我预计每月发送约 10,000 条消息
我需要这些数据来创建我正在使用“Google Data Studio”的仪表板
为了在其中获取我的数据,我安装了 Firebase 扩展“将集合流式传输到 BigQuery”以将数据发送到“BigQuery”。从那里我只需单击几个按钮即可自动将数据从 BigQuery 流式传输到“Google Data Studio”
到目前为止一切正常,但如您所见,我存储了 4 次数据。一次通过电子邮件,一次在 firestore 中,一次在 BigQuery 和 Data studio 中。从长远来看,所有这些都将花费大量资金,因为存储的数据每个月都会翻一番。
我需要你们提供一些最佳实践建议。
当数据到达 Pub/Sub 时,有没有办法将数据直接存储在 BigQuery 中? 如果可以,我也可以将数据作为附件发送电子邮件吗?
BigQuery 是一个好的解决方案还是我应该使用“Cloud SQL”?
要在 Firestore 中保存数据,我可以在云函数中执行以下操作。 BigQuery 有类似的方法吗?
firestore.collection("put Collection name here").doc(put document name here).set({
'name' : name
'age' : age
}).then((writeResult) => {
//console.log('Successfully executed set');
return;
}).catch((err) => {
console.log(err);
return;
});
Is there a way to store the data directly inside BigQuery when it arrives in the Pub/Sub?
是的,您可以使用 Dataflow 构建流式传输管道,如不同文档项或博客中所述:
- GCP Doc: Pub/Sub Topic to BigQuery
- A Dataflow Journey: from PubSub to BigQuery
- Write a Pub/Sub Stream to BigQuery
但您也可以在云函数中使用 Node.js Client for BigQuery,由 Pub/Sub 触发。但是,可以认为这不会“直接 存储数据 ”...
If so can I also send an email with the data as an attachment?
如果您使用 Cloud Function,那很容易,例如使用专用 "Trigger Email" Firebase Extension.
您还可以使用 nodemailer
包直接从 Cloud Functions 发送电子邮件,请参阅此 official Cloud Function sample。
Is BigQuery a good solution or should I use "Cloud SQL"?
这完全取决于您的确切用例...网上有很多文献:https://www.google.com/search?client=firefox-b-d&q=difference+between+Cloud+SQL+and+BigQuery
但是,由于您要使用 Data Studio,所以经典的答案是使用 BigQuery,因为它最适合分析。但同样,这取决于您的具体用例。
(请注意,这个问题本身可能会在 SO 上结束,因为它是 opinion based)。
To save data inside Firestore I can execute the following inside a cloud function. Is there a similar way for BigQuery?
是的,如上所述,在您的 Cloud Function 中使用 Node.js Client for BigQuery。