使用独立于Unix发行版的数据库/索引顺序文件

时间:2010-03-24 15:58:17

标签: c unix

我打算做的是 a)解析与正则表达式匹配的一些行的文件 b)将匹配存储在某种数据库/文件中,这样我就不必一次又一次地进行解析 c)调用另一个程序将匹配作为参数传递

虽然我可以想象如何做a)和c),但我对b)有点不确定。匹配的格式为

  

键:ATTRIBUTE1:attribute2:attribute3

其中属性2可以是可选的。我正在考虑将结果存储在一个简单的数据库中,但问题是数据库需要在多个Unix平台上才能使程序正常工作。是否有任何(简单)数据库可以在任何Unix平台上找到?或者我应该使用某种索引顺序文件?

2 个答案:

答案 0 :(得分:3)

如果您不需要SQL,请查看* DBM系列工具。 Sleepycat(现在是Oracle的一部分)拥有BerkeleyDB; GNU有GDBM。您也可以找到NDBM。使用普通DBM时要小心;谣言(至少)有一个相当大的错误。

这些都是基于密钥和任意关联数据提供散列查找的系统,正是您所使用的。

请注意,散列查找非常适合搜索“恰好这个键”,但对于“此值与该值之间的所有键”非常糟糕。如果您需要执行后面的查询,请仔细查看所提供的索引方案:在这些包中可能有您需要的内容,或者您​​可能更好地查看其他内容 - 使用B-Tree的索引顺序访问机制(ISAM)或类似的支持。但是,* DBM软件包相当普遍(因为相当多的系统只需要精确的值查找)。例如,它们用于邮件别名文件(您确实为特定别名的扩展执行精确查找)。

答案 1 :(得分:1)

我建议sqlite。它非常便携,因此可用于各种操作系统。它也是轻量级的,并且具有非常好的编程语言绑定(C API)。

另一种方法可以是键值存储(“NoSQL DB”),如Redis,也是可移植的。您也可以在本地计算机上使用它,它会非常快。