2012-04-25 92 views
0

将数据存储在数千个单独的文件或几个XML文件中会更好吗?在成千上万的小文件中存储XML数据

数据在多个设备之间共享,这些设备会定期更新它的各个部分。为了最小化冲突,每个对象都将存储在一个以GUID命名的文件中。

例如,可能有1000个项目存储在1000个XML文件中,500个类别存储在另一个500个文件中。

OmniFocus和1Password等应用程序目前使用此方法的变体。 OmniFocus压缩了一些文件,但仍然受到webDav驱动器性能问题的困扰。

用户通常会拥有数千个文件,其中一些拥有数万个文件。

在我的特殊情况下,数据存储在像Dropbox这样的服务上,因此中央数据库解决方案不可用。

修改数据的设备包括iOS,Android,Mac和PC。

这些文件不一定需要是XML。似乎只是一种存储数据的便捷方式。

我很担心这些文件的性能和其他问题。我已经有了一个使用十几个文件的工作解决方案(分为主文件和定期更改文件),但在其他解决方案中有很多边界情况,我想知道每个UID的文件是否更清晰。

想法?

回答

2

对不起,但答案是:这取决于。有几件大文件会让一些事情变得更容易/更快,有些事情会因大量小文件而变得更容易/更快。

大文件往往意味着你经常会解析你不需要的数据,并且会分配内存来保存你不需要的数据。

小文件意味着您需要某种方式来跟踪您的所有文件并为给定的操作找到正确的文件。

如果没有XML数据库,我不想处理超过1000个文件。

+0

我分享你对多个文件的保留。唉,我们正试图在没有中央服务器的情况下做到这一点。 Dropbox或同等文件服务器上的所有内容都没有中央数据库/智能可能。 – Stephen 2012-04-25 19:19:53

0

通常我建议将你的数据加载到某种数据库中。这使得以其他格式进行搜索,操作和提取变得更加简单。

话虽如此,我曾经设计过一个应用程序,依赖于数以千计的CSV文件,总计数百万行数据。设计目标之一是将数据保持原始格式,以便帮助搜索每个文件被加载到Solr索引中。

如果你还没有看到Solr在行动,我强烈推荐它。数据建立索引后,它会提供基于JSON的REST API来搜索您的内容。索引很容易保持最新和非常快。

+0

是的,我很喜欢数据库,但是我们没有中央服务器。 Dropbox或同等文件服务器上的所有内容都没有中央数据库/智能可能。虽然Solr看起来很酷。 – Stephen 2012-04-25 19:21:28

相关问题