我正在开始一个新的科学项目,它有大量的数据(数百万条目),我想以一种简单快捷的格式存储.我遇到了许多不同的潜在选择,但我不确定如何从中挑选.我的数据可能只是存储为字典,或者可能是字典字典.一些潜在的考虑:
速度.每次启动新脚本时,我都无法从磁盘上加载所有数据,我希望尽快访问随机条目.
便于使用.这是python.存储应该感觉像python.
稳定性/成熟.我想要一些目前支持的东西,虽然一些运作良好但仍在开发中的东西会很好.
易于安装.我的系统管理员应该能够在我们的集群上运行它.
我并不太关心存储的大小,但如果选项在这方面真的很糟糕,那可能是一个考虑因素.此外,如果它很重要,我很可能会创建一次数据库,然后只读取它.
我开始关注的一些潜在选项(参见这篇文章):
pyTables
ZopeDB
推
搁置
Redis的
durus
有关哪些可能更适合我的目的的任何建议?有更好的想法吗?其中一些有后端; 关于哪个文件系统后端最好的建议?
可能想给mongodb一个镜头 - PyMongo库可以使用字典并支持大多数Python类型.易于安装,性能卓越+可扩展.MongoDB(和PyMongo)也用于一些大牌的制作.
一个RDBMS.
没有比在众所周知的RDBMS上使用表格更可行的了.想到了Postgresql.
这会自动为您提供一些未来的选择,例如群集.此外,您自动拥有许多工具来管理数据库,您可以使用其他几乎用任何语言编写的软件来使用它.
它真的很快.
在"感觉像python"一点,我可能会补充说你可以使用ORM.一个强大的名字是sqlalchemy.也许与长生不老药 " 扩展 ".
使用sqlalchemy,您可以让user/sysadmin选择他想要使用的数据库后端.也许他们已经安装了MySql - 没问题.
RDBMS仍然是数据存储的最佳选择.
我正在研究这样一个项目,我正在使用SQLite.
SQLite将所有内容存储在一个文件中,并且是Python标准库的一部分.因此,安装和配置几乎是免费的(易于安装).
您可以使用小型Python脚本或各种工具轻松管理数据库文件.还有一个Firefox插件(易于安装/易于使用).
我发现使用SQL过滤/排序/操作/ ...数据非常方便.虽然,我不是SQL专家.(便于使用)
我不确定SQLite是否是这项工作的精简数据库系统,它缺少一些您可能需要的功能,例如存储过程.
无论如何,SQLite适合我.