Ich überlege gerade, wie ich meine DynamoDB-Tabelle (n) strukturiere.DynamoDB-Tabellenentwurf für monatliche Daten
Ich habe folgende Datenstruktur:
{
UserId: string,
Id: string,
Date: string, //format: yyyy-mm-dd
From: string,
To: string,
Spent: string
}
So ist mein Ziel Stunden Arbeit zu speichern.
Ich werde durch UserId und Datum abfragen. So bekomme ich die Arbeitsstunden für den Benutzer, der angemeldet ist. Zum Beispiel: Abfrage für 2017-09-12.
Oder: Arbeitsstunden zwischen 2017.08.12 und 2017-09-30
Hash Key: UserId,
Sortierschlüssel: Id (Ich möchte nach Datum abfragen, aber Hash Key und Sort Key müssen eindeutig sein)
Secondary Local Index: Datum
Meine Frage: sollte ich spaltete die Tabelle in mehrere Monat getrennt Tabellen? Wenn ja: Es gibt keine Möglichkeit, mehrere Tabellen abzufragen. Also muss ich herausfinden, welche Tabellen von der Anfrage benötigt werden und sie einzeln abfragen und die Ergebnisse zusammenfügen?
Edit: Und die Tabellen muss ich automatisch auf den Fluss erstellen? Also muss ich überprüfen, ob die Tabelle bereits existiert und wenn nicht, werde ich sie in der Anfrage erstellen?
Ich beziehe den Amazon DynamoDB docs:
die Anwendungen uneben Zugriffsmuster über alle Elemente in der Tabelle zeigen könnte, wo die aktuellen Kundendaten relevanter und Ihre Anwendung ist vielleicht die neuesten Produkte mehr zugreifen häufig und im Laufe der Zeit wird auf diese Elemente weniger zugegriffen, und auf die älteren Elemente wird selten zugegriffen. Wenn dies ein bekanntes Zugriffsmuster ist, können Sie dies beim Entwerfen Ihres Tabellenschemas berücksichtigen. Anstatt alle Elemente in einer einzelnen Tabelle zu speichern, können Sie mehrere Elemente zum Speichern dieser Elemente verwenden. Sie könnten beispielsweise Tabellen erstellen, um monatliche oder wöchentliche Daten zu speichern. Für die Tabelle, die Daten aus dem letzten Monat oder der letzten Woche speichert, in denen die Datenzugriffsrate hoch ist, fordern Sie einen höheren Durchsatz an und für Tabellen, die ältere Daten speichern, können Sie den Durchsatz senken und Ressourcen einsparen.
Amazon DynamoDB Guidelines for Tables
Wenn Sie weitere Informationen benötigen, wenden Sie es sagen! Danke im Voraus!
Vielen Dank für diese großartige Idee! Ich hätte nie über eine Event-Immobilie nachgedacht, um die Arbeitsstunden zu speichern. Deine Kommentare erwähnen den Weg für Java, richtig? Ich benutze NodeJs. So wäre Events einfach ein Array von Objekten mit den Eigenschaften from, to und expended. Weißt du, was in NodeJs gleich ist? – Lados
Ja, ich erwähnte den Ereignistyp für Java. und für JS müssen Sie Array von Objekten verwenden, etwa 'var events = []; events.push ({ From: fromValue, To: toValue, ausgegebeneTime: verbrachteTimeValue }); ' –