保留期后自动执行红移截断/删除数据

时间:2017-09-24 07:05:00

标签: node.js amazon-web-services amazon-redshift

我有一个红移表,它存储了大量数据。每个周末我都会去上周手动使用Workbench TRUNCATE我不再需要的数据。 我手动必须运行

DELETE FROM tableName WHERE created_date BETWEEN timeStamp1 AND timeStamp2;

是否可以通过某种方式告诉表格,或者有一些过期策略可以为我每周日删除数据?
如果没有,有没有办法每7天自动删除一次?执行此操作的nodeJS中的某种shell脚本或cron作业。

1 个答案:

答案 0 :(得分:4)

不,没有内置的能力在Amazon Redshift上定期运行命令。但是,您可以在连接到Redshift的另一个系统上运行脚本并运行该命令。

例如,cron作业调用psql连接到Redshift并执行命令。这可以在一行脚本中完成。

或者,您可以配置 AWS Lambda函数以连接到Redshift并执行该命令。 (您需要自己编写该函数,但有一些库可以使这更容易。)然后,您将配置Amazon CloudWatch Events以按期望的时间表触发Lambda函数(例如,每周一次)。

一个常见的策略是实际在每个时间段将数据存储在单独的表中(例如,一个月,但在您的情况下,这将是一周)。然后,定义一个组合了多个表的视图。要删除一周的数据,只需删除包含该周数据的表,为本周的数据创建一个新表,然后更新视图以指向新表但不是旧表。

顺便说一句......

您的示例使用DELETE命令,该命令 TRUNCATE命令相同。

TRUNCATE从表中删除所有数据。这是完全清空表格的有效方法。

DELETE适用于删除部分表,但它只是将行标记为已删除。数据仍然占用磁盘空间。因此,建议您在删除大量数据后VACUUM表。