我想在Google云中设计一个大型Web应用程序,并且我需要一个OLAP系统,该系统可以创建ML模型,并计划通过将所有数据通过Pub / Sub发送到BigTable数据湖来进行设计。模型由dataproc进程创建。
将模型部署到微服务,这些微服务将根据用户会话中的数据执行它们。我的问题是:该微服务在哪里存储“正常业务数据”?我是否必须将提供Web应用程序的微服务的数据与数据湖中的数据分开,例如通过使用MariaDB实例(每个美国数据库)?还是可以将它们与BigTable连接?
关于数据湖:BigTable是否有替代方案?另一位开发人员告诉我,一种选择是将数据存储在Google Cloud Storage(存储桶)上,并使用DataProc访问此数据,以节省BigTable的跨区域成本。
哇,很多问题,很多假设,很多可能性。最好的答案是“一切取决于您的需求”!
该微服务的“正常业务数据”存储在哪里?
您想在这些微服务中做什么?
或者我可以将它们与BigTable连接起来吗?
是,可以,但是您需要吗?如果在处理之前需要原始数据,请连接到BigTable并对其进行查询!
如果不是这样,最好有一个批处理过程,它可以对原始数据进行预处理,并且仅将摘要存储在关系数据库或文档数据库中(对用户而言延迟时间更长,但是细节较少)
BigTable可以替代吗?
取决于您的需求。 BigTable非常适合高吞吐量。如果小于1 million of stream write per second,则可以考虑使用BigQuery。您也可以query BigTable table with BigQuery engine thanks to federated table
BigTable,BigQuery和Cloud Storage可以通过dataproc访问,因此您可以根据需要!
[另一个开发人员告诉我,一种选择是将数据存储在Google Cloud Storage(存储桶)中
是,您可以流式传输到Cloud Storage,但请注意,您don't have checksum validation,因此可以确保您的数据没有被破坏。
注
您可以用其他方式来考虑您的应用程序。如果将事件发布到PubSub,则常见的模式之一是使用Dataflow处理它们,至少对于预处理->这样训练模型的dataproc作业会更容易!
如果您训练Tensorflow模型,那么您也可以考虑使用BigQuery ML,而不是为了训练(除非标准模型符合您的需求,但我怀疑),而是为了服务部分。
Insert Select
查询将其直接存储到BigQuery中。 预测处理是免费的,您只需支付扫描到BigQuery中的数据!正如我所说,可能性很大。缩小您的问题以获得更清晰的答案!无论如何,希望对您有所帮助