【发布时间】:2016-08-23 18:53:33
【问题描述】:
我有一个每天生成大量数据的第三方系统(那些是存储在 FTP 上的 CSV 文件)。正在生成 3 种类型的文件:
- 每 15 分钟(2 个文件)。这些文件非常小 (~
2 Mb) - 每天下午 5 点 (~
200 - 300 Mb) - 每个午夜(这个
CSV文件大约是1 Gb)
4CSVs 的总大小是1.5 Gb。但我们应该考虑到有些文件每 15 分钟生成一次。这些数据也应该汇总(不是那么难的过程,但肯定需要时间)。我需要快速响应。
我正在考虑如何存储这些数据并总体上实现。
我们有java 堆栈。数据库是MS SQL Standard。从我的测量结果来看,MS SQL Standard 与其他应用程序不会处理这样的负载。我想到了什么:
- 这可能是使用单独的服务器升级到
MS SQL Enterprise。 - 在单独的服务器上使用
PostgreSQL。目前我正在为这种方法开发 PoC。
你会在这里推荐什么?可能有更好的选择。
编辑#1
那些大文件是每天的新数据。
【问题讨论】:
-
1GB CSV。那将是一个巨大的负担。我敢打赌,前一天有很多重复的记录。如果您可以联系生成文件的人员,我们可能需要要求他们仅向您发送更改后的数据。这就是大多数系统为减少负载所做的事情。
-
是的,你是对的。在这种情况下,负载是巨大的。我还没有完全讨论过关于数据的那些要求,但这就是我从规范中得到的。从规范来看,没有可以用作更新文件的中间文件。它每次都包含新的/更新的数据。如果无法更新 - 我希望这些数据每天都会过时。
-
我使用 BULK LOAD Queries + 过程导入了一个 MAX 5 MB 的 csv 文件,我发现有时这是一个 LOAD。如果不拉扯我的头发,我无法想象一个 1 GB 文件的场景。 SQL-Sever 无法执行大小为 200MB 的 .sql 文件。想知道在读取之前需要处理的 1GB csv 文件会发生什么。
-
请详细说明这个大文件:它每天都有所有新数据还是累积的?
-
“过程”是什么意思?是导入/更新/交叉处理还是命令?
标签: java sql-server csv architecture