2011-05-18 111 views
0

我正在計劃構建文件編目系統。它會做一些與iTunes對音樂非常相似的功能,但只能與其他類型的文件一起使用。用於構建文件編目系統的數據庫

爲了澄清,應用程序將有一個文件集合,並將存儲關於數據庫中的文件的元數據。對於音樂,它將存儲參與該特定歌曲的所有藝術家,以及該歌曲已發佈的專輯等。

爲了便於通過文件和相關元數據的集合搜索,我正在考慮使用數據庫。

我正在計劃使用C++/Qt4編寫此程序作爲關於數據庫,Qt4和良好C++編碼實踐的學習練習。

對於這樣的任務,您建議使用哪種數據庫系統。這是我曾經想過使用的。隨意建議別的東西。

  1. MongoDB的
  2. CouchDB的
  3. SQLite的
  4. 元組商店如Redis的或Raik

也許在未來的應用將增長到的東西,其中有多個用戶同時訪問數據,所以確保一個用戶不覆蓋其他用戶引入的更改的機制將非常有用(我正在考慮類似於git的衝突解決方案)。

編輯標題以迴應密切投票。

+0

如果有人會擴大爲什麼他們認爲這應該是封閉的,因爲它太主觀了,我很樂意嘗試編輯問題,使其不那麼如此。 – 2011-05-18 21:04:13

回答

1

Mongo和Couch是NoSQL,而SQLite是一個關係解決方案。我認爲對於這樣一個任務,你最好用像Couch和Mongo這樣的文檔數據庫。

你見過RavenDB嗎?它是一個包含衝突解決方案的文檔數據庫,Map/Reduce查詢和全文搜索引擎。它是用.NET編寫的,但可以通過HTTP請求訪問,您可以在C++中簡單地完成這些操作。

+0

您是否會詳細說明爲什麼NoSQL會成爲此應用程序的更好選擇? – 2011-05-18 20:48:49

+0

我看了一下RavenDB,雖然它可能是一個很好的解決方案,但它依賴於.Net讓我猶豫是否要將它用於此項目,因爲我正在尋找跨平臺解決方案。 – 2011-05-18 21:02:47

+0

因爲現在當我們執行無模式數據庫時,強制實體進入表和行是沒有意義的。我在另外一個環境中寫了一些關於這方面的更多內容:http://www.code972.com/blog/2011/05/sisodb-the-wrong-solution-to-the-wrong-problems/。而RavenDB可以在Mono上運行。 – synhershko 2011-05-18 21:09:59