2

我有一个扁平数据集,每一行都包含用户属性(年龄、位置等)、注册和访问日期时间。每天分区。每天约 1000 万访问行,2500 万用户,500 万用户。这现在可以处理几个月的数据,并且在 1 年内,它将是约 30 亿行以上。

为了提高效率和减小大小,我正在考虑转向嵌套行:每个用户都将拥有嵌套记录,只有注册和访问日期时间。

在我做大的改变之前,假设我不会超过每行 64K 的限制,我会相应地改变我的查询。这会比展平行更好吗?

问题:

  • 如果我使用嵌套,我会按访问日期松开每日分区,因为我将它们嵌套到一个记录中。(我可以按月分区吗?)

  • 加载时,我需要将 CSV 转换为 JSON 并知道将每一行加载到哪个分区,所以我想我会取消分区。

  • 较少分区但嵌套的查询性能应该更好?

多谢

4

1 回答 1

0

1:json数据的实际导入行大小限制是20MB,不是64k。我已经提交了一个文档错误,以便在我们的公共文档中更新它。

  1. 嵌套数据可能会在一定程度上提高性能,但在不了解实际查询的情况下,很难知道。它不太可能对性能产生很大影响。但是,它可能会降低您的查询成本。

  2. 您可以将多个分区合并,然后按分组或按每个分组来收集每个用户的访问。在生产之前使用较小的数据样本进行尝试可能是个好主意。

我的猜测是,更复杂的查询和加载逻辑将意味着嵌套数据不会带来太多好处。您最好保持数据非规范化和扁平化,按天对数据进行分区,并在查询中需要的表的联合上进行查询。我们正在研究使在查询中指定表范围变得更容易的方法,这可能会有所帮助。

于 2012-12-27T18:02:20.060 回答