将特定记录从 RDS 存档到 AWS 中更便宜的存储的最佳策略
Best strategy to archive specific records from RDS to a cheaper storage in AWS
我有以下要求:
- 对于 RDS 中每条删除的记录,我们需要将其存档到 AWS 上更便宜的地方。
- 降低存储成本
- 不使用 Glacier
- 面向上下文(例如每个 table 一个文件)
- 不需要重新导入
我不是 AWS 的老用户,所以我仍然对它提供的众多选项感到困惑,我想知道您是否有更多想法来帮助我解决这个问题.
初步想法:
- 删除记录的微服务可能会将其发送到代理(例如 RabbitMQ),另一个微服务(我们称之为
archiver
)将收听它,写入文件,压缩并发送到S3。但是这种方法有一些技术挑战:为了使创建大文件有意义,我需要等待队列增长一点,将其包装成一个流并在 S3 中压缩。事务控制也很弱,因为文件写入和消息确认是基于信号的,即我会在文件创建后立即从代理中删除消息。
- 将新列添加到“archiveble”table作为“已删除(bool)”和运行一个单独的作业,仅获取这些记录并将它们保存到 S3 中。 已丢弃他们不希望新的微服务可以访问其他人的数据库。
- 采用与第一项相同的方法,但不是保存到 S3 中,而是保存到更便宜的数据库中。简单数据库?
选项 1,但不是 rabbitmq,而是将其写入 kinesis firehose 并将其定向到 s3 位置 - 没有比这更便宜或更容易的了。
我有以下要求:
- 对于 RDS 中每条删除的记录,我们需要将其存档到 AWS 上更便宜的地方。
- 降低存储成本
- 不使用 Glacier
- 面向上下文(例如每个 table 一个文件)
- 不需要重新导入
我不是 AWS 的老用户,所以我仍然对它提供的众多选项感到困惑,我想知道您是否有更多想法来帮助我解决这个问题.
初步想法:
- 删除记录的微服务可能会将其发送到代理(例如 RabbitMQ),另一个微服务(我们称之为
archiver
)将收听它,写入文件,压缩并发送到S3。但是这种方法有一些技术挑战:为了使创建大文件有意义,我需要等待队列增长一点,将其包装成一个流并在 S3 中压缩。事务控制也很弱,因为文件写入和消息确认是基于信号的,即我会在文件创建后立即从代理中删除消息。 - 将新列添加到“archiveble”table作为“已删除(bool)”和运行一个单独的作业,仅获取这些记录并将它们保存到 S3 中。 已丢弃他们不希望新的微服务可以访问其他人的数据库。
- 采用与第一项相同的方法,但不是保存到 S3 中,而是保存到更便宜的数据库中。简单数据库?
选项 1,但不是 rabbitmq,而是将其写入 kinesis firehose 并将其定向到 s3 位置 - 没有比这更便宜或更容易的了。