在另一篇文章中,我发布了一些代码并提出了一些问题,再次是代码:
index = db.open()
fh = open('somefile.txt','rb')
for i in range(1000):
x = random_integer(1,5000)
pos,length = index[x]
fh.seek(pos)
buffer = fh.read(length)
doSomeThingWith(buffer)
fh.close()
db.close()
受到名为“Corpora”的模块的启发,我使用了一个数据库来索引 .txt 文件中文本段的位置和长度,以进行随机检索。我将在本文的其余部分将此解决方案称为“数据库+文件”。
当“数据库+文件”代码重复运行时,执行时间越来越少。我将这个解决方案的性能与使用 BerkeleyDB 存储这些文本段进行了比较。通过调整页面大小,BerkeleyDB 解决方案的性能被微调到最佳状态。
我将两种解决方案的代码放在一个脚本中。BDB+File和BDB连续6次检索结果如下:
我可以判断“数据库+文件”的随机读取速度是“足够快”吗?
Ps 我正在寻找一种用于存储结构化语料库的文本和文本段的解决方案。数据库可能会有所帮助,但显然在数据库中存储大量不同长度的文本并不是一个好主意。我正在评估“数据库+文件”的解决方案,即使用数据库建立语料库的结构并将所有文本和文本段存储在普通随机访问文件中,数据库只存储指针。文本段的提取只是简单的随机访问操作。我需要确定这个解决方案的性能是否足够好。任何意见,将不胜感激。