nosql neo4j titan

nosql - ¿Cómo sobrescribir vértices ID en la base de datos de Titan?



neo4j (2)

Muy pocas bases de datos de gráficos realmente le permiten establecer el identificador del elemento. Todos ellos tienden a tener sus propios sistemas de identificación ya sea que utilices Neo4j, OrientDB, Titan, etc. TinkerGraph es realmente la única implementación de Blueprints que permite la asignación de ID.

Si desea conservar su ID, simplemente debe cambiarle el nombre a otra cosa. En lugar de "id", quizás podría usar "iid". Para hacer las cosas más transparentes, desde una perspectiva de programación, puede considerar el uso de la envoltura IdGraph , que le permitiría hacer algo como:

gremlin> base = TitanFactory.open(''/tmp/titan-berkley'') ==>titangraph[local:/tmp/titan-berkley] gremlin> g = new IdGraph(base, true, false) ==>idgraph[titangraph[local:/tmp/titan-berkley]] gremlin> g.addVertex(45) ==>v[45] gremlin> g.v(45) ==>v[45]

Puedes ver que IdGraph permite aparecer como si estuvieras asignando el identificador del elemento. Detrás de escena, en realidad solo usa índices clave.

Estoy usando un framework que genera objetos Node y ellos ya tienen asignado un id. Ahora necesitan convertirse a vértices de Titán con la misma ID controlada en el marco (se accede con node.id )

public long addNode(Node node) { TitanVertex vertex = (TitanVertex) g.addVertex(null); g.commit(); vertex.setProperty(ID, node.id); vertex.setProperty(TYPE, node.type); vertex.setProperty(VERSION, node.version); vertex.setProperty(TIME, node.time); vertex.setProperty(DATA, node.data); ...

Error:

java.lang.IllegalArgumentException: Name is reserved: id

Pero parece no permitirlo. ¿Debo usar alguna propiedad falsa para imitar un Id secundario? ¿Titán tiene alguna manera de hacer eso?

¡Gracias!


@Stephen, no puedo decir acerca de la terminal gremlin, pero probé esto a través de Titan Java API y no funcionó. Incluso después de pasar los id al crear vértices en el gráfico de ID, los ID predeterminados se asignaron a los nodos.