filedb.filetables 模块

此模块为快速、不可变的磁盘键值数据库格式定义编写器和读卡器类。当前的格式主要基于D.J.Bernstein的CDB格式(http://cr.yp.to/cdb.html)。

哈希文件

class whoosh.filedb.filetables.HashWriter(dbfile, magic=b'HSH3', hashtype=0)

实现快速磁盘键值存储。这个散列使用两级散列方案,其中一个键被散列,散列值的低8位被用来索引到256个散列表中的一个。这基本上是CDB算法,但与CDB不同,此对象以串行方式写入所有数据(它不会向后搜索以覆盖末尾的信息)。

与CDB不同,这种格式使用64位文件指针,因此文件长度基本上是无限的。但是,每个键和值的长度必须小于2 GB。

参数
  • dbfile -- 一 StructFile 要写入的对象。

  • magic -- 要在文件开头写入的格式标记字节。

  • hashtype -- 一个整数,指示要使用的哈希算法。可能的值为0(MD5)、1(CRC32)或2(CDB哈希)。

add(key, value)

向文件中添加键/值对。请注意,键不需要是唯一的。可以在同一个键下存储多个值,并使用 HashReader.all() .

add_all(items)

方便的方法添加一个序列 (key, value) 对。这和调用一样 HashWriter.add() 在序列中的每对上。

class whoosh.filedb.filetables.HashReader(dbfile, length=None, magic=b'HSH3', startoffset=0)

Reader for the fast on-disk key-value files created by HashWriter .

参数
  • dbfile -- 一 StructFile 要读取的对象。

  • length -- 文件数据的长度。这是必要的,因为散列信息写在文件的末尾。

  • magic -- 要在文件开头查找的格式标记字节。如果文件的格式标记与这些字节不匹配,则对象将引发 FileFormatError 例外。

  • startoffset -- the starting point of the file data.

all(key)

生成与给定键关联的值序列。

classmethod open(storage, name)

打开哈希文件的便利方法 whoosh.filedb.filestore.Storage 对象和名称。这需要打开文件并将其长度传递给初始值设定项。

ranges_for_key(key)

生成一个序列 (datapos, datalength) tuples associated with the given key.

有序哈希文件

class whoosh.filedb.filetables.OrderedHashWriter(dbfile)

实现磁盘上的哈希,但要求按顺序添加键。安 OrderedHashReader 然后可以根据顺序查找“最近的键”。

class whoosh.filedb.filetables.OrderedHashReader(dbfile, length=None, magic=b'HSH3', startoffset=0)
参数
  • dbfile -- 一 StructFile 要读取的对象。

  • length -- 文件数据的长度。这是必要的,因为散列信息写在文件的末尾。

  • magic -- 要在文件开头查找的格式标记字节。如果文件的格式标记与这些字节不匹配,则对象将引发 FileFormatError 例外。

  • startoffset -- the starting point of the file data.