从2025年6月20日起,亚马逊Timestream版 LiveAnalytics 将不再向新客户开放。如果您想使用亚马逊 Timestream LiveAnalytics,请在该日期之前注册。现有客户可以继续照常使用该服务。有关更多信息,请参阅 Amazon Timestream 以了解 LiveAnalytics 可用性变更。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Aurora/RDS Postgres 作为目标
本节介绍如何将 S3 分阶段的时间序列数据提取到 Amazon RDS/Aurora PostgreSQL 中。摄取过程将主要集中在Timestream的导出工具生成的要提取到Postgres中的CSV文件上。对于基于时间的查询,我们建议在设计 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 摄取
用法
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 导出工具的一部分用于记录,请删除。