gpt4 book ai didi

mysql - 为 google bigquery 非规范化 mysql 表

转载 作者:行者123 更新时间:2023-11-29 01:39:29 26 4
gpt4 key购买 nike

我在 Mysql 中有以下模式(针对这个问题进行了简化。实际上它包含的表比这里给出的要多)

用户:id、email、first_name、last_name、gender、birthday 以及另外 30 个这样的列

帐户:id、user_id、total_visits、total_credits、total_redemptions、total_debits、points、initial_credit、initial_debit 以及另外 20 个此类列

Checkin:id、user_id、location_id、approved、amount、number、checkin_date、status、qr_code、barcode、points_earned 以及 30 多个此类列。

这里

  1. id - 主键。整数
  2. table_id - 外键。例如 accounts 中的 user_id,table 指向 User 表中用户的 id col。

要导入这个, advice in the docs , 是:

In BigQuery, you typically want to denormalize the data structure in order to enable super-fast querying. While JOINs on small datasets are possible with BigQuery, they're not as performant as a denormalized structure.Some type of normalization is possible with the nested/repeated functionality.

如果我这样理解,是否意味着:

  1. 只有表:拥有 100+ 列的用户(来自所有这些表的数据(帐户、签到等)
  2. 将有一个用户表和一个事件表。用户数据表将具有与当前在 mysql 中完全相同的架构。事件表将存储实际数据签到,帐户。
  3. 一些其他类型的架构?

此外,我是否可以找到更多资源来深入了解 Bigquery 的非规范化 mysql 表?

最佳答案

在 BigQuery 中设计架构时,查看表统计信息很重要。 BigQuery 有两种主要的 JOIN 算法实现 - 一种非常快,但可以扩展到几 MB,另一种可以扩展到任何大小,但速度较慢。让我们以用户表为例。如果您要处理数千万用户 - 此表可能会超过 10 MB,但如果您有数万用户 - 它将远低于该限制。在这种情况下,您可以在不牺牲性能的情况下将其保留为单独的表。因此,如果数字运行良好 - 那么我会推荐类似于方法 #2 的方法 - 一个用户表(小)和一个事件表(大)。

关于mysql - 为 google bigquery 非规范化 mysql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29718575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com