我可以使用Big Query代替数据存储区吗?

问题描述

我正在创建在线竞赛。平台上的所有成员都可以组成团队。所有团队评分均基于Big Query中已经存在的交易数据。该数据由某些同步作业填充。

有问题吗?我的Big Query交易数据每天更新一次。在成员和团队数据位于数据存储区的情况下,我必须运行一项工作才能从Big Query获取所有交易数据,然后更新数据存储区(传播)中的每个实体。

这感觉非常昂贵。我希望将我的团队和成员数据放入Big Query中。然后调用Getscore(),它将检索所有内容,而无需传播到DataStore。我可以这样做吗?我知道Big Query不应用作事务数据库,而BigQuery中只会出现成员创建/更新,团队创建/更新以及团队邀请和团队接受的情况。这样小的交易操作是否足以继续使用Big Query进行所有操作?

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

type Member struct {
    PhoneNum string `json:"phoneNum"`
    Teams []string `json:"teams"`
    Password string `json:"password"`
}

type Team struct {
    TeamName string `json:"teamName"`
    scoreId string `json:"scoreId"`
    InviteCode string `json:"inviteCode"`
}

type score struct {
    scoreId string `json:"scoreId"`
    score1 float64 `json:"score1"` [these scores are calculated in the BigQuery]
    score2 float64 `json:"score2"`
    score3 float64 `json:"score3"`
}

如果我们在BigQuery中使用团队和成员,那么外键可以用于该“传播过程”

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

解决方法

将其作为社区Wiki答案发布,其一部分基于评论。

使用BigQuery并不是存储数据的最佳选择,因为将其用作应用程序的数据库,主要是因为考虑到需要尽快将数据加载到应用程序的前端这一事实,BigQuery速度可能不如您所需。因此,最好使用特定的数据库应用程序。

此外,您可能想看看数据库应用程序的另一种方法是本机模式下的Firestore。由于您的应用程序基本上可以处理文本和少量数据,因此Firestore可以用较小的文档进行组织,因此Firestore可以为您提供帮助。除此之外,尽管Datastore和Firestore都具有相同的免费配额-检查配额和价格herehere-它们的成本是不同的,并且一个对您来说可能更有意义。