Python “执行”;数据库索引+;“存储在随机文件中”;vs";“存储在数据库中”;

Python “执行”;数据库索引+;“存储在随机文件中”;vs";“存储在数据库中”;,python,database-performance,random-access,Python,Database Performance,Random Access,在中,我发布了一些代码并提出了一些问题,再次发布了代码: 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.clo

在中,我发布了一些代码并提出了一些问题,再次发布了代码:

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()
受一个名为的模块的启发,我使用一个数据库来索引.txt文件中文本段的位置和长度,以便进行随机检索。在本文的其余部分中,我将此解决方案称为“数据库+文件”

当重复运行“数据库+文件”代码时,执行所需的时间越来越少。我将此解决方案的性能与使用BerkeleyDB存储这些文本段进行了比较。通过调整页面大小,BerkeleyDB解决方案的性能被微调到最佳状态

我将两种解决方案的代码放在一个脚本中。从BDB+文件和BDB连续检索六次的结果如下:

我是否可以判断“数据库+文件”的随机读取速度类似于“足够快”?


另外,我正在寻找一种解决方案,用于存储结构化语料库中的文本和文本段。数据库可能会有所帮助,但显然在数据库中存储大量不同长度的文本不是一个好主意。我正在评估“数据库+文件”解决方案,即使用数据库建立语料库结构,将所有文本和文本段存储在普通随机访问文件中,而数据库只存储指针。文本段的提取只是简单的随机访问操作。我需要确定此解决方案的性能是否足够好。如有任何建议,将不胜感激

够快做什么?;-)说真的,你想知道什么还不清楚。@TimPeters:是的,有点不清楚。我的意思是说,至少这个“数据库+文件”作为存储文本语料库的解决方案不会太慢,安全吗?