使用 python 和 mongoDB 索引 20M 的记录
Posted
技术标签:
【中文标题】使用 python 和 mongoDB 索引 20M 的记录【英文标题】:Indexing 20M of records with python and mongoDB 【发布时间】:2011-08-17 16:02:51 【问题描述】:我想谈一谈我的小项目,以及我是否步入正轨。我需要处理来自 Medline (http://www.nlm.nih.gov/bsd/licensee/2011_stats/baseline_doc.html) 的所有文章。对于不熟悉 Medline 数据库的朋友,我补充一点:
大约有。 20.000.000 条记录(83.4 GB 磁盘空间),每条记录都有许多字段和子字段。 您可以以 XML 格式下载此 DB(带有许可证)。 这 20M 的记录分布在 653 个文件中。 每个文件都有一个 MedlineCitationSet,这是一组记录 (MedlineCitation's)。我想处理这些记录并获取标题,摘要等信息...然后我想用python和mongodb索引这些文件(或记录)。我有一个选择:
我创建了一个 medline 解析器,并为每条记录创建了一个用于 mongoDB 的 JSON 条目,并在通过 pubmedID 进行索引之后。然后我可以创建一个像 get_abstract('pubmedID'):string 这样的函数。
我的问题是:
这是个好主意吗? (XML 解析 --> JSON --> 插入和索引!) 我可以使用 GridFS 并为每个文件获取与记录等效的块吗?怎么样? 你知道其他方法吗?【问题讨论】:
有效吗?然后就好了。你有问题吗?如果是这样,请提供您遇到的实际问题。听起来你真正的问题很简单——如何使用 GridFS。也许您应该特别关注您需要的具体帮助。 “你知道另一种方式吗”是一个愚蠢的问题,有无数其他方式,其中大多数都是一个坏主意。 谢谢 S.Lott!是的,我的 exatc 问题是,如何将 GridFS 与 Medline 文件结合起来?亚历克斯。 我的 XML2JSON 解析器有问题,因为这个 XML 不简单,不知道 GridFS 能不能帮到我…… Àlex:这听起来像是两个独立的问题,只是与这个问题有一点关系。在提出其他问题之前,请尽可能多地阅读 GridFS 并尽可能提出具体 一个有关使用 GridFS 和 Medline 文件的问题。所有软件均可集成;您需要大量阅读,以便您可以为我们提供一些关于您希望如何进行的指导和方向。 “我的 XML2JSON 解析器出现问题”毫无意义且令人困惑。您有什么确切问题?请非常非常具体并包含导致实际问题的实际代码。I want to process these records and get information such as title, abstract
- 听起来你需要弹性搜索,而不是 mongodb。
【参考方案1】:
这是个好主意吗? (XML 解析 --> JSON --> 插入和索引!)
有效吗? JSON 往往比 XML 小,这可能是一个很好的变化。
我可以使用 GridFS 并为每个文件获取与记录等效的块吗?怎么样?
GridFS 通常用于存储图像或视频等静态文件。 MongoDB 可以支持非常大的文档(16MB == 几本小说)。 medline 文章的文本可能会比这小得多。
如果您只是打算存储文本,那么您应该不需要任何 GridFS。如果你想存储图像,那么 GridFS 可以做到这一点。
请阅读GridFS here。请注意,GridFS 只是一个规范。一切仍然存储在常规 MongoDB 集合中。
PS:看起来pubmedID
是唯一键。创建文档时,您可以通过用pubmedID
覆盖_id
来节省空间。
即: collection.insert("_id": xml_obj.pubmedID, "text" : xml_obj.article_text)
【讨论】:
以上是关于使用 python 和 mongoDB 索引 20M 的记录的主要内容,如果未能解决你的问题,请参考以下文章