-1

我的应用程序创建的数据片段在 xml 中如下所示:

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

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

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

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

任何建议都非常感谢!

4

3 回答 3

1

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

使用外壳的示例:

$ 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}]}
于 2009-11-15T22:47:53.377 回答
1

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

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

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

于 2009-11-15T22:49:24.770 回答
0

您应该明确地为每个 XML 文件拥有多个资源,但前提是您希望同时拥有所有资源。如果您只需要向任何人发送少量资源,那么请继续制作单独的 XML。

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

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

于 2009-11-15T22:49:03.343 回答