Paso 6: Creación de consultas de datos
Tras definir los patrones de acceso y diseñar el modelo de datos, puede consultar datos jerárquicos en la base de datos de DynamoDB. Como práctica recomendada para ahorrar costos y garantizar el rendimiento, en los siguientes ejemplos solo se utiliza la operación de consulta sin Scan.
-
Encuentre los antecesores de un componente.
Para encontrar los antecesores (principal, abuelo, bisabuelo, etc.) del componente CM8, consulte la tabla base mediante
ComponentId = "CM8". La consulta devolverá los siguientes registros.Para reducir el tamaño de los datos resultantes, puede utilizar una expresión de proyección que solo devuelva el atributo
Path.ComponentId
ParentId
GraphId
Ruta
CM8
CM4
CM1#1
CM1|CM2|CM4|CM8
Ruta
CM1|CM2|CM4|CM8
Ahora, se divide la ruta con la barra vertical (“|”) y tome los primeros componentes N-1 para obtener los antecesores.
Resultado de la consulta: los antecesores de CM8 son CM1, CM2 y CM4.
-
Encuentre los secundarios inmediatos de un componente.
Para obtener todos los componentes secundarios inmediatos o de un nivel inferior de un componente CM2, consulte GSI1 mediante
ParentId = "CM2". La consulta devolverá los siguientes registros.ParentId
ComponentId
CM2
CM4
CM5
-
Encuentre todos los componentes secundarios posteriores mediante un componente de nivel superior
Para obtener todos los componentes secundarios o de nivel inferior de un componente de nivel superior, el CM1, consulte GSI2 mediante
GraphId = "CM1#1"ybegins_with("Path", "CM1|"), y utilice una expresión de proyección conComponentId. Devolverá todos los componentes relacionados con ese árbol.Este ejemplo tiene un solo árbol, con CM1 como componente superior. En realidad, podría tener millones de componentes de nivel superior en la misma tabla.
GraphId
ComponentId
CM1#1
CM2
CM3
CM4
CM5
CM8
CM9
CM10
CM6
CM7
-
Encuentre todos los componentes secundarios posteriores mediante un componente de nivel medio
Tiene dos opciones para obtener todos los componentes secundarios o posteriores de forma recursiva para un componente CM2. Puede realizar consultas recursivas nivel por nivel o puede consultar el índice GSI2.
-
Consulte el GSI1, nivel por nivel, de forma recursiva, hasta llegar al último nivel de los componentes secundarios.
-
Consulte el GSI1 mediante
ParentId = "CM2". Devolverá los siguientes resultados:ParentId
ComponentId
CM2
CM4
CM5
-
De nuevo, consulte el GSI1 mediante
ParentId = "CM4". Devolverá los siguientes resultados:ParentId
ComponentId
CM4
CM8
CM9
-
De nuevo, consulte el GSI1 mediante
ParentId = "CM5". Devolverá los siguientes resultados:Continúe el ciclo: consulte para cada
ComponentIdhasta llegar al último nivel. Cuando una consulta utilizaParentId = "<ComponentId>"no devuelve resultados, el resultado anterior era del último nivel del árbol.ParentId
ComponentId
CM5
CM10
-
Combine todos los resultados.
resultado = [CM4, CM5] + [CM8, CM9] + [CM10]
= [CM4, CM5, CM8, CM9, CM10]
-
-
Consulte el GSI2, que almacena un árbol jerárquico para un componente de nivel superior (un automóvil o CM1).
-
En primer lugar, busque el componente de nivel superior o el antecesor superior y
Pathdel CM2. Para ello, consulte la tabla base medianteComponentId = "CM2"para encontrar la ruta de ese componente en el árbol jerárquico. Seleccione los atributosGraphIdyPat. La consulta devolverá los siguientes registros.GraphId
Ruta
CM1#1
CM1|CM2
-
Consulte el GSI2 mediante
GraphId = "CM1#1" AND BEGINS_WITH("Path", "CM1|CM2|"). La consulta devolverá los siguientes resultados.GraphId
Ruta
ComponentId
CM1#1
CM1|CM2|CM4
CM1|CM2|CM5
CM1|CM2|CM4|CM8
CM1|CM2|CM4|CM9
CM1|CM2|CM5|CM10
CM4
CM5
CM8
CM9
CM10
-
Seleccione el atributo
ComponentIdpara devolver todos los componentes secundarios de CM2.
-
-