Go 我可以用大查询代替数据存储吗?

Go 我可以用大查询代替数据存储吗?,go,google-cloud-platform,google-bigquery,google-cloud-datastore,datastore,Go,Google Cloud Platform,Google Bigquery,Google Cloud Datastore,Datastore,我正在创建一个在线竞赛。平台上的所有成员都可以组成团队。所有团队评分都基于已经在大查询中的事务数据。此数据由某个计时作业填充 问题出在哪里?我的大查询事务数据每天更新一次。由于成员和团队数据位于数据存储中,我必须运行一个作业,从大查询中获取所有事务数据,然后更新数据存储中的每个实体(传播) 这感觉非常昂贵。我更愿意把我的团队和成员数据放在大查询中。然后调用GetScore(),它将检索所有内容,而无需向数据存储进行传播。我能做这个吗?我知道BigQuery不应该用作事务性数据库,但在BigQue

我正在创建一个在线竞赛。平台上的所有成员都可以组成团队。所有团队评分都基于已经在大查询中的事务数据。此数据由某个计时作业填充

问题出在哪里?我的大查询事务数据每天更新一次。由于成员和团队数据位于数据存储中,我必须运行一个作业,从大查询中获取所有事务数据,然后更新数据存储中的每个实体(传播)

这感觉非常昂贵。我更愿意把我的团队和成员数据放在大查询中。然后调用GetScore(),它将检索所有内容,而无需向数据存储进行传播。我能做这个吗?我知道BigQuery不应该用作事务性数据库,但在BigQuery中只会发生成员创建/更新、团队创建/更新以及团队邀请和团队接受。这个小的事务操作是否足以继续并使用大查询来处理所有事务

涉及的所有类型。团队和成员当前在数据存储中,分数在BigQuery中:

类型成员结构{
PhoneNum字符串`json:“PhoneNum”`
Teams[]字符串`json:“Teams”`
密码字符串`json:“密码”`
}
类型团队结构{
TeamName字符串`json:“TeamName”`
ScoreId字符串`json:“ScoreId”`
InviteCode字符串`json:“InviteCode”`
}
类型分数结构{
ScoreId字符串`json:“ScoreId”`
Score1 float64`json:“Score1”`[这些分数在BigQuery中计算]
Score2 float64`json:“Score2”`
Score3 float64`json:“Score3”`
}
如果我们在BigQuery中使用团队和成员,那么外键可以用于“传播过程”


非常感谢您抽出时间回答我的问题。

将此作为社区维基答案发布,因为它的一部分基于评论

使用BigQuery并不是存储数据作为应用程序数据库的最佳选择,这主要是因为,考虑到您需要尽快将数据加载到应用程序前端,BigQuery并不像您所需要的那样快。因此,为数据库使用特定的应用程序将是最佳选择


除此之外,您可能希望了解数据库应用程序的另一种选择是本机模式下的Firestore。由于您的应用程序基本上使用文本和少量数据,Firestore可能会对您有所帮助,因为Firestore是以小文档的形式组织的。除此之外,虽然Datastore和Firestore都有相同的免费配额(检查配额和价格),但它们的成本不同,其中一个可能对另一个更有意义。

Bigquery不应用作需要将数据立即提供给前端的应用程序的数据库。因为Bigquery比SQL数据库慢,而且它对每个查询处理的数据量收费。因此,频繁运行大量繁重的查询可能会使您的系统崩溃bill@dishantmakwana,谢谢你,我还没想过这件事的费用。我想这是不需要动脑筋的。数据存储中的即时实时快速查询。在大查询中报告批量。