Google 云架构:数据湖可以用于 OLTP 吗?

Google Cloud Architecture: Can a data lake be used for OLTP?

我想在 Google 云中设计一个大型 Web 应用程序,我需要一个 OLAP 系统来创建 ML 模型,我计划通过 Pub/Sub 将所有数据发送到 BigTable 数据湖。这些模型由 dataproc 个进程创建。

模型被部署到微服务,微服务根据用户会话的数据执行它们。我的问题是:我在哪里存储这个微服务的“正常业务数据”?我是否必须将提供 Web 应用程序的微服务的数据与数据湖中的数据分开,例如通过使用 MariaDB 个实例(每个 us 数据库)?或者我可以将它们连接到 BigTable?

关于数据湖:是否有 BigTable 的替代方案?另一位开发人员告诉我,一种选择是将数据存储在 Google Cloud Storage (Buckets) 上,然后使用 DataProc 访问这些数据,以节省 BigTable 的跨区域成本。

哇,很多问题,很多假设和很多可能性。最佳答案是 "all depends of your needs"!

Where do I store the "normal business data" for this micro services?

你想在这些微服务中做什么?

Or can I connect them with BigTable?

是的,你可以,但你需要这个吗?如果你需要处理前的原始数据,是的,连接到 BigTable 并查询它!

如果没有,最好有一个批处理过程来预处理原始数据并仅将摘要存储在关系或文档数据库中(对用户来说延迟更好,但细节更少)

Are there alternatives to BigTable?

取决于您的需要。 BigTable 非常适合高吞吐量。如果您少于 1 million of stream write per second, you can consider BigQuery. You can also query BigTable table with BigQuery engine thanks to federated table

BigTable、BigQuery 和 Cloud Storage 可通过 dataproc 访问,所以您需要!

Another developer told me that an option is to store data on Google Cloud Storage (Buckets)

是的,您可以流式传输到 Cloud Storage,但要小心,您 don't have checksum validation 因此您可以确保您的数据没有损坏。


备注

你可以换个角度思考你的申请。如果您将事件发布到 PubSub,一种常见的模式是使用 Dataflow 处理它们,至少对于预处理 -> 训练模型的数据处理工作会像这样更容易!

如果你训练一个 Tensorflow 模型,你也可以考虑 BigQuery ML,不是为了训练(除非标准模型满足你的需求,但我怀疑),而是为了服务部分。

  1. Load your tensorflow model into BigQueryML
  2. 只需使用 BigQuery 查询您的数据作为模型的输入,将它们提交给您的模型并立即获得预测。您可以使用 Insert Select 查询将其直接存储到 BigQuery 中。 预测处理是免费的,您只需为扫描到 BigQuery 中的数据付费!

正如我所说,可能性很大。缩小您的问题以获得更清晰的答案!无论如何,希望这对您有所帮助