mysql - MySQL:为 ETL 高效存储大量数据
问题描述
我正在构建一个 ETL 管道,它将来自多个基于文本的源的数据汇集到一个 Neo4j 图形数据库中。MySQL 被用作管道中的“临时”存储。原始文件(CSV、TSV 或 XML)被加载到 MySQL。该数据用于更新“实体”的主存储,之后不再需要它。
尽管不再需要 MySQL 临时数据,但我想将其保留在某个地方,以防有一天我需要参考它。最好的方法是什么?
我意识到我可以转储它并将文本存储在某个地方,但这意味着一个复杂的恢复过程。我正在使用 AWS,所以我希望我可以将它存储在 EBS 卷上,这样我就可以在不再需要它时简单地分离该卷。(我可能会在 12 个月左右后删除该卷)。
我已经阅读了有关表空间和在外部创建表的信息,但我不明白这在实践中是如何工作的。当不再使用表时,我将如何“断开”它,然后再重新连接?
理想情况下,我希望能够分离/重新附加整个模式,但如果我必须在每个表的基础上进行,那也可以。也许我需要运行多个 MySQL 服务器?虽然这会在实例之间移动数据时引入性能开销。
我的表通常是 InnoDB,但我对此很灵活。
解决方案
PARTITIONing
按日期排列的 InnoDB 表允许完全访问所有数据,同时提供一种非常快速的方式来抛弃“旧”数据。
更多讨论:http: //mysql.rjweb.org/doc.php/partitionmaint
推荐阅读
- java - 带有 Mono.empty() 参数的反应式 Java Mono.zip
- java - 该算法的时间复杂度:是 O(n^2) 还是 O(n)
- regex - 将 PowerShell 正则表达式中的字符串转义为常规字符串
- css - Flex 项目不在容器内居中?
- azure-functions - 2.0 版函数中的 HttpResponseMessage 支持
- r - R: purrr: 使用 pmap 进行逐行操作,但这次涉及很多列
- apache-kafka - Kafka 主题未创建为空
- apache - 如何在 PerPostConfigRequire 执行的代码中获取“我的”VHOST?
- node.js - 从 iOS 上传图片太慢
- python - 通过对组的聚合替换列的值