2014-06-24 7 views
7

Frage:Eindeutigkeits in DynamoDB Sekundärindex

DynamoDB Tabellen mit einem Primärschlüssel, der ein zusammengesetzter Hash-Schlüssel sind Bereich einzigartig ist. Gilt das auch für sekundäre Indizes?

Beispiel:

Ich habe einen Kommentar DynamoDB Tisch mit einem post_id Primärschlüssel und comment_id Bereich drücken. Zusätzlich gibt es einen lokalen sekundären Index mit einem date-user_id Bereichsschlüssel.

Jeder Eintrag ist ein Kommentar, den ein Benutzer auf dem Post hinterlassen hat. Der Zweck des Sekundärindex besteht darin, zu zählen, wie viele eindeutige Benutzer einen Kommentar zu einem Beitrag an einem bestimmten Tag hinterlassen haben.

Eintrag 1: post_id: 1 comment_id: 1 datum User_id: 2014_06_24-1

Eintrag 2: post_id: 1 comment_id: 2 datum User_id: 2014_06_24-1

Eintrag 3: post_id: 1 comment_id: 3 Datum-us er_id: 2014_06_24-2

Wenn ich eine Abfrage unter Angabe der sekundären Index, und geben Sie eine Bedingung von post_id gleich 1 und ein Datum-user_id entspricht 2014_06_24-1, ich bekomme eine Anzahl von 2 und ich bin erwartet eine Zählung von 1.

Warum hat der Sekundärindex zwei Einträge mit dem gleichen Primärschlüssel/Bereichsschlüssel.

Antwort

2

Jedes Element in einem lokalen sekundären Index (LSI) hat eine 1: 1-Beziehung mit dem entsprechenden Element in der Tabelle. Wenn im obigen Beispiel der Eintrag 1 und der Eintrag 2 im LSI den gleichen Bereichsschlüsselwert haben, ist der Eintrag in der Tabelle, auf den sie zeigen, unterschiedlich. Daher sind Indexschlüssel (Hash oder Hash + Bereich) nicht eindeutig.

Global Secondary Index (GSI) sind in diesem Aspekt ähnlich zu LSI. Jedes GSI-Element enthält die Tabellen-Hash- und Bereichsschlüssel (des entsprechenden Elements). Weitere Informationen erhalten Sie unter http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html#GSI.Projections