3

我想谈谈我的小项目,以及我是否走上正轨。我需要处理 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 并获取与每个文件的记录等效的块吗?如何?
  • 你知道其他方法吗?
4

1 回答 1

2

这是个好主意吗?(XML 解析 --> JSON --> 插入和索引!)

它有效吗?JSON 往往比 XML 小,这可能是一个很好的改变。

我可以使用 GridFS 并获取与每个文件的记录等效的块吗?如何?

GridFS 通常用于存储图像或视频等静态文件。MongoDB 可以支持非常大的文档(16MB == 几本小说)。medline 文章的文本可能会比这小得多。

如果您只是打算存储文本,那么您不需要任何 GridFS。如果您想存储图像,那么 GridFS 对执行此操作很有用。

请在此处阅读GridFS。请注意,GridFS 只是一个规范。一切仍然存储在常规 MongoDB 集合中。


PS:它看起来像pubmedID一个唯一的键。您可以通过在创建文档时覆盖_idwith来节省空间。pubmedID

IE: collection.insert({"_id": xml_obj.pubmedID, "text" : xml_obj.article_text})

于 2011-05-03T19:39:47.453 回答