我可以使用Big Query而不是数据存储吗



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

问题是什么?我的Big Query事务数据每天更新一次。由于成员和团队数据位于数据存储中,我必须运行一个作业来从BigQuery获取所有事务数据,然后更新datastore(传播(中的每个实体。

这感觉非常昂贵。我更愿意把我的团队和成员数据放在大查询中。然后调用GetScore((,它将检索所有不需要传播到DataStore的内容。我能做这个吗?我知道BigQuery不应该用作事务数据库,但只有成员创建/更新、团队创建/更新以及团队邀请和团队接受才会在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中使用Teams和Members,那么外键可以用于";传播过程";

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

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

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

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

最新更新