2016-08-06 9 views
0

Dies ist aus einem Android-Kontext. Ich benutze den SDK von Amazon Web Service, um eine Android-App mit grundlegenden Funktionen für soziale Medien zu erstellen. Ich muss Benutzer speichern, ihre Beiträge, misc Daten, etc ... Ich denke, es so zu strukturieren:Die beste Methode, um die DyanomoDB von AWS für Benutzerkonten zu strukturieren?

Eine große Tabelle namens "Benutzer", die ein Element für jeden Benutzer enthalten wird. Und dann haben Sie nur eine Tonne von Attributen für jeden Benutzer, der alle ihre Posts und misc-Daten speichert.

Aber ich würde gerne andere Meinungen darüber hören, wie ich dieses Ding am besten strukturieren sollte. Ich habe im Grunde keine Erfahrung mit so etwas, also kann ich nicht anders, als zu vermuten, dass ich falsch herumgehe.

Dank

Antwort

2

Es gibt mehrere Möglichkeiten, wie Sie über Ihr Design gehen könnten. Sie sollten die Nutzungsmuster Ihres Systems berücksichtigen, um ein zuverlässiges und skalierbares Design abzuleiten.

Ich würde Beiträge mit Benutzerinformationen in der gleichen Tabelle nicht mischen. Stattdessen hätte ich eine Tabelle mit Benutzern, die vermutlich durch eine Art von Kennung identifiziert wurde - es könnte die E-Mail-Adresse des Benutzers, eine eindeutige Konto-ID oder ein anderer Ersatz-Schlüssel sein. Es ist in Ordnung, Metadaten über die Benutzer in dieser Tabelle zu speichern. Dann würde ich eine weitere Tabelle mit Posts erstellen. Die Posts könnten nach Benutzer-ID partitioniert und nach Zeitstempel sortiert sein. Sie können auch ein anderes groberes Zeitattribut wie das Datum erwägen und eine GSI erstellen, um die Posts nach Datum und Uhrzeit zu indizieren, um die letzten Posts abrufen zu können. Die Granularität könnte auch stündlich sein, wenn Sie viele Posts haben.

Sie sollten zu denken beginnen:

  • , wie viele Nutzer haben Sie zu erwarten haben - werden Sie haben Hunderte, Tausende, Millionen
  • wie viele täglich aktiven Nutzer erwarten Sie haben?
  • Wie viele Beiträge wird ein typischer Benutzer machen?
  • werden Posts im Laufe des Tages verteilt, oder werden sie zusammen geclustert
  • Was sind die wichtigsten Aspekte für Sie? schnelle Zustellung/Abruf von Nachrichten? zuverlässige Nachrichtenzustellung Online/Offline-Nachrichtenübermittlung?
  • benötigen Sie Unterstützung für Gruppenbeiträge (dh mehrere Benutzer, die am selben Thread arbeiten)?

Viel Glück!

+0

Vielen Dank für den informativen Kommentar! Ich muss jetzt viel darüber nachdenken. Ich stellte diese Frage in einem anderen Forum und die meisten Leute empfahlen die Verwendung von Amazon's Relational Database Service anstelle ihrer DynamoDB Datenbank. Irgendwelche Gedanken dazu? – theRealOne

+0

Ich denke, du musst anfangen, die Fragen zu beantworten, die ich in meine Antwort aufgenommen habe. relationale Datenbanken sind besser bei einigen Dingen (dh komplexe Joins; Transaktionen über mehrere Tabellen hinweg), während nicht relationale (NoSQL) Datenbanken, einschließlich DynamoDB, besser sind (dh horizontales Skalieren; hohe Verfügbarkeit) - also müssen Sie based wählen auf Ihrem Use Case und Ziele –

+0

Okay, nochmals vielen Dank! – theRealOne

Verwandte Themen