2013-04-09 4 views
8

Wie kann ich meine Dynamob Objekte am effizientesten abfragen?Wie kann man auf Milliarden Objekte disorbieren?

Wie meine Objekte haben zehn Eigenschaften und ich möchte eine eindeutige Anzahl basierend auf 3 Eigenschaften erhalten.

+0

Ändern sich diese Eigenschaften jemals? Wie häufig und schnell müssen Sie rechnen? –

+0

sie ändern sich ... sie sind nicht statische Protokolldaten –

+0

Was ist mit Häufigkeit und Latenz der Frage nach der Zählung? Ist diese Art der Aggregation eine häufige, schnelle Operation? Brauchen Sie das für Echtzeitdaten oder können Sie es auf einem Archiv/Kopie der Daten durchführen? –

Antwort

4

Falls Sie Zähler benötigen, verwenden Sie besser die AtomicCounters (http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithDDItems.html). In Ihrem Fall unterstützt DynamoDB keine Standardschlüssel, die aus 3 Attributen bestehen, es sei denn, Sie verketten sie. Daher besteht die Option darin, eine redundante Tabelle zu erstellen, in der der Schlüssel die Verkettung dieser 3 Attribute ist und jede diese verwaltet Objekte, aktualisieren Sie auch den AtomicCounter (hinzufügen, löschen, aktualisieren - tatsächlich nicht benötigt).

Dann fragen Sie einfach den Zähler ab und vermeiden Scans. Es ist also sehr komplex, Daten schneller abrufen zu können.

+0

danke Kumpel. Überlegen Sie, ob Sie in Großbritannien arbeiten. Ping bitte linkedin.com/in/rifaterdemsahin/ –

1

Führen Sie einen Scan mit dem entsprechenden ScanFilter durch (in diesem Fall sind die drei Eigenschaften not_null), und verwenden Sie withCount (true), um nur die Anzahl der übereinstimmenden Datensätze anstelle der Datensätze selbst zurückzugeben.

See the documentation für einige Beispielcode.

+0

Beachten Sie, dass Scan wahrscheinlich eine ineffiziente Methode ist, dies zu handhaben, da es im Vergleich zu anderen DynamoDB-Operationen relativ langsam ist. Angesichts dessen, was Sie beschrieben haben, habe ich keine bessere Antwort. –

+3

ich denke, diese Milliarden Suchoperation ist ein Job für SQL, nicht für NOSQL-Systeme. –