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?
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
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.**
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
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.
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.
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