2012-06-11 7 views
7

Ich arbeite an einem Projekt, bei dem die Generierung von Feeds für Benutzeraktivität erforderlich ist. Wenn Benutzer A Benutzer B folgt und Benutzer B einige Aktivität Benutzer A, sehen Sie es auf seiner Homepage.DB-Lösung für Benutzeraktivitäts-Feed

Jetzt bin ich auf der Suche nach einer DB-Lösung für persistente Benutzer-Feed. Sobald Benutzer B eine Aktion ausführt, erhalten alle Benutzer, die Benutzer B folgen, einen Datensatz. Ich denke, das Speichern eines Mongodb-Dokuments für einen Benutzer mit einer Liste von Objektreferenzen ist besser als das Speichern eines Dokuments für jeden Feed-Datensatz.

Auf der anderen Seite wird es viele schreiben und noch mehr liest und mongodb hat eine Sperre für eine Sammlung. Vielleicht könnte das ein Problem sein. Oder vielleicht könnte Redis dafür verwendet werden. Und wieder etwas mit Gleichzeitigkeit haben. Ich bin nicht sehr erfahren in beiden.

Die zusammenfassende Frage ist, was wäre besser für diese Aufgabe zu verwenden: Mongo, Redis oder etwas anderes?

Vielen Dank!

+0

Es klingt wie die Datenbank-Plattform wurde noch nicht ausgewählt? (Ansonsten klang es beim ersten Lesen zunächst so, als hätten Sie eine vorhandene Datenbank und wollten eine Art Benachrichtigung über Datenänderungsereignisse, wie Trigger oder etwas Ähnliches.) Wenn dies in der frühen Analysephase ist und die eigentliche Datenbanktechnologie nicht Ich habe dir die ganze Architektur/das Design (und die Anforderungen) vorgegeben, bevor du dich für eine bestimmte Datenbank-Technologie engagierst (und fwiw, Mongo und Redis sind ziemlich verschieden: einer ist ein In-Memory-Cache, der Andere ist ein persistenter Speicher.) – michael

+0

welche Programmiersprache verwenden Sie? – brycemcd

+0

@Bryce Ich benutze Python. –

Antwort

2

Achten Sie darauf, neo4j auszuwerten. Es wurde für viele der gleichen Anwendungsfälle erstellt, die Sie beschreiben.

+1

Graph-basierte Db's scheinen wirklich, wenn man Sachen berechnet, die mit 'Freunden von Freunden' in Verbindung stehen, d. H. Mehr als 1 Kante in einem Graphen durchlaufen. Das scheint hier nicht der Fall zu sein –

2

Cassandra ist eine bewährte Wahl für Self-Hosting-Feeds, obwohl es in der Regel als komplex anzusehen und zu betreiben ist.

Heutzutage gibt es 3rd Party/gehostete Optionen wie GetStream.io und DynamoDB.

Verwandte Themen