AWS DynamoDB - Wählen Sie einen Eintrag/item zufällig?
Irgendwelche Ideen, wie man ein Element/Datensatz nach dem Zufallsprinzip aus einer DynamoDB-Tabelle? Ich glaube nicht, dass es irgendwelche Bestimmungen für die in der API.
Dachte ich über das beibehalten einer Tabelle von NumericId|MyOtherKey ("NumericIdTable") und das anschließende generieren einer Zufallszahl zwischen 0 und der Gesamtzahl der Datensätze, die ich haben, dann bekommen, dass das Element aus NumericIdTable aber es ist nicht zur Arbeit zu gehen, langfristig.
Gedanken/Ideen willkommen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein Ansatz, den ich kam zu pick ein zufälliges Element aus einer DynamoDB-Tabelle:
Zum Beispiel, wenn Sie eine UUID als Bezeichner für Ihre RangeKey Sie bekommen konnte, Ihr zufälliges Element wie folgt
Diese Weise erhalten Sie ein zufälliges Element und verbrauchen nur 1 Lesen Kapazität.
Es ist eine chance zu verpassen, die erste Abfrage für eine zufällige variable, die durch die Erzeugung eines kleineren UUID als die kleinsten in der Tabelle. Diese chance verkleinert sich mit der Tabelle, die Skalierung nach oben und man kann leicht senden Sie eine weitere Anfrage mit dem SmallerThan ein Vergleich auf der gleichen zufälligen Schlüssel, der dann garantiert ein Treffer für ein zufälliges Element.
Wenn Ihr Tabledesign nicht erlauben randomizable RangeKeys könnten Sie Folgen Ihren Ansatz und erstellen Sie eine separate RandomItem Tabelle und speichern die ID unter einem randomizable RangeKey. Eine mögliche Tabellenstruktur für diese wäre
Beachten Sie, für diesen Ansatz, den Sie brauchen, um zu verwalten die Redundanz zwischen der ursprünglichen Tabelle und der Randomisierung Tabelle.
RangeKey == SortKey
undHashKey == PartitionKey
aus, was ich konnte, zu verstehen. Sie können nicht>
/GT
auf eine `PartitionKey leider und müssen speziell haben eine Art Schlüssel...Wenn du mit GUID als Ihre Hash-Schlüssel für die Tabelle, die Sie tun können, so etwas wie dieses:
Dadurch erhalten Sie einen zufälligen Datensatz jedes mal, da es generiert eine zufällige GUID als lastKeyEvaluated.
Den naiven Weg wäre
1) verwenden, beschreiben Sie die Tabelle aufrufen, um N (die Gesamtzahl der Zeilen in dieser Tabelle
2) wählen Sie eine zufällige Zahl i zwischen 1 und N
3) Scannen. aufhören, bis Sie gesehen haben, ich Zeilen
Denke ich über einen besseren Weg, dies zu tun. Ich werde aktualisieren, wenn ich eine gute Antwort zu haben.
Einen einfachen und effektiven Weg, dies zu tun:
ProjectionExpression
abrufen nur Ihre Primäre partition-key in diesem Betrieb.