2011-11-15 123 views
1

這是我的用例。將數據存儲在XML或MongoDB中

  1. 我有一些數據,我現在存儲在xml文件中。我正在存儲的數據不是永久的,即一旦用戶註銷,我將刪除用戶數據。
  2. 我的服務器使用XML請求和響應與客戶端進行通信。所以最初我們決定,因爲我們發送XML作爲響應,所以讓它存儲在XML中,以便保存從數據庫到XML格式的轉換時間。
  3. 客戶端將根據一些過濾條件請求XML。所以我將不得不使用XQUERY。
  4. 最多100個條目將在XML中存在,至少現在是這樣。

現在我想聽聽關於是否應該使用XML或MongoDB的一些建議。 我的疑慮:

  1. 在MongoDB中存儲臨時數據並在會話結束後刪除/執行備份有多好?
  2. 從MongoDB json格式轉換爲XML。
  3. 處理模式設計中的更改。

我不能使用除MongoDB之外的任何其他數據庫,因爲一些持久操作仍在MongoDB上完成。

在此先感謝。

+0

如果你的數據量足夠低,你甚至會考慮基於文件的存儲,MongoDB將很容易地處理存儲XML和適當管理空間。恕我直言,爲Web解決方案存儲XML文件正在尋求麻煩。使用適當的數據存儲。大多數數據庫可以處理存儲XML數據。使用最適合您環境的設備。 –

回答

1

您最好使用MongoDB來處理會話數據。根據會話開始或會話結束創建和刪除對象應該沒有問題。您將利用高性能的MongoDB,這將爲您提供隨時間增長的可擴展性。根據您選擇的語言(我使用C#),您可能會將Json序列化爲對象而不會有任何性能損失。例如,C#驅動程序爲您處理序列化,因此您從Mongo中檢索到的每個對象都將自動錶示爲C#對象。與您可以填充C#對象並將其存儲在數據庫中的方式相同,全部由驅動程序處理。

如果您通過對象管理數據以序列化和從mongodb進行序列化,您實際上也可以序列化/反序列化爲XML。因此,您用於Mongo的相同對象可用於管理您的xml。

因此,要回答你的問題:

  1. 有多好是它的臨時數據存儲在MongoDB中,並刪除/備份採取與一次會議做了什麼?應該與其他數據庫一樣合適。絕對比將數據存儲在服務器上的XML文件中更好。

  2. 從MongoDB json格式轉換爲XML。根據您的mongodb驅動程序,您可以同時使用對象和序列化/反序列化到mongodb和xml,使您從xml到mongodb的轉換非常容易。

  3. 處理模式設計中的更改。 Mongo是無模式的,因爲它使用文檔而不是表格。文檔結構中的任何更改都將由mongoDB處理,因爲在關係數據庫中沒有模式。

我希望這是有道理的。