Ich habe eine Anwendung erstellt und es hat derzeit eine ziemlich standardmäßige Benutzertabelle, wie folgt:
int ID, varchar E-Mail, varchar Passwort
Wenn ich dies zu DynamoDB wechseln würde, wie würde ich dann diese Tabelle erstellen?
Wenn ich einen Hash-Schlüssel mit der E-Mail-Adresse verwende, dann könnte ich nicht die Möglichkeit anbieten, Ihre E-Mail zu aktualisieren, und wenn ich einen Hash zum Speichern der ID verwenden würde, müsste ich einen Scan verwenden ist teuer und durch ein Limit von 1 MB begrenzt.
Irgendwelche Ratschläge bitte? Vielen Dank, Markiere
Sagen Sie, dass es teuer wäre, ID als Hash zu verwenden, weil Sie nach dem E-Mail-Feld filtern müssen?
Wenn Sie Ihre Abfragen nach einer Nicht-Schlüsselspalte filtern müssen, endet die Erstellung eines Index oft damit.
DynamoDB hat keinen integrierten Sekundärindex , ist aber relativ einfach zu implementieren.
Die Haupttabelle könnte ID als hash verwenden, wie Sie darauf hingewiesen haben, und eine andere Tabelle würde als Index dienen, könnte sein:
%Vor%Als email der Hash-Schlüssel für die Sekundärtabelle. Wenn es möglich ist, mehrere Benutzer mit derselben E-Mail zu verwenden, können Sie ID als Bereich verwenden, um die Dinge einfacher zu machen, andernfalls würde eine einfache Spalte passen.
Wenn Sie eine andere Tabelle für die Indizierung verwenden, führt dies zu einem hohen Wartungsaufwand. Ich stieß auf ein redundantes Modell von meinem ehemaligen CTO.
Für Ihre Tabelle: USER
RDBMS:
ID, E-Mail-Passwort
1, senthil3569 @ stack.com, fragt
DynamoDB:
SCHLÜSSEL, ID, E-Mail, Passwort
1, 1, [email protected], fragt
senthil3569 @ stack.com, 1, [email protected], fragt
Anstatt einen Datensatz zu speichern, speichern Sie redundant, um nicht indizierte Spalten zu holen.
Ich hoffe, die Lösung ist klar.
Tags und Links amazon-dynamodb