2009-08-21 4 views
2

Derzeit arbeite ich an Empfehlungssystemen speziell für Audiodateien.aber ich bin ein Anfänger bei diesem Thema. Ich versuche, Datenbank zuerst mit mysql zu entwerfen, aber ich kann nicht entscheiden, wie es zu tun ist. Es ist im Grunde ein System, das Benutzer Profil erstellen dann suchen Sie nach der Musik und dem System empfehlen sie Musik ähnlich wie sie es mögen.Design der Empfehlungs-Engine-Datenbank?

  1. die Datenbank soll ich verwenden? (Mysql kommt meiner Meinung nach als erste Vermutung)
  2. es ein Web-Projekt ist und auch dann mit mobilen side.Which Technologien soll ich verwenden? (Php, android Plattform ...)
  3. Was sind die Fallstricke dieses Projekts.
  4. wie Datenbank für System so gestalten?

Antwort

4

Jede relationale Datenbank sollte ich denke, für die Speicherung der Rohdaten wie Listen von Songs sowie eine Liste von Benutzern, Benutzer Song Vorlieben ..

gut sein, dass Sie, dass eine relationale Datenbanken (und SQL) zu finden sind nicht so toll zum Speichern der verschiedenen Datenstrukturen, die Ihr Empfehler konstruieren wird. Ihre Empfehlungs-Engine wird wahrscheinlich Daten erstellen, die nicht wirklich in Tabellen enthalten sein müssen, und das Manipulieren für den Speicher in einer relationalen Datenbank kann nur verschwendete Arbeit sein.

Seien Sie sich dessen bewusst, was Sie gerade tun, und verbringen Sie keine Zeit damit, Daten in eine SQL-Datenbank zu schreiben, wenn es sich falsch anfühlt. Vielleicht schauen Sie sich eine dokumentenorientierte Datenbank wie MongoDB an.

Der Recommender, den ich vor kurzem geschrieben habe, ist eigentlich ein Java-Server-Prozess, der die Rohdaten von MySQL einliest, all seine Arbeit im Speicher ausführt und Empfehlungsdaten über eine HTTP-API an meine Anwendung liefert. Ich habe nicht einmal die Empfehlungsdaten dauerhaft gespeichert, da sie regeneriert werden können.

3

Nun, das ist eine vage Frage und eine Hälfte, aber ich werde mein Bestes tun, um zu antworten:

  1. MySQL ist eine solide Datenbasis, und ist so PostgreSQL. Beide sind frei und Open Source. MySQL wird weiter unterstützt und ist etwas einfacher zu benutzen, aber Postgres hat einige sehr coole Features und Funktionen, die es wert sind, betrachtet zu werden. WikiVS hat einen guten Vergleich der beiden.
  2. Smartphones haben immer bessere Browser. Verwenden Sie PHP oder ASP.NET (was immer Sie möchten), und bauen Sie dann eine mobile Website aus, die auf den kleineren Auflösungen besser aussieht.
  3. Es gibt eine Menge. In erster Linie, wie gut ist Ihr Empfehlungsalgorithmus? Zweitens kann das Speichern von Audiodateien schnell Speicherplatz belegen. Was ist dein Plan für die Skalierung? Drittens, wie gut kennen Sie das Datenbankdesign? Können Sie eine große Datenbank erstellen und richtig indizieren? Wenn nicht, müssen Sie anfangen, alles zu lesen, was Sie über Indizes und Datenbankdesign können. Viertens ist es ein Software-Projekt, und diese haben immer Fallstricke. Das Beste, was Sie tun können, ist hier zu posten, wenn Probleme auftreten und wir können immer sehen, was die netten Leute von StackOverflow tun können, um zu helfen.
+0

Ich werde nicht tatsächliche Audiodateien in der Datenbank speichern, anstatt ich Referenzen von Audiodateien speichern. –

+0

@Burak: Sie verwenden immer noch die gleiche Menge an Speicherplatz. – Eric

4

Go lesen "Programming Collective Intelligence". Sie haben eine Reihe von feinen Algorithmen für Empfehlungen in Kapitel 2, "Empfehlungen abgeben".

+0

Ich habe dieses Buch, ich erwarte, dass es ein theoretisches Buch sein wird, aber es ist nicht so, Autor verwendet wirklich gute Beispiele –