2012-04-25 121 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

相關問題