Redshift 中时间序列 table 的保留管理
Retention management for time-series table in Redshift
我有一个 table,我使用 DMS 从 Aurora 迁移到 Redshift。此 table 仅按时间戳插入大量数据。
我想在 redshift 中有一个 table 的修剪版本。
我们的想法是对其使用分区并使用保留脚本将其保留在最近 2 个月内。但是在 Redshift 中没有分区,我在那里发现的时间序列 table 听起来是一样的。如果我理解正确的话,我的 table 应该是这样的:
create table public."bigtable"(
"id" integer NOT NULL DISTKEY,
"date" timestamp,
"name" varchar(256)
)
SORTKEY(date);
但是我没有找到关于如何管理保留的好文档。想要任何更正和建议:)
这通常在 Redshift 中完成的几种方法。
对于中小型 tables 数据可以只被删除和 table VACUUMed(通常是只删除真空)。 Redshift 非常擅长处理大量数据,对于 table 非常大的数据,这很好用。删除和清理有一些开销,但如果这些被安排在下班时间,它工作得很好而且很简单。
当所讨论的 table 变得非常大或执行删除和清理的工作负载时间不低时,人们会为他们的数据设置“月”table 并使用视图UNION ALL 将这些 table 组合在一起。那么“去掉”一个月只是重新定义视图,去掉不需要的table。这对 Redshift 来说执行起来非常简单,但设置起来有点复杂。您的传入数据需要根据月份放入正确的 table 中,这样它就不再只是来自 Aurora 的副本。此过程还简化了将旧 table 卸载到 S3 以进行历史记录的过程。
我有一个 table,我使用 DMS 从 Aurora 迁移到 Redshift。此 table 仅按时间戳插入大量数据。 我想在 redshift 中有一个 table 的修剪版本。
我们的想法是对其使用分区并使用保留脚本将其保留在最近 2 个月内。但是在 Redshift 中没有分区,我在那里发现的时间序列 table 听起来是一样的。如果我理解正确的话,我的 table 应该是这样的:
create table public."bigtable"(
"id" integer NOT NULL DISTKEY,
"date" timestamp,
"name" varchar(256)
)
SORTKEY(date);
但是我没有找到关于如何管理保留的好文档。想要任何更正和建议:)
这通常在 Redshift 中完成的几种方法。
对于中小型 tables 数据可以只被删除和 table VACUUMed(通常是只删除真空)。 Redshift 非常擅长处理大量数据,对于 table 非常大的数据,这很好用。删除和清理有一些开销,但如果这些被安排在下班时间,它工作得很好而且很简单。
当所讨论的 table 变得非常大或执行删除和清理的工作负载时间不低时,人们会为他们的数据设置“月”table 并使用视图UNION ALL 将这些 table 组合在一起。那么“去掉”一个月只是重新定义视图,去掉不需要的table。这对 Redshift 来说执行起来非常简单,但设置起来有点复杂。您的传入数据需要根据月份放入正确的 table 中,这样它就不再只是来自 Aurora 的副本。此过程还简化了将旧 table 卸载到 S3 以进行历史记录的过程。