有没有Perl实现的数据库?

10

是否有任何Perl模块实现数据库函数并易于使用。 我不需要用于连接到某些数据库产品的模块。 我需要用Perl编写简单的数据库。

谢谢。


2
如果您想将数据存储在硬盘中,可以使用 DBM::Deep,它易于管理。 - Mobrine Hayde
这个模块支持像SQL一样的查询吗? - user2799433
8
DBD::SQLite是一个自包含的数据库管理系统,与标准的DBI模块完全兼容。 - GMB
4
您可能也会喜欢 DBD::CSV,它可以为 CSV 文件提供标准的 SQL 接口。 - choroba
1
您可以使用JSON、XML、YAMS格式来存储数据。根据所选择的数据库结构,您可以实现实用程序函数。否则,您可以查看DBM - https://metacpan.org/pod/DBD::DBM。 - Polar Bear
2个回答

19
我建议使用DBD::SQLite。这是一个自包含的数据库管理系统,与大多数其他DBI驱动程序不同,它没有依赖于外部二进制文件。它具有创建内存数据库等好的选项。 SQLite是一个开源的RDBMS,实现了SQL ANSI标准的一个重要子集。 DBD::SQLite是一个合法的DBI驱动程序,因此符合伟大的DBI模块的API,这是Perl对数据库的事实标准接口。
从文档中可以看到:
  

DBD::SQLite是用于SQLite的Perl DBI驱动程序,它在发布中包含了整个内容。因此,为您的Perl项目获取快速的事务处理能力的RDBMS,您只需要安装这个模块,什么都不需要


1
“_不依赖外部二进制文件_” -- 好吧,你需要实际的sqlite库本身(C语言)。虽然它会随着软件包的安装而被安装,但Perl的DBD::SQLite只是一个驱动程序。我赞同这个建议,但它确实有一个“依赖项”。 - zdim
7
@zdim 这不是一个外部二进制文件(它直接链接,没有单独的“安装”,也没有服务器),它也不是“依赖项”在你需要先获取或单独获取的前提条件意义上。所以我认为这个答案给出了一个公正的评估。 - hobbs
2
@hobbs 不知道......这是一个独立的通用C库,由Perl部分进行接口。即使该软件包为方便起见捆绑了sqlite版本,但仍然是一个独立的C代码块,与Perl无关。虽然这主要是语义问题,我支持并赞同这个答案,但在我看来,这确实是一个外部库的Perl驱动程序。 - zdim

3
如果您可以不使用SQL和关系,那么可以尝试使用DBM::Deep。它是一个独特的纯Perl平面文件数据库模块,具有真正的多级哈希/数组支持(不像被伪装的MLDBM),混合的OO/tie()接口,跨平台可FTP的文件,ACID事务,并且速度相当快。可以处理数百万个键和无限级别而几乎没有任何影响性能的降低。它从头开始用纯Perl编写--这不是围绕C-based DBM的包装器。与Unix、Mac OS X和Windows的兼容性开箱即用。虽然这是最容易的选择,但我肯定不会在生产环境中使用它,但它非常适合快速原型设计。

1
我会尝试。 - user2799433

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接