2009-08-21 130 views
2

我目前正在研究推薦系統,特別是音頻文件。但我是這個主題的初學者。我試圖用mysql設計數據庫,但我不能決定如何去做。基本上是一個用戶創建配置文件的系統然後搜索音樂和系統推薦他們喜歡的音樂。推薦引擎數據庫的設計?

  1. 我應該使用哪個數據庫?(mysql的 來到我的腦海裏的第一猜測)
  2. 它是一個web項目,並隨後 與移動side.Which技術 我應該使用?(PHP,Android的 平臺...)
  3. 什麼是這個項目 的陷阱。
  4. 如何爲系統設計數據庫 那樣?

回答

4

任何關係型數據庫應該是不錯的,用於存儲喜歡歌曲列表,用戶列表,用戶的喜好歌曲的原始數據..

我認爲你會發現一個關係數據庫(和SQL)是對於存儲推薦人將要構建的各種數據結構來說並不是那麼好。您的推薦引擎可能會創建並不真正需要放入表格中的數據,並將其用於關係數據庫中的存儲操作可能只是浪費工作。

要知道你在做什麼,不花時間把東西到SQL數據庫,如果感覺不對。也許看看使用面向文檔的數據庫,如MongoDB

的推薦,我最近寫的其實是一個Java服務器的過程,從MySQL中的原始數據讀取,完成所有其內存的工作,並通過HTTP API提供的推薦數據我的應用程序。由於可以重新生成,所以我甚至都不會永久存儲推薦數據。

3

嗯,這是一個含糊不清的問題和半,但我會盡我所能回答:

  1. MySQL是一個可靠的數據庫,所以是PostgreSQL。兩者都是免費和開源的。 MySQL受到了更廣泛的支持,使用起來更容易一些,但Postgres有一些非常酷的特性和功能,值得引用。 WikiVS有兩個很好的比較。
  2. 智能手機擁有更好更好的瀏覽器。使用PHP或ASP.NET(無論你喜歡什麼),然後構建一個移動網站,在較小的分辨率上看起來更好。
  3. 有很多。首先,你的推薦算法有多好?其次,存儲音頻文件可能會快速佔用存儲空間。你的縮放計劃是什麼?第三,你對數據庫設計有多瞭解?你能設計一個龐大而龐大的數據庫並將其正確編制索引嗎?如果不是,您需要開始閱讀關於索引和數據庫設計的所有內容。第四,這是一個軟件項目,而且這些項目總是有缺陷。當出現問題時,您可以做的最好的事情就是在這裏發佈,並且我們總能看到StackOverflow的優秀人員可以做些什麼來提供幫助。
+0

我不會在數據庫中存儲實際的音頻文件,而不是我將存儲音頻文件的參考。 – 2009-08-21 12:58:24

+0

@Burak:他們仍然使用相同數量的存儲空間。 – Eric 2009-08-21 13:05:51

4

去閱讀"Programming Collective Intelligence"。他們在第2章「制定建議」中提供了許多用於建議的精細算法。

+0

我有這本書,我希望它是一本理論書,但它不是那樣的,作者使用了很好的例子 – 2009-08-21 12:56:02