我的应用程序创建了一些数据,这些数据在xml中看起来像这样:
<resource url="someurl">
<term>
<name>somename</name>
<frequency>somenumber</frequency>
</term>
...
...
...
</resource>
这就是我现在存储这些“资源”的方式。每个XML文件的资源。根据需要为每个“资源”提供尽可能多的“术语”。 问题是,我需要产生大约200万这些资源。 我已经生成了近500.000并且我的mac对它不是很满意。 所以我的问题是:我应该如何存储这些数据?
创建数据后,我无需更改数据。 现在我正在通过该资源文件的名称访问特定资源。
非常感谢任何建议!
答案 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语法获得更快的搜索时间和更轻松的数据操作。