Identificadores de nodo en neo4j


Soy nuevo en Neo4j - acabo de empezar a jugar con él ayer por la noche.

He notado que todos los nodos se identifican por un entero auto-incrementado que se genera durante la creación del nodo - ¿es este siempre el caso?

Mi conjunto de datos tiene claves de cadena naturales, por lo que me gustaría evitar tener que mapear entre los ID asignados a Neo4j y los míos. ¿Es posible usar identificadores de cadena en su lugar?

 52
Author: Jonathan Williamson, 2012-01-29

5 answers

Piense en el node-id como un detalle de implementación (como el rowid de las bases de datos relacionales, se puede usar para identificar nodos, pero no se debe confiar en que nunca se reutilice).

Agregaría sus claves naturales como propiedades al nodo y luego indexaría sus nodos con la clave natural (o habilitaría la indexación automática para ellos).

E..g en la API de Java:

Index<Node> idIndex = db.index().forNodes("identifiers");

Node n = db.createNode();
n.setProperty("id", "my-natural-key");
idIndex.add(n, "id",n.getProperty("id"));

// later
Node n = idIndex.get("id","my-natural-key").getSingle(); // node or null

Con auto-indexer usted habilitaría auto-indexación para su campo "id".

// via configuration 
GraphDatabaseService db = new EmbeddedGraphDatabase("path/to/db",
 MapUtils.stringMap( 
    Config.NODE_KEYS_INDEXABLE, "id", Config.NODE_AUTO_INDEXING, "true" ));

// programmatic (not persistent)
db.index().getNodeAutoIndexer().startAutoIndexingProperty( "id" );

// Nodes with property "id" will be automatically indexed at tx-commit
Node n = db.createNode();
n.setProperty("id", "my-natural-key");

// Usage
ReadableIndex<Node> autoIndex = db.index().getNodeAutoIndexer().getAutoIndex();
Node n = autoIndex.get("id","my-natural-key").getSingle();

Véase: http://docs.neo4j.org/chunked/milestone/auto-indexing.html Y: http://docs.neo4j.org/chunked/milestone/indexing.html

 65
Author: Michael Hunger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-07 05:44:44

Esto debería ayudar:

Crear el índice para respaldar la indexación automática durante la importación por lotes sepa que si la indexación automática está habilitada en neo4j. properties, cada nodo que se cree se agregará a un índice llamado node_auto_index. Ahora, aquí está la parte genial. Si añadimos el índice manual original (en el momento de importación por lotes) y nombrarlo como node_auto_index y habilitar auto indexación en neo4j, entonces los nodos insertados por lotes aparecerán como si auto indexado. Y a partir de ahí cada vez que crea un nodo, el nodo será indexado también.**

Fuente: Identificación de nodos con Claves personalizadas

 0
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-10 09:02:01

Según Neo docs debería haber índices automáticos en su lugar http://neo4j.com/docs/stable/query-schema-index.html pero todavía hay muchas limitaciones

 0
Author: Pavel Niedoba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-19 15:51:14

Más allá de todas las respuestas, neo4j crea sus propios ID para trabajar más rápido y servir mejor. Asegúrese de que el sistema interno no entre en conflicto entre los ids, luego creará nodos con las mismas propiedades y se mostrará en el sistema como nodos vacíos.

 0
Author: Sumsun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-29 17:08:18

Los ID generados son predeterminados y no pueden ser modificados por los usuarios. el usuario puede usar sus identificadores de cadena como una propiedad para ese nodo.

 0
Author: Reetish Chand,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-22 13:58:52