gpt4 book ai didi

amazon-redshift - Redshift 时间序列表加载问题

转载 作者:行者123 更新时间:2023-12-03 23:36:22 48 4
gpt4 key购买 nike

Redshift 文档将时间序列表确定为最佳实践:
http://docs.aws.amazon.com/redshift/latest/dg/c_best-practices-time-series-tables.html

但是,它没有解决以下任何问题:

  • 联合所有 View 中有多少个表是合理的 - 数百个? ( 未接听 )
  • 任何写入联合所有 View 并让 Redshift 将这些插入定向到正确基础表的方法? (答案:否)
  • 加载基础表的最有效方法?也许使用 firehose 插入临时表,然后定期将这些行插入到 union-all View 中的适当表中? ( 未接听 )
  • 如果日期范围超出查询条件,在查询 union-all View 时,有什么方法可以启用 redshift 以消除一些基础分区(表)? (答案:否)
  • redshift 能否支持删除旧表、添加新表和在事务中重建联合所有 View ? ( 未接听 )

  • 我的情况:
  • 每天增加 1 亿行,3 年后将增长到 5 亿行
  • 需要 12 个月的保留期
  • 估计所有查询的 99% 将命中最近 1-7 天
  • 数据通过 kinesis firehose 写入现有表到 s3,然后触发复制到 redshift 表。

  • 我提出的解决方案:
  • 使用 union all View 创建一年的每日表,以及 sensor_id 的 dist_key(100,000+ uniq 值)和 sort_key (时间戳、sensor_id)。
  • 将消防软管装入临时表
  • 创建一个单独的进程,每小时查询一次临时表以发现表中数据的日期,然后执行插入到“适当的表”中 select * from where timestamp = table's timestamp。
  • 这个每小时的作者可能可以在事务中包装一个表重命名、多个插入选择和表重新创建,以使其对 firehose 不可见。
  • 每月一次删除旧表,创建下个月的表,并重建 View 。
  • 这种联合所有的 View 维护可能可以包含在一个事务中,以避免对用户的影响。
  • 每晚运行一次真空分析仪。

  • 编辑:添加了说明已回答哪些问题的注释,并为建议的解决方案添加了一些细节。

    最佳答案

    您提议的流程听起来不错!虽然我不能回答你所有的问题,但这里有一些信息:

    任何写入 union-all View 并让 redshift 将这些插入定向到正确基础表的方法?

    View 是只读的。不可能写入 View ,也不可能在期望 Redshift 将数据发送到适当的表(例如给定日期的特定表)时插入数据。

    如果日期范围超出查询条件,在查询联合所有 View 时,有什么方法可以启用 redshift 以消除一些基础分区(表)?

    Redshift 不会从查询中排除特定的表,但它会通过使用 避免读取特定的磁盘块。区域 map .写入磁盘的每个数据块都与特定的表和列相关联。该块有一个区域映射,它指示存储在块中的该字段的最小值和最大值。

    如果查询包含 WHERE子句,Redshift 可以跳过不包含相关数据的块。这在 SORTKEY 上使用时特别强大列,因为相似的数据范围被分组在一起。

    鉴于您使用日期作为 SORTKEY , 如果查询包含 WHERE,Redshift 将读取很少的磁盘块。基于该列的子句。这与跳过表的想法非常相似,但它实际上跳过了读取磁盘块。

    关于amazon-redshift - Redshift 时间序列表加载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39878046/

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