存储和访问大量数据

时间:2009-11-15 22:43:02

标签: mongodb

我的应用程序创建了一些数据,这些数据在xml中看起来像这样:

<resource url="someurl">
   <term>
      <name>somename</name>
      <frequency>somenumber</frequency>
   </term>    
   ...
   ...
   ...
</resource>

这就是我现在存储这些“资源”的方式。每个XML文件的资源。根据需要为每个“资源”提供尽可能多的“术语”。 问题是,我需要产生大约200万这些资源。 我已经生成了近500.000并且我的mac对它不是很满意。 所以我的问题是:我应该如何存储这些数据?

  • 一个数据库?这很难,因为数据结构不固定......
  • 也许将一些资源合并到更大的XML文件中?
  • ...?

创建数据后,我无需更改数据。 现在我正在通过该资源文件的名称访问特定资源。

非常感谢任何建议!

3 个答案:

答案 0 :(得分:1)

并非所有数据库都是关系型的。请查看示例mongodb。它将您的数据存储为类似json的对象,类似于您的资源。

使用shell的示例:

$ mongo
> db.resources.save({url: "someurl", 
                     terms: [{name: "name1", frequency: 17.0},
                             {name: "name2", frequency: 42.0}]})
> db.resources.find()
{"_id" :  ObjectId( "4b00884b3a77b8b2fa3a8f77"), 
 "url" : "someurl" , 
 "terms" : [{"name" : "name1" , "frequency" : 17},
            {"name" : "name2" , "frequency" : 42}]}

答案 1 :(得分:1)

如果您无法预测数据的组织方式,那么http://couchdb.apache.org/可能对您有用。它是一个无模式的数据库。

无论如何,XML可能不是大数据的最佳选择。

也许尝试JSON或YAML效果更好?它们需要更少的空间并且更容易解析(但是我没有使用更大规模的那些格式的经验。也许我错了)。

答案 2 :(得分:0)

您应该为每个XML文件设置多个资源,但前提是您需要同时拥有所有资源。如果您只需要向任何人发送一小撮资源,那么请继续制作单独的XML。

即使在这种情况下,您也可以保留大型XML文件,并根据需要生成原始数据集中较小的文件。

使用像SQLite3这样的数据库可以让您使用SQL语法获得更快的搜索时间和更轻松的数据操作。