推荐引擎数据库的设计?

时间:2009-08-21 12:45:11

标签: mysql audio database-design recommendation-engine

我目前正致力于推荐系统,特别是音频文件。但我是这个主题的初学者。我正在尝试首先使用mysql设计数据库,但我无法决定如何去做。我基本上是一个用户创建的系统然后搜索音乐,系统推荐他们喜欢的音乐。

  1. 我应该使用哪个数据库?(Mysql 我的想法是第一个猜测)
  2. 这是一个网络项目,然后 与移动方面。哪些技术 我应该使用?(php,android 平台...)
  3. 这有什么陷阱 项目
  4. 如何为系统设计数据库 那样的?

3 个答案:

答案 0 :(得分:4)

阅读"Programming Collective Intelligence"。他们在第2章“提出建议”中提出了许多精确的算法建议。

答案 1 :(得分:4)

任何关系数据库都应该适合存储原始数据,如歌曲列表,用户列表,用户的歌曲偏好..

我认为您会发现关系数据库(和SQL)对于存储推荐器将构建的各种数据结构并不是那么好。您的推荐引擎可能会创建实际上不需要在表中的数据,并且操纵它来存储在关系数据库中可能只是浪费了工作。

只要知道自己在做什么,如果感觉不对,就不要把时间花在SQL数据库上。也许考虑使用像MongoDB这样的面向文档的数据库。

我最近编写的推荐人实际上是一个Java服务器进程,它从MySQL读取原始数据,在内存中完成所有工作,并通过HTTP API向我的应用程序提供推荐数据。我甚至不打算永久存储推荐数据,因为它可以重新生成。

答案 2 :(得分:3)

嗯,这是一个模糊的问题和一半,但我会尽力回答:

  1. MySQL是一个可靠的数据库,PostgreSQL也是如此。两者都是免费和开源的。 MySQL得到了更广泛的支持,并且更容易使用,但Postgres有一些非常酷的特性和功能值得一试。 WikiVS对两者进行了很好的比较。
  2. 智能手机拥有越来越好的浏览器。使用PHP或ASP.NET(无论你喜欢什么),然后构建一个在较小分辨率上看起来更好的移动网站。
  3. 有很多。首先,您的推荐算法有多好?其次,存储音频文件会迅速占用存储空间。你的扩展计划是什么?第三,您对数据库设计的了解程度如何?你能设计一个庞大,庞大的数据库并正确索引吗?如果没有,您需要开始阅读索引和数据库设计的所有内容。第四,它是一个软件项目,总是有陷阱。当问题出现时,您可以做的最好的事情就是在这里发布,我们总能看到StackOverflow的优秀人才可以提供帮助。