gpt4 book ai didi

python - Python 中的文件索引(使用二叉树?)

转载 作者:太空狗 更新时间:2023-10-30 02:06:39 24 4
gpt4 key购买 nike

背景

我有许多(数千个!)具有基于标准字段格式的数据文件(想想制表符分隔,每个文件的每一行中的相同字段)。我正在讨论使这些数据可用/可搜索的各种方法。 (一些选项包括 RDBMS、NoSQL 的东西,使用 grep/awk 和 friend ,等等)。

提案

特别吸引我的一个想法是以某种方式“索引”文件。由于这些文件是只读的(和静态的),我在想象一些包含二叉树的持久文件(每个索引字段一个,就像在其他数据存储中一样)。我愿意接受关于如何做到这一点的想法,或者听到这简直是疯了。大多数情况下,我最喜欢的搜索引擎没有为此提供任何预滚动的解决方案。

我意识到这有点不合时宜,欢迎提出解决方案。

其他详细信息

  • 文件长,不宽
    • 每小时数百万行,每小时分布超过 100 个文件
    • 制表符分隔,列数不多(~10)
    • 字段很短(比如每个字段 < 50 个字符)
  • 查询是针对字段、字段组合的,可以是历史的

各种解决方案的缺点:

(所有这些都是基于我的观察和测试,但我愿意更正)

BDB

  • 在扩展到大文件时遇到问题(根据我的经验,一旦它们达到 2GB 左右,性能就会很糟糕)
  • 单例作家(如果可以解决这个问题,我想看看代码!)
  • 难以进行多重索引,即同时在不同字段上建立索引(确保您可以通过一遍又一遍地复制数据来做到这一点)。
  • 因为它只存储字符串,所以有一个序列化/反序列化步骤

关系型数据库

获胜:

  • 平面表模型非常适合查询、索引

损失:

  • 根据我的经验,问题出在索引上。从我所看到的(如果我错了请纠正我),我知道的 rdbmses(sqlite,postgres)支持批量加载(然后索引最后很慢)或逐行加载(这是低的)。也许我需要更多的性能调整。

最佳答案

为什么要重新发明轮子?无论如何,索引文件,但使用 Whoosh , 或 Lucene

编辑:在我发布此答案时您没有说明您的性能要求。您无法使用现成的软件为“每小时数百万行”编制索引。

关于python - Python 中的文件索引(使用二叉树?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2110843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com