Ich bin neu bei DynamoDB (und im Allgemeinen zu noSQL) und ich kämpfe ein wenig um einige der Konzepte zu verstehen. Eine Sache ist insbesondere, mir einige Probleme zu geben, bei denen es darum geht, eine Tabelle basierend auf einem booleschen Schlüssel abzufragen.DynamoDB Abfrage auf booleschen Schlüssel
Ich weiß, dass ich keinen primären oder sekundären Index für einen booleschen Schlüssel erstellen kann, aber ich kann nicht sehen, wie ich idealerweise eine Tabelle mit der folgenden Struktur indizieren und abfragen sollte;
reportId: string (uuid)
reportText: string
isActive: boolean
category: string
Ich mag würde die folgenden Suchen in der Lage sein zu vervollständigen:
- Zugriff auf einen bestimmten Bericht direkt (ein primärer Hash-Index von
reportId
) - Liste Berichte einer bestimmten Kategorie (ein primären Hash-Index auf Kategorie)
Dies sind beide einfach, aber ich möchte zwei weitere Abfragen durchführen;
- Liste aller Berichte, die als isActive = true
- Liste alle Berichte einer bestimmten Kategorie markiert sind, die markiert sind als isActive = true
Mein erster Ansatz wäre eine primäre Hashkey zu erstellen Index auf isActive
, mit einem rangekey auf category
, aber ich kann nur String
, Number
von als Schlüsseltyp wählen.
Speichern isActive
als Zeichenfolge (gespeichert als "True" anstelle eines booleschen True) löst das Problem, aber es ist schrecklich mit einer Zeichenfolge für eine boolesche Eigenschaft.
Fehle ich etwas? Gibt es eine einfache Möglichkeit, die Tabelle direkt auf einen booleschen Wert abzufragen?
Alle Ratschläge gebührend gewürdigt.
Vielen Dank im Voraus.
Das ist perfekt und adressiert es nett. Ich habe die Referenz zu spärlichen Indizes nicht gesehen (und auch nicht den Link zu den Best Practices, den Sie enthalten), scheint aber genau das zu sein, was ich brauche. – fruvos
Dies fühlt sich an wie eine Einschränkung für Dynamo, die Sie nicht basierend auf booleschen Werten abfragen können. Sie müssen sich mit Ihrer eigenen App-Logik befassen, um sie in boolesche Typen umzuwandeln. – Karthik
Wie würden Sie eine Abfrage für den ActiveReportsIndex erstellen, um alle aktiven Berichte abzurufen? Wäre das nicht ein Scan auf diesem Index? –