Aurora/RDS Postgres 作为目标 - Amazon Timestream
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

要获得与亚马逊 Timestream 类似的功能 LiveAnalytics,可以考虑适用于 InfluxDB 的亚马逊 Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间,以实现实时分析。点击此处了解更多信息。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Aurora/RDS Postgres 作为目标

本节介绍如何将 S3 分阶段的时间序列数据提取到 Amazon PostgreSQL 中。 RDS/Aurora 摄取过程将主要聚焦于从 Timestream 的导出工具生成的 CSV 文件要摄取到 Postgres 数据库中。对于基于时间的查询,建议在设计 PostgreSQL 架构和表时采用适当的索引策略。使用任何 ETL 流程,将 Timestream 的专用结构转换为针对特定要求进行优化的关系表。在将 Timestream 数据迁移到关系数据库时,使用时间戳列作为主时间索引、派生自 Timestream 的 measure_name 测量值标识符列以及来自 Timestream 维度和实际度量的维度列构建架构。根据时间范围和高频查询的维度组合创建策略索引,以优化数据转换和加载过程中的性能。将时间序列数据迁移到 PostgreSQL 时,合理配置实例规格对于在扩展过程中维持查询性能至关重要。在选择实例类时,请考虑预期数据量、查询复杂度和并发性要求,特别注意时间序列聚合工作负载的内存分配。对于超过数千万行的数据集,应利用 PostgreSQL 的原生分区功能和高级索引策略,针对时间序列访问模式进行优化。

我们建议执行功能和性能测试以选择合适的实例,同时调整 PostgreSQL 数据库以解决任何性能瓶颈。通过对源 Timestream 数据库与目标系统进行样本查询比对,实施严格的数据完整性检查,对于确保迁移成功及维持查询正确性至关重要。通过在两个系统上执行相同的查询并比较结果(包括记录计数、聚合结果和异常值),可识别任何差异,这些差异可能表明存在转换错误、数据丢失或查询解释中的语义差异。此验证流程旨在确认数据在迁移后仍保持其分析价值,增强依赖这些见解的利益相关者对新系统的信心,协助识别为适应平台间语法或功能差异所需的查询调整,并建立可量化的基准线以判定何时可将迁移视为完成且成功。如果缺乏这些系统性检查,细微的数据不一致可能无法被发现,这可能导致错误的业务决策,或动摇对整个迁移项目的信心。

摄取

我们建议使用 Amazon数据库迁移服务(DMS),其中源为 S3(同时支持 CSV 和 Parquet),目标为 PostgreSQL。对于 Amazon DMS 可能不适合您的特定要求的情况,我们提供了一个基于 Python 的补充工具(PostgreSQL CSV 摄取工具),用于将 CSV 数据从 S3 迁移到 PostgreSQL

PostgreSQL CSV 摄取工具概览

PostgreSQL CSV 摄取工具是一种高性能的实用工具,旨在高效地将 CSV 文件加载到 PostgreSQL 数据库中。该工具利用多线程和连接池并行处理多个文件,从而显著缩短数据加载时间。我们建议使用 EC2 实例运行此脚本。考虑使用针对网络操作进行优化的实例类型,例如 C5N。

主要 功能

  • 多线程处理:同时加载多个 CSV 文件。

  • 连接池:高效管理数据库连接。

  • 自动列检测:从 CSV 标头中动态提取列名。

  • 重试逻辑:处理带指数回退的瞬态错误。

  • 文件管理;将处理过的文件移至指定目录,以便重试时能继续执行而非重新开始。

  • 全面日志记录:用于监控和故障排除的详细日志。

  • 错误通知:可选的 SNS 故障通知。

  • 安全凭证:从 Secrets Manager 检索数据库密码。 Amazon

先决条件和安装

请参阅中的 PostgreSQL CSV 摄取工具自述文件中的先决条件和安装。 GitHub

用法

python copy_postgres.py \ --database 'postgres_testing' \ --table 'demolarge_restored' \ --csv-files-dir '/data/csv_files/*partition*/*.csv' \ --host database-1.cluster-xxxxxxxx.us-east-1.rds.amazonaws.com \ --secret-arn 'arn:aws:secretsmanager:<region>:<account_id>:secret:rds!cluster-xxxxx-xx-xx-xx-xxxxxxxx-xxxxx' \ --sns-topic-arn 'arn:aws:sns:<region>:<account_id>:<topic_name>'

验证

您可以使用 DynamoDB 存储 Timestream 导出工具生成的导出行或日志,并与从 PostgreSQL 摄取自动化日志中摄取的行进行比对。在迁移过程中,如果持续摄取数据,则源表和目标表的计数结果会因导出和导入时间不一致而产生差异。因此建议通过日志记录比较导出行数与导入行数。

清除

  • 清理作为 Timestream 导出工具的一部分创建的卸载数据。 LiveAnalytics

  • 删除已下载的数据并登录 EC2 以回收空间。

  • 如果 DynamoDB 表作为 Time LiveAnalytics stream 导出工具的一部分用于记录,请删除。