数以百万计的职位数据正在进入一个需要存储在数据库中的系统中。数据以管道分隔的格式以平面文件的形式出现,定期说是一天两次。最重要的是,在一百万项记录中,只有5%会有任何变化。其他记录与早期提要中的记录相同。建议一种快速将这些数据放入数据库的最佳策略。考虑到与以前的数据库版本相比,只有5%的传入数据会有任何变化。
我检查了一个与讨论过的这里类似的问题。但是它是关于大容量插入操作,可以通过先分块,然后对DB进行大容量插入来完成。
但是这里的想法是找出某些记录是否真的改变了,如果是,那么只插入或更新,否则只留下记录。这样可以节省很多时间。
有什么指示吗?
发布于 2017-02-21 13:43:22
要想得到一个比显而易见的更快的解决方案,你必须用一些东西来换取所获得的速度。
可能是内存(缓存现有记录并在RAM中进行比较,而不是在磁盘上进行比较),也可能是编程复杂性(计算校验和,而不是比较整个记录)或两者的组合。它甚至可能是正确的(不要嘲笑-许多现实生活中存在的场景,其中牺牲几%的正确性,以两倍的处理速度是一个很好的权衡!)。
在现实生活中,我预计这种权衡将与数据接口的定义背道而驰。没有一个头脑正常的组织会经常交换他们的全部数据。任何经常对大型数据资产进行更改的协作者都已经知道哪些记录更改了,哪些记录没有更改,所以他们应该负责检测!
换句话说,周期性的全面导入几乎总是一个糟糕和不必要的解决方案。代之以实现增量导入。
https://softwareengineering.stackexchange.com/questions/342659
复制相似问题