比较Python中的持久存储解决方案
我正在开始一个新的科学项目,这个项目有很多数据(有几百万条记录),我希望能以一种方便且快速的方式存储这些数据。我遇到了一些不同的选择,但不太确定该如何选择。我的数据可能可以简单地存储为一个字典,或者是一个字典的字典。以下是一些我考虑的因素:
- 速度。每次我启动一个新脚本时,不能每次都从磁盘加载所有数据,我希望能尽可能快速地访问随机条目。
- 易用性。这是用Python写的,存储方式应该和Python的使用感觉一致。
- 稳定性/成熟度。我希望选择一个目前有支持的方案,虽然一个正在开发但效果不错的方案也可以。
- 安装方便。我的系统管理员应该能在我们的集群上轻松运行这个。
我对存储的大小并不是特别在意,但如果某个选项在这方面表现得非常糟糕,那也可能会成为一个考虑因素。此外,如果有关系的话,我很可能只会创建一次数据库,之后只会从中读取数据。
我开始查看的一些潜在选项(可以参考这个帖子):
有没有建议哪个选项更适合我的需求?有没有更好的主意?其中一些有后端,关于哪个文件系统后端比较好的建议吗?
9 个回答
9
一个关系数据库管理系统(RDBMS)。
用一个大家都熟悉的关系数据库管理系统来使用表格,绝对是最可靠的选择。比如说Postgresql就是一个不错的例子。
这会让你在未来有很多选择,比如可以进行数据集群处理。而且,你会自动获得很多管理数据库的工具,还可以用几乎任何编程语言写的其他软件来使用它。
它的速度非常快。
在“感觉像Python”的方面,我想补充一下,你可以使用一个叫ORM的工具。一个比较有名的就是sqlalchemy。也许可以配合elixir这个“扩展”。
使用sqlalchemy,你可以让用户或系统管理员选择他们想用哪个数据库。也许他们已经安装了MySql,那也没问题。
关系数据库管理系统仍然是数据存储的最佳选择。