Preferencia por el uso de ID personalizados para nodos/relaciones - Amazon Neptune

Preferencia por el uso de ID personalizados para nodos/relaciones

Neptune permite a los usuarios asignar ID de manera explícita a nodos y relaciones. Para que sea útil, el ID debe ser único a nivel global en el conjunto de datos y determinista. Un ID determinista se puede utilizar como mecanismo de búsqueda o filtrado, al igual que las propiedades; sin embargo, desde el punto de vista de la ejecución de consultas, es mucho más óptimo el uso de un ID que el de propiedades. El uso de ID personalizados ofrece varias ventajas:

  • Las propiedades de una entidad existente pueden ser null, pero el ID debe existir. De este modo, el motor de consultas puede utilizar una unión optimizada durante la ejecución.

  • Cuando se ejecutan consultas de mutación simultáneas, las posibilidades de que se produzcan excepciones de modificación simultánea (CME) se reducen considerablemente cuando se utilizan ID para acceder a los nodos, ya que los ID tienen menos bloqueos que las propiedades debido a su unicidad garantizada.

  • El uso de ID evita la posibilidad de crear datos duplicados, ya que Neptune garantiza la unicidad de los ID, al contrario que las propiedades.

En el siguiente ejemplo de consulta se utiliza un ID personalizado:

nota

La propiedad ~id se usa para especificar el ID, mientras que id se almacena como cualquier otra propiedad.

CREATE (n:Person {`~id`: '1', name: 'alice'})

Si no se utiliza un ID personalizado:

CREATE (n:Person {id: '1', name: 'alice'})

En este último caso, no se garantiza la unicidad y posteriormente se podría ejecutar la consulta:

CREATE (n:Person {id: '1', name: 'john'})

En este caso, se crea un segundo nodo con id=1 llamado john. En este escenario, ahora tendrías dos nodos con id=1, cada uno con un nombre: (alice y john).