在perl中寻找轻量级数据持久性解决方案

Hai*_*ang 10 perl

在我的应用程序中,我需要在memroy和磁盘中存储一些简单的数据.在我的情况下,真正的数据库将是过度的,所以我需要更轻的数据库来处理简单的数据持久性要求.我自己做了一些谷歌搜索,发现了一些有趣的东西,如DBM和DBI CVS等,但由于有太多选项,所以我很难做出实际选择,所以我想在这里问你这个"最佳实践",如perl中的轻量级数据持久解决方案.

dao*_*oad 15

你有几个选择:

  • Storable是一个核心模块,效率很高.这与可移植性存在一些问题,例如使用旧版Storable的人可能无法读取您的数据.此外,创建和检索该数据的系统的字节顺序非常重要.网络订单stoarge选项有助于减少可移植性问题.您可以将任意嵌套数据结构存储到文件或字符串并还原它.只有Perl才支持Storable.

  • YAML是一种基于文本的格式,可以像存储一样工作 - 您可以在YAML文件中存储和恢复任意结构.YAML很好,因为有几种语言的YAML库.它不像Storable那样快速或节省空间.

  • JSON 是一种流行的数据交换格式,支持多种语言.它的优点和缺点非常类似于YAML.

  • DBD :: SQLite是DBI的数据库驱动程序,允许您将整个关系数据库保存在单个文件中.它功能强大,允许您使用许多针对其他数据库(如MySQL和Postgres)的持久性工具.

  • DBM :: Deep是一个方便且功能强大的perl模块,允许有效检索和修改大型持久数据结构的小部分.几乎和Storable一样易于使用,但在处理大型数据结构的一小部分时效率更高.

更新:我意识到我应该提到我已经使用了所有这些模块,并且根据您的特定需求,它们中的任何一个都可能是"正确的选择".

  • 另外值得一提的是DBD :: SQLite不仅仅是一个数据库驱动程序,它还是一个进程内数据库*引擎*.它不依赖于任何外部服务器进程,这对于保持简单和自包含非常有用,但也使多个进程的并发访问变得有点棘手. (6认同)

mak*_*nai 7

您可能想尝试Tie :: Storable.然后它就像解决哈希一样简单.

如果您不想存储大量数据,并且可以在程序启动时一次性加载所有数据,那么可能就是这样.

如果你正在寻找更复杂但重量更轻的东西,很多人(包括我自己)都会发誓SQLite.