首页 > 解决方案 > MySQL:为 ETL 高效存储大量数据

问题描述

我正在构建一个 ETL 管道,它将来自多个基于文本的源的数据汇集到一个 Neo4j 图形数据库中。MySQL 被用作管道中的“临时”存储。原始文件(CSV、TSV 或 XML)被加载到 MySQL。该数据用于更新“实体”的主存储,之后不再需要它。

尽管不再需要 MySQL 临时数据,但我想将其保留在某个地方,以防有一天我需要参考它。最好的方法是什么?

我意识到我可以转储它并将文本存储在某个地方,但这意味着一个复杂的恢复过程。我正在使用 AWS,所以我希望我可以将它存储在 EBS 卷上,这样我就可以在不再需要它时简单地分离该卷。(我可能会在 12 个月左右后删除该卷)。

我已经阅读了有关表空间和在外部创建表的信息,但我不明白这在实践中是如何工作的。当不再使用表时,我将如何“断开”它,然后再重新连接?

理想情况下,我希望能够分离/重新附加整个模式,但如果我必须在每个表的基础上进行,那也可以。也许我需要运行多个 MySQL 服务器?虽然这会在实例之间移动数据时引入性能开销。

我的表通常是 InnoDB,但我对此很灵活。

标签: mysql

解决方案


PARTITIONing按日期排列的 InnoDB 表允许完全访问所有数据,同时提供一种非常快速的方式来抛弃“旧”数据。

更多讨论:http: //mysql.rjweb.org/doc.php/partitionmaint


推荐阅读