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

Posted

技术标签:

【中文标题】谷歌云架构:数据湖可以用于 OLTP 吗?【英文标题】:Google Cloud Architecture: Can a data lake be used for OLTP? 【发布时间】:2020-01-18 16:11:54 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

哇,很多问题,很多假设和很多可能性。最佳答案是“一切取决于您的需求”!

我在哪里存储这个微服务的“正常业务数据”?

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

关系数据?使用像mysql or PostgreSQL on Cloud SQL这样的关系数据库 面向文档的存储?如果对文档的查询是"very simple" (very),则使用Firestore or Datastore。否则,您可以查看合作伙伴或市场解决方案,例如 MongoDB Atlas 或 Elastic

或者我可以将它们与 BigTable 连接起来吗?

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

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

是否有 BigTable 的替代品?

取决于您的需求。 BigTable 非常适合高吞吐量。如果您少于1 million of stream write per second,则可以考虑使用 BigQuery。你也可以query BigTable table with BigQuery engine thanks to federated table

Dataproc 可以访问 BigTable、BigQuery 和 Cloud Storage,满足您的需求!

另一位开发人员告诉我,一种选择是将数据存储在 Google 云存储(存储桶)上

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


注意

您可以以其他方式思考您的应用程序。如果您将事件发布到 PubSub,一种常见的模式是使用 Dataflow 处理它们,至少对于预处理 -> 您用于训练模型的 dataproc 工作会像这样更容易!

如果您训练 Tensorflow 模型,您也可以考虑使用 BigQuery ML,而不是用于训练(除非标准模型符合您的需求,但我怀疑),而是用于服务部分。

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

正如我所说,可能性很大。缩小你的问题以获得更清晰的答案!不管怎样,希望对你有帮助

【讨论】:

谢谢,我正在寻找有经验的人来放置东西,所以这很有帮助。

以上是关于谷歌云架构:数据湖可以用于 OLTP 吗?的主要内容,如果未能解决你的问题,请参考以下文章

数据湖:数据湖技术架构演进

数据湖和数据仓库的区别是啥?

数据湖04:数据湖技术架构演进

数据湖是什么?数据湖和数据仓库什么关系,数据湖的架构分析

详解数据湖:概念特征与架构

2万字,详解数据湖,概念特征架构方案场景以及建湖全过程(建议收藏)