GNU图书馆

GNU Libdbh是一个小型库,用于创建和管理基于64位磁盘的哈希表。
Libdbh与GNU gdbm非常相似,但当数据库中的记录数在数百万或以上时,它旨在提高性能。要查看libdbh如何对gdbm执行操作,请参阅一节性能

正在下载利伯赫

利伯赫可以在Sourceforge上找到:http://sf.net/projects/dbh/files/dbh/以及在主GNU ftp服务器上:(很快)

文件

文档利伯赫在线提供,作为大多数GNU软件的文档.你可以还可以找到有关利伯赫通过运行信息库男子利巴赫,或者通过观察/usr/share/doc/libdbh/,/usr/local/doc/libdbh/,或系统上的类似目录。通过调用男人使用利比亚比索命令。

邮件列表

Libdbh有以下邮件列表:

关于的公告Libdbh和大多数其他GNU软件都是在信息-菜单(档案).

不应立即公开的安全报告可以直接发送给维护人员。如果没有紧急响应问题,你可以上报给将军安全邮件列表以获取建议。

参与进来

开发利伯赫,一般来说,GNU是一项志愿工作,你可以做出贡献。对于信息,请阅读如何帮助GNU如果你愿意想参与进来,最好加入讨论邮件列表(见上文)。

测试版本
尝试最新的测试版本(如果可用)总是非常感谢。测试版本利伯赫可以在以下位置找到http://alpha.gnu.org/gnu/libdbh/(通过HTTP)和网址://alpha.gnu.org/gnu/libdbh/(通过FTP)。
下一个测试版本将包括可变密钥大小和可选的内存密钥哈希,其中包含来自另一个GNU项目的代码,全球数据库.
开发
对于开发源、问题跟踪器和其他信息,请参阅利伯赫项目页面savannah.gnu.org.
维护人员
利伯赫目前由维护埃德斯科特·威尔逊·加西亚。请使用邮件列表联系。

性能

与gdbm的主要区别在于应用领域。接下来你会查找在4核4GB机箱上进行的性能测试结果。要复制的程序这些测试包含在libdbh-5.0.17 tarball中,以防您感兴趣测试不同的设置。测试数据库由25M条记录和可变记录组成数据大小。还包括以不同格式生成此数据库的代码。

第一个结果显示了libdbh优于gdbm的条件。而数字从该数据库访问的记录中,gdbm的性能优于libdbh。但是,随着记录数量的增加,gdbm管理关联的索引散列成为一个限制因素。在测试设置中,一旦35K记录被随机访问后,libdbh的性能开始优于gdbm。请参见图1.作为对数据库的访问增加了,libdbh的性能提升变得非常显著。当访问了多达1M条记录时的结果如所示图2.

 [图1]

图1

 [图2]

图2

但libdbh的性能可以得到进一步增强。你试过乘法吗用罗马数字?没有多少乐趣。这就是为什么印度教数字要好得多。拿着这个符号表示的变化再进一步,是否有更好的表示方式例如,数据库索引键的数字?

是的,有更好的方法。

自然数的符号表示由一个符号中的一系列符号组成设置。例如,二进制表示法的符号集是{0,1}。作为任何特定数字向无穷大增长,即从符号集中提取的符号数量表示数字也趋于无穷大。

有什么理由你不能做上述的符号排列吗?一个符号怎么样设置无限基数和固定数量的符号?你可以把这个叫做象征性的自然数的“量化”表示。这来自订单以来的数量量化数字的数量不仅取决于数字的顺序,还取决于符号的总和。秩序很重要,因此可以与建立一对一的关系自然数。这里什么都没有,你只是在看一个不同的数字透视。

为了使用量化的数字,libdbh有几个例程以这种方式处理索引键。但它真的有效吗?

确实如此。使用索引的dbh文件之间的性能差异印度数字和用量化数字索引的相同数据如所示图3.

 [图3]

图3

主要性能收益来自这样一个事实,即通过量化数字进行索引可以平衡多维树的生长,就像大自然在森林中的工作方式一样。

简单地说,印度教数字由一组符号中的无限数量的符号表示基数有限,而量化的数字由有限数量的符号表示从一组无限基数的符号中。两者代表完全相同的东西。唯一的不同的是,印度教数字在用手指计数时更有用,而计算机能更好地处理量化的数字。

一般信息

DBH(基于磁盘的哈希表的缩写)是一种将无符号字符键与数据记录关联的便捷方法。任何类型的数字信息都可以进入数据记录中,比如文本、图形信息、数据库结构等等。使用DBH背后的想法是将关键索引直接构建为多维文件格式。

如果你是一个技术人员,想知道DBH的内脏是如何围绕量化的数字排列的,看看这个白皮书这是一篇论文的初稿,将通过性能测试加以补充。

DBH采用者通常拥有非常大的数据集,其中包含大量记录、非常快速的访问要求或非常复杂的数据集。

与XML文档类似,DBH文件允许用户指定复杂的数据结构。与XML文档相反,DBH文件可以包含二进制数据(在许多表示形式中),并允许直接访问文件的部分内容,而无需首先解析整个内容。

DBH允许以非常自然的方式表示数据对象,这一点不足为奇。DBH支持n维数据集,数据集中的每个元素本身可能是一个复杂对象。关系数据库为基于字段匹配的查询提供了极好的支持,但不太适合顺序处理数据库中的所有记录,也不太适合基于多维坐标类型查找的数据子集。

内部数据格式通常由个人或团队开发,以满足其项目的特定需求。虽然开发和部署这种解决方案的初始时间可能很短,但结果往往是不可移植、不可扩展和不高性能的。在许多情况下,用于扩展和维护代码的数据管理部分的时间在总开发工作中所占的比例越来越大,实际上减少了项目主要目标的可用时间。DBH提供了一种灵活的格式和强大的API,并有多年的开发历史作后盾。

胸径如何生长平衡树?

这是利用从数学中借来的一些概念来完成的。第一个是自然数的概念,{1,2,3,…}。自然数是我们计算的方式,它们是无限的,可数的,并且有一定的顺序。但我们决不能认为他们是唯一的代表。任何其他可数、无限且有一定顺序的集合都是完全相同的,尽管它们可能看起来很奇怪。构造良好的DBH表利用了cuantified数,这是表示自然数的不同方式,具有不同的排序规则。假设计算瓶颈是从内存到CPU寄存器的数据传输,cuantified数是索引记录的方式,以确保尽可能快的检索速度。

为了最大限度地减少对任何记录的访问,DBH树的维数应该等于DBH文件中记录数的自然对数。如果这些记录代表了地球上所有人口的数据,那么DBH文件的维度(或键长)将是22。考虑到人类基因组包含超过34亿个碱基对,将数据结构与每个碱基对关联需要21维。64位DBH保证这样一个DBH文件的大小可以增加到9.2E+18字节,足以满足每个碱基对2.7 GB的平均记录大小。

HTML文档将安装所有函数调用的手册页。在examples子目录中有一个简单的散列示例(simple_hash.c)和一个更复杂的示例(filesystem.c)。在你开始之前,一定要看一看。

许可

利伯赫是自由软件;您可以重新发布和/或在的条款通用公共许可证由Free发布软件基础;许可证的第3版,或(位于选项)任何更高版本。