1

在本书中阅读 GDBM 时,他们只给出了可以存储的数据结构的简单示例。例如

$dbm{'key'} = "value";

背景

我想在数据库中保存许多小文本文件仅供本地使用,并使用嵌套哈希和数组来表示文件路径。它不一定是 GDBM,但它似乎是 Perl 的唯一键/值数据库库。

问题

我可以在 GDBM 中存储任何散列,无论它包含许多嵌套散列和数组吗?

GDBM 是否提供任何搜索功能,还是让我在 Perl 中实现自己的功能?

4

2 回答 2

2

DBM 数据库根本不支持数组。它们本质上与 Perl 散列相同,只是项目的值只能是简单的字符串,不能是数字或引用。DBM 数据库中每个数据项的键和值都是简单的字节序列。也就是说,API 用一个char指针和一个int大小来表示它们。

在该约束内,您可以随心所欲地使用数据库,但请记住,与 SQL 数据库不同,每个键都必须是唯一的。

您可以通过使用一次访问获取的数据作为下一次访问的键来模拟嵌套哈希,但请记住对唯一键的要求,这远非理想。

或者,获取的值可能是另一个 DBM 数据库的名称,您可以继续进一步查询。

最后一个选择是将所有键连接成一个值,这样

$dbm{aa}{bb}{cc}

实际上会被实现为

$dbm{aa_bb_cc}
于 2014-03-19T09:21:55.040 回答
1

实际上,您可以在 perl 中存储哈希值或列表列表。您使用 CPAN 中的 MLDBM 模块以及您选择的 dbm。

查看这本在线 pdf 书籍并转到第 13 章。 [ https://www.perl.org/books/beginning-perl/][1]

复杂的部分是弄清楚如何访问不同级别的引用。要进行搜索,您必须遍历键并解析值。

于 2018-02-17T02:01:55.080 回答