2011-05-03 47 views
3

我想提一下我的小项目,如果我正常运行。我需要使用Medline的所有文章(http://www.nlm.nih.gov/bsd/licensee/2011_stats/baseline_doc.html)。对于那些不熟悉Medline数据库的人,我添加一些信息:使用python和mongoDB索引20M记录

  • 大约有20.000.000条记录(83.4 GB磁盘空间),每条记录都有很多字段和子字段。
  • 您可以下载此数据库(带有许可证)的XML格式。
  • 这些20M记录分布在653个文件中。
  • 每个文件都有一个MedlineCitationSet,这是一组记录(MedlineCitation's)。

我想处理这些记录,并获得信息,如标题,摘要...然后我想这些文件(或记录)与python和mongodb索引。我有一个选项:

我已经创建了一个medline解析器,并为每个记录创建了一个mongoDB的JSON条目,并通过pubmedID建立索引之后。然后我可以创建一个函数,如get_abstract('pubmedID'):string。

我的问题是:

  • 这是个好主意吗? (XML解析 - > JSON - >插入和索引!)
  • 我可以使用GridFS并获取与每个文件的记录相对应的块吗?怎么样?
  • 你知道吗?
+3

是否行得通?那很好。你有问题吗?如果是这样,请提供您遇到的实际问题。这听起来像你真正的问题很简单 - 如何使用GridFS。也许你应该专注于你需要的具体帮助。 “你知道另一种方式”是一个愚蠢的问题,有无数其他方式,其中大多数是一个坏主意。 – 2011-05-03 12:24:24

+0

谢谢S.Lott!是的,我的exatc问题是,我如何将GridFS和Medline文件结合起来? 。 – 2011-05-03 13:01:31

+0

我的XML2JSON解析器有问题,因为这个XML不是微不足道的,我不知道GridFS是否可以帮助我...... – 2011-05-03 14:06:36

回答

2

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

它工作吗? JSON往往比XML小,这可能是一个很好的变化。

我可以使用GridFS并获取与每个文件的记录相对应的块吗?怎么样?

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

如果你只是计划存储文本,那么你不应该需要任何GridFS。如果你想存储图像,那么GridFS对此很有用。请致电GridFS here。请注意,GridFS只是一个规范。一切仍然存储在常规的MongoDB集合中。


PS:它看起来像pubmedID是一个独特的关键。在创建文档时,您可以通过覆盖_idpubmedID来节省空间。

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

+0

非常感谢!是的,我将使用pudmedID作为_id! :d – 2011-05-04 07:32:47