DynamoDB und Benutzeranmeldungstabelle

8

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

    
Mark 19.04.2012, 13:17
quelle

2 Antworten

5

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.

    
Rodrigo Ribeiro 19.04.2012 14:19
quelle
1

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.

    
senthil3569 27.04.2012 10:10
quelle

Tags und Links