2016-08-08 57 views
0

Ich modelliere eine einfache Anwendung und möchte DynamoDB als Speicher verwenden. Ich muss alle Bestellungen von einer E-Commerce-Website speichern. Es ist möglich, mit der Bestell-ID und der Benutzer-E-Mail abzufragen.DynamoDB Schema Design - Bestellmodell

Mit Blick auf die Dynamodb-Dokumentation, denke ich, ist der beste Ansatz, die order_id (die meisten meiner Abfragen werden in diesem Index durchgeführt werden) als mein Primärschlüssel (Partition Schlüssel).

Und was ist mit E-Mail? Ich hätte gerne einen sekundären Index, aber ich bin etwas verloren. Was ist der beste Ansatz?

+0

was meinst du . Benutzer-E-Mail ist ein guter sekundärer Index (wenn Sie bestimmte Benutzer benötigen, die eine order_id bestellt haben) –

Antwort

0

Es sieht aus wie ein Globaler Sekundärindex auf das email Attribute würde das Problem lösen:

  • , wenn Sie von order_id Nachschlag benötigen, können Sie den GetItem Betrieb verwenden und angeben, dass order_id als Primärschlüssel

  • , wenn Sie von email Nachschlag benötigen, verwenden Sie die Query API auf dem GSI und die email als Partitionsschlüssel angeben.

GSI unabhängige Lesekapazitätseinheiten haben - da Sie gesagt haben Sie verwenden die meiste Zeit order_id, könnten Sie Bereitstellung mehr RCU an die Haupttabelle als der GSI.

Referenz: "Was ist der beste Ansatz"