Amazon DynamoDB zu Erhalten Elemente mit Attribut-Wert... (Java-API)
Ich bin ziemlich neu in Amazon AWS und dessen API für Java, also ich bin mir nicht genau sicher, was die effizienteste Methode für das, was ich versuche zu tun wäre. Im Grunde bin ich versucht, um das setup eine Datenbank zum speichern einer Projekt-ID auf, es ist status, sowie den Eimer und den Speicherort beim Upload zu einem S3-bucket, die von einem Benutzer. Was ich Probleme habe mit immer eine Liste mit allen Projekt-IDs, die den status "ready" unter status-Attribut. Alle Projekte des status "bereit" müssen Ihre ID-Nummern geladen, um ein array oder eine arraylist für spätere Referenz auf. Irgendwelche Empfehlungen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Art und Weise, dies zu tun ist, um die scan-API verwenden. Dies bedeutet jedoch, dass dynamo müssen, wenn sich jedes Element in der Tabelle, und prüfen Sie, ob Ihr Attribut "status" ist gleich "fertig" ist. Die Kosten dieser operation wird groß sein, und berechnen Sie für das Lesen jedes Element in der Tabelle.
Würde der code wie folgt Aussehen:
Gibt es eine Möglichkeit das besser zu machen, obwohl es erfordert denormalizing Ihre Daten. Versuchen Sie halten eine zweite Tabelle mit einer hash-key von "status" und eine Reihe Schlüssel "Projekt-ID". Dies ist zusätzlich zu Ihrer vorhandenen Tabelle. Dies ermöglicht die Verwendung der API für Abfragen (scan ist viel billiger cousin), und bitten Sie Sie, für alle Artikel, die mit einem Raute-Taste "fertig". Dadurch erhalten Sie eine Liste mit den Projekt-IDs, die Sie brauchen, und Sie können dann bekommen Sie von den Projekt-ID-Tabelle, die Sie bereits haben.
Den code HIERFÜR würde folgendermaßen Aussehen:
Der Nachteil dieses Ansatzes ist, müssen Sie update zwei Tabellen, wenn Sie aktualisieren Sie das Feld status, und Sie haben, um sicherzustellen, dass Sie synchron zu halten. Dynamo nicht bieten transaktionalität wird, so dass Sie müssen bereit sein, für den Fall, wo das update auf der master-Tabelle Projekt ist erfolgreich, aber Ihre sekundäre status-Tabelle nicht. Oder vice-versa.
Weitere Referenz: http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/QueryAndScan.html