Дизайн базы данных движка рекомендаций? - PullRequest
2 голосов
/ 21 августа 2009

В настоящее время я работаю над системами рекомендаций, особенно для аудиофайлов. Но я новичок в этом вопросе. Я пытаюсь спроектировать базу данных сначала с помощью mysql, но я не могу решить, как это сделать. Это в основном система, которую создают пользователи профиль, затем ищите музыку и система рекомендует музыку, похожую на понравившуюся.

  1. какую базу данных мне использовать? (Mysql приходит в голову как первое предположение)
  2. это веб-проект, а затем с мобильной стороны. Какие технологии я должен использовать? (PHP, Android платформа ...)
  3. Каковы подводные камни этого проект.
  4. как проектировать базу данных для системы как это?

Ответы [ 3 ]

4 голосов
/ 21 августа 2009

Читайте "Программирование Коллективного Разума" . У них есть несколько прекрасных алгоритмов для рекомендаций в главе 2 «Создание рекомендаций».

4 голосов
/ 21 августа 2009

Любая реляционная база данных должна быть хороша для хранения необработанных данных, таких как списки песен, список пользователей, предпочтения песен пользователя.

Я думаю, вы обнаружите, что реляционные базы данных (и SQL) не так уж хороши для хранения различных структур данных, которые будет строить ваш рекомендатель. Ваш механизм рекомендаций, вероятно, будет создавать данные, которые на самом деле не обязательно должны быть в таблицах, и манипулировать ими для хранения в реляционной базе данных может быть просто потраченной впустую работой.

Просто будьте в курсе того, что вы делаете, и не тратьте время на вставку вещей в базу данных SQL, если вам кажется, что это неправильно. Может быть, посмотрите на использование ориентированной на документы базы данных, например MongoDB .

Рекомендатель, который я недавно написал, на самом деле является процессом Java-сервера, который считывает необработанные данные из MySQL, выполняет всю свою работу в памяти и предоставляет рекомендации для моего приложения через HTTP API. Я даже не удосужился сохранить данные с рекомендациями навсегда, так как они могут быть восстановлены.

3 голосов
/ 21 августа 2009

Ну, это неопределенный вопрос полтора, но я сделаю все возможное, чтобы ответить:

  1. MySQL - это надежная база данных, как и PostgreSQL . Оба бесплатны и с открытым исходным кодом. MySQL более широко поддерживается и немного проще в использовании, но у Postgres есть несколько очень интересных функций и возможностей, которые стоит попробовать. WikiVS имеет хорошее сравнение двух.
  2. У смартфонов браузеры все лучше и лучше. Используйте PHP или ASP.NET (как вам удобно), а затем создайте мобильный сайт, который будет выглядеть лучше при меньших разрешениях.
  3. Есть много. Прежде всего, насколько хорош ваш алгоритм рекомендаций? Во-вторых, хранение аудиофайлов может быстро освободить место для хранения. Какой у тебя план по масштабированию? В-третьих, насколько хорошо вы знаете дизайн базы данных? Можете ли вы спроектировать большую, здоровенную базу данных и правильно ее проиндексировать? Если нет, вам нужно начать читать все, что вы можете об индексах и дизайне базы данных. В-четвертых, это программный проект, и у него всегда есть подводные камни. Лучшее, что вы можете сделать - это опубликовать здесь, когда возникнут проблемы, и мы всегда сможем увидеть, что могут сделать хорошие люди из StackOverflow.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...