2009-11-15 76 views
-1

我的應用程序創建的數據塊,在XML中,應該是這樣的:存儲和訪問大量數據的

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

這是我如何保存這些「資源」了。每個XML文件的資源。根據需要爲每個「資源」提供許多「術語」。 問題是,我需要產生約200萬這些資源。 我已經生成了近500.000,我的Mac不是很高興。 所以我的問題是:我應該如何存儲這些數據?

  • 數據庫?這將是困難的,因爲數據的結構不固定...
  • 也許合併一些資源到更大的XML文件?
  • ...?

創建數據後我不需要更改數據。 現在我正在通過資源文件的名稱訪問特定資源。

任何建議,非常感謝!

+0

典型資源有多少個詞彙? –

+0

平均50 – pns

+0

你應該嘗試vtd-xml讀取大量的xml。 –

回答

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

好吧,我要試一試mongodb或couchdb。我猜這些可以很好地處理大型數據集? – pns

+0

另外,任何人都可以證實,我不會有任何問題移動數據集跨不同的操作系統? – pns

+0

不知道細節我認爲mongodb應該很好地處理你的情況。你可以從任何支持的平臺通過api訪問mongo,如果你想將數據庫移動到另一個平臺,我認爲你可以複製數據文件。 – serbaut

0

你應該deffinetely有每個XML文件幾種資源的開發,但只有當你預計將有所有的資源toguether在同一時間。如果你只需要發送資源給任何人,那麼繼續製作單個的XML。

即使在這種情況下,您仍然可以保留大型XML文件,並根據需要生成原始數據集中較小的文件。

使用像SQLite3這樣的數據庫可以讓您使用SQL語法更快地尋找時間並更輕鬆地操作數據。

1

如果你不能預測你的數據將如何組織,也許http://couchdb.apache.org/可能會對你有趣。它是一個無模式數據庫。

不管怎樣,XML可能不是大數據量的最佳選擇。

也許嘗試JSON或YAML更好?他們需要更少的空間,並且更容易解析(然而,我沒有更大規模地使用這些格式的經驗,也許我錯了)。