比较Python中的持久存储解决方案

13 投票
9 回答
7501 浏览
提问于 2025-04-15 13:24

我正在开始一个新的科学项目,这个项目有很多数据(有几百万条记录),我希望能以一种方便且快速的方式存储这些数据。我遇到了一些不同的选择,但不太确定该如何选择。我的数据可能可以简单地存储为一个字典,或者是一个字典的字典。以下是一些我考虑的因素:

  • 速度。每次我启动一个新脚本时,不能每次都从磁盘加载所有数据,我希望能尽可能快速地访问随机条目。
  • 易用性。这是用Python写的,存储方式应该和Python的使用感觉一致。
  • 稳定性/成熟度。我希望选择一个目前有支持的方案,虽然一个正在开发但效果不错的方案也可以。
  • 安装方便。我的系统管理员应该能在我们的集群上轻松运行这个。

我对存储的大小并不是特别在意,但如果某个选项在这方面表现得非常糟糕,那也可能会成为一个考虑因素。此外,如果有关系的话,我很可能只会创建一次数据库,之后只会从中读取数据。

我开始查看的一些潜在选项(可以参考这个帖子):

有没有建议哪个选项更适合我的需求?有没有更好的主意?其中一些有后端,关于哪个文件系统后端比较好的建议吗?

9 个回答

5

我正在做一个项目,使用的是SQLite

SQLite把所有东西都存储在一个文件里,而且它是Python标准库的一部分。所以,安装和配置几乎是免费的,非常简单。

你可以用小的Python脚本或者各种工具轻松管理这个数据库文件。还有一个Firefox插件,使用起来也很方便。

我觉得用SQL来筛选、排序、处理数据非常方便。虽然我并不是SQL专家。(使用起来很简单)

我不确定SQLite是否是这个工作中最快的数据库系统,而且它缺少一些你可能需要的功能,比如存储过程。

不过,SQLite对我来说是够用了。

13

你可以试试mongodb,这个数据库挺不错的。它的PyMongo库可以和字典一起使用,还支持大部分Python的数据类型。安装起来很简单,性能也很好,而且可以扩展。很多大公司在实际应用中也在用MongoDB(和PyMongo)来处理数据

9

一个关系数据库管理系统(RDBMS)。

用一个大家都熟悉的关系数据库管理系统来使用表格,绝对是最可靠的选择。比如说Postgresql就是一个不错的例子。

这会让你在未来有很多选择,比如可以进行数据集群处理。而且,你会自动获得很多管理数据库的工具,还可以用几乎任何编程语言写的其他软件来使用它。

它的速度非常快。

在“感觉像Python”的方面,我想补充一下,你可以使用一个叫ORM的工具。一个比较有名的就是sqlalchemy。也许可以配合elixir这个“扩展”。

使用sqlalchemy,你可以让用户或系统管理员选择他们想用哪个数据库。也许他们已经安装了MySql,那也没问题。

关系数据库管理系统仍然是数据存储的最佳选择。

撰写回答