【问题标题】:Should I migrate to Redshift?我应该迁移到 Redshift 吗?
【发布时间】:2020-03-17 01:53:15
【问题描述】:

我目前正在努力查询存储在分区表中的数据块(每个日期的分区)

数据是这样的:

date, product_id, orders
2019-11-01, 1, 100
2019-11-01, 2, 200
2019-11-02, 1, 300

我有数百个日期分区和每个日期数百万行。

现在,如果我想查询,例如,产品 id 1 和 2 的总订单量为 2 周,并按日期分组(在每个日期的图表中显示),数据库必须达到 2 周分区并为它们获取数据。

当产品数量很大或所需时间很长时,该过程可能需要很长时间。

我了解到 AWS Redshift 适合此类任务。我正在考虑将我的分区表(每个日期的聚合分析)转移到该技术,但我想知道这是否真的是我应该做的,以使这些查询运行得更快。

谢谢!

【问题讨论】:

    标签: postgresql nosql bigdata amazon-redshift


    【解决方案1】:

    考虑到您的情况,Amazon Redshift 可能是一个不错的选择,Amazon Athena 也是如此。但考虑您的应用程序框架也很重要。您是选择仅针对数据库迁移到 Amazon,还是列表中还有其他 Amazon 服务?

    另外,在做出决定之前,请检查 Redshift 的成本。

    【讨论】:

      【解决方案2】:

      如果您在使用传统 SQL 数据库时遇到困难,那么 Amazon Redshift 无疑是一个选择。它可以处理数十亿行的表。

      这将涉及将数据从 Amazon S3 加载到 Redshift。这将允许 Redshift 优化数据的存储方式,从而提高查询速度。

      或者,您可以考虑使用 Amazon Athena,它可以直接从 Amazon S3 查询数据。它可以理解划分为不同目录的数据(例如基于日期)。

      【讨论】:

      【解决方案3】:

      根据您的用例,Redshift 对您来说确实是一个不错的选择。 为了从 Redshift 中获得最佳性能,设置正确的分布和排序键非常重要。在您的情况下,“日期”列应该是分发键,“productid”应该是排序键。另一个重要注意事项,不要对“日期”和“产品ID”列进行编码。 您应该获得更好的性能。

      【讨论】:

        【解决方案4】:

        您使用的是哪个版本的 PostgreSQL? 你是使用原生分区还是继承分区trigger-based

        最新版本的 postgresql 改进了分区管理。

        【讨论】:

        • 我使用的是 postgresql 10.7。不确定本机分区是什么意思,但我使用以下命令来创建每日分区:create table [partitioned_table] (check date >= [date_start] and date
        • 因此,您正在通过继承使用分区。 Here 是声明性分区的概述。然后,我与您分享 2 篇关于自 PG 10 以来的分区改进的博文:* PG 11 * PG 12
        猜你喜欢
        • 2010-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-05
        • 2015-08-26
        • 1970-01-01
        • 2014-09-06
        相关资源
        最近更新 更多