gpt4 book ai didi

python 或数据库?

转载 作者:太空狗 更新时间:2023-10-30 01:45:19 26 4
gpt4 key购买 nike

我正在将一个 csv 文件读入 python 列表的列表中。现在大约是 100mb。几年后,该文件将达到 2-5gigs。我正在对数据进行大量对数计算。 100mb 的文件需要大约 1 分钟的时间来完成脚本。在脚本对数据进行了大量操作之后,它会创建指向谷歌图表的 URL,然后将图表下载到本地。

我可以继续在 2gig 文件上使用 python 还是应该将数据移动到数据库中?

最佳答案

我不知道你在做什么。但是数据库只会改变数据的存储方式。事实上,这可能需要更长的时间,因为大多数合理的数据库可能会对列施加约束,并对检查进行额外处理。在许多情况下,将整个文件放在本地,通过并进行计算比查询并将其写回数据库更有效(受磁盘速度、网络和数据库争用等影响)。但在某些情况下,数据库可能会加快处理速度,尤其是因为如果您进行索引,则很容易获得数据的子集。

不管怎样,你提到了日志,所以在你对数据库着迷之前,我有以下想法供你检查。无论如何,我不确定您是否必须从开始下载图表时就一直浏览每条日志,并且您希望它增长到 2 GB,或者最终您是否希望每天/每周有 2 GB 的流量。

  1. 归档 -- 您可以归档旧日志,比如每隔几个月归档一次。将生产日志复制到存档位置并清除事件日志。这将使文件大小保持合理。如果您浪费时间访问文件来查找您需要的小片段,那么这将解决您的问题。

  2. 您可能需要考虑转换为 Java 或 C。尤其是在循环和计算方面,您可能会看到 30 倍或更多的加速。这可能会立即减少时间。但随着时间的推移,随着数据的增加,总有一天这也会放缓。如果你对数据量没有限制,最终即使是世界上最伟大的程序员手工优化的汇编也会太慢。但它可能会给你 10 倍的时间......

  3. 您可能还需要考虑找出瓶颈(是磁盘访问,还是 CPU 时间),并在此基础上找出并行执行此任务的方案。如果它正在处理,请查看多线程(最终是多台计算机),如果是磁盘访问,请考虑在多台机器之间拆分文件......这真的取决于你的情况。但我怀疑归档可能会消除这里的需求。

  4. 正如建议的那样,如果您一遍又一遍地进行相同的计算,那么只需存储它们即可。无论您使用数据库还是文件,这都会给您带来巨大的加速。

  5. 如果您正在下载东西并且这是一个瓶颈,请查看使用 if 修改请求的条件获取。然后只下载更改的项目。如果您只是处理新图表,请忽略此建议。

  6. 哦,如果您正在按顺序读取一个巨大的日志文件,逐行查找日志中的特定位置,只需创建另一个文件来存储您使用的最后一个文件位置,然后在每次运行时执行一次查找。

  7. 说起整个数据库,大家可能会想到SQLite。

  8. 最后,“几年”对于程序员来说似乎是一段很长的时间。即使只有 2 个,也可以改变很多。也许你的部门/部门会被裁员。也许你和你的老板会继续前进。也许系统会被别的东西取代。也许将不再需要您正在做的事情。如果是 6 个月,我会说修复它。但几年来,在大多数情况下,我会说只使用你现在拥有的解决方案,一旦它变得太慢,然后再考虑做其他事情。你可以在代码中发表评论,表达你对这个问题的想法,甚至可以给你的老板发一封电子邮件,让他也知道。但只要它有效并且会在合理的时间内继续这样做,我就认为它现在“完成”了。无论您选择哪种解决方案,如果数据无限增长,您将需要重新考虑。添加更多机器、更多磁盘空间、新算法/系统/开发。用“几年”时间解决它可能已经很不错了。

关于 python 或数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3419624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com