【问题标题】:Indexing 20M of records with python and mongoDB使用 python 和 mongoDB 索引 20M 的记录
【发布时间】: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。

标签: python mongodb pymongo gridfs


【解决方案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})

【讨论】:

    猜你喜欢
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    相关资源
    最近更新 更多