我正在将csv文件读入python中的列表列表中。现在大约是100mb。几年后,该文件将达到2-5 go。我正在对数据进行大量的对数计算。100mb的文件需要大约1分钟的时间来完成脚本。在脚本处理了大量数据之后,它会创建指向google图表的URL,然后将图表下载到本地。
我可以继续在2gig文件上使用python吗?还是应该将数据移动到数据库中?
发布于 2010-08-06 07:00:09
我不知道你到底在做什么。但是数据库只会改变数据的存储方式。事实上,这可能需要更长的时间,因为大多数合理的数据库可能会对列施加约束,并对检查进行额外的处理。在许多情况下,将整个文件放在本地进行计算将比查询并将其写回数据库更有效(受磁盘速度、网络和数据库争用等因素的影响)。但在某些情况下,数据库可能会加快速度,特别是因为如果您进行索引,则很容易获得数据的子集。
无论如何,你提到了日志,所以在你发疯数据库之前,我有以下想法给你看看。无论如何,我不确定你是否必须从一开始就一直浏览每个日志来下载图表,并且你希望它增长到2 GB,或者最终你希望每天/每周有2 GB的流量。
,
发布于 2010-08-06 06:28:32
只有在以下情况下,我才会将其放入关系数据库:
如果这两件事都不是真的,我看不出数据库和文件之间有多大的区别。两者最终都必须存储在文件系统中。
如果Python必须处理所有数据,而将其放入内存意味着加载整个数据集,那么数据库和平面文件之间没有区别。
内存中2 2GB的数据可能意味着应用程序的页面交换和颠簸。在将问题归咎于文件之前,我会小心地获取一些数据。仅仅因为访问数据库中的数据并不能解决分页问题。
如果你的数据是扁平化的,我认为数据库的优势较小,除非“扁平化”的==“高度非规范化”。
在进行更改之前,我建议您进行一些分析,以了解哪些资源在消耗CPU和内存。你现在正在猜测问题的根本原因。最好获取一些数据,这样您就可以知道时间都花在哪里了。
发布于 2010-08-06 06:30:34
如果您每次执行“小提琴”时都需要遍历所有行,那么假设实际的“小提琴”就是消耗您的周期的东西,那么这不会有太大的区别。
也许你可以以某种方式存储你的计算结果,然后一个数据库可能会很好。此外,数据库也有保证数据完整性的方法,所以数据库通常是存储大量数据的好地方(废话!;)。
https://stackoverflow.com/questions/3419624
复制相似问题