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.