2016-05-14 4 views
0

Ich verwende AWS Lambda (Python) und Dynamodb, um Elemente zu Dynamodb hinzuzufügen.Die Eindeutigkeit in AWS DynamoDB-Elementen basierend auf kann leere Felder sein

Mein Artikel hat Struktur wie {id, E-Mail, mobilen}

Ich brauche Artikel hinzufügen, basierend auf der Tatsache, DB, dass keine E-Mail oder Handy-Nummer wird in neuem Elemente dupliziert.

Artikel können oder dürfen keine E-Mail oder Handy haben.

Wie dies zu erreichen?

Zum Beispiel

Ich habe jetzt ein Element in db

{1, E-Mail @ mail.com, 123456789}

I

  • {2 hinzufügen können, [email protected]}
  • {3,72562626262}
  • {4, jk @ yahoo.com, 919191919191}

Aber nicht

  • {5, E-Mail @ mail.com}
  • {6, E-Mail @ mail.com, 0909090990}
  • {7,123456789}

Antwort

0

DynamoDB Eindeutigkeits zwingen kann nur für Hash-Tabellenschlüssel Bereich (nicht für den globalen Sekundärindexschlüssel)

Also in Ihrem Fall (und dem oben beschriebenen Szenario), nur um Duplikate für E-Mail oder Mobile zu vermeiden, ist es in Anwendungsebene, indem Sie E-Mail und mobile globale sekundäre Hash-Schlüssel (und Abfrage nach Element vor dem Update).

Wenn Sie Multithreading verwenden, verwenden Sie Sperren für Query/Update.

Verwandte Themen