将任何哈希存储在GDBM中,我可以在其中搜索吗?

时间:2014-03-19 08:50:55

标签: database perl gdbm

this book中阅读GDBM,他们只提供了可以存储的数据结构的简单示例。 E.g。

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

背景

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

问题

我可以在GDBM中存储任何哈希,无论它包含多少嵌套哈希值和数组吗?

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

最后一个选项是将所有键连接成一个值,以便

$dbm{aa}{bb}{cc}

实际上会像

那样实现
$dbm{aa_bb_cc}

答案 1 :(得分:1)

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

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

复杂的部分是弄清楚如何访问各种级别的引用。要搜索,您必须运行键并解析值。