graph-databases - 现有 Cassandra 键空间的 JanusGraph 自定义字符串顶点 ID

标签 graph-databases janusgraph

我正在尝试 JanusGraph 中的自定义顶点 ID 功能,如以下文档中所述

https://docs.janusgraph.org/master/advanced-topics/custom-vertex-id/

我使用 Cassandra 作为 JanusGraph 数据库的后端存储,并使用以下属性来启用 Janus Graph 中的自定义顶点 ID 功能,目前我正在使用带有 Java 代码的嵌入式 JanusGraph。

storage.cql.keyspace=janusgraph
graph.set-vertex-id=true
graph.allow-custom-vid-types=true

当我尝试使用现有记录已存在的现有键空间时,我收到以下异常

Exception in thread "main" java.lang.UnsupportedOperationException: Vertex does not support user supplied identifiers
    at org.apache.tinkerpop.gremlin.structure.Vertex$Exceptions.userSuppliedIdsNotSupported(Vertex.java:163)
    at org.janusgraph.graphdb.tinkerpop.JanusGraphBlueprintsTransaction.addVertex(JanusGraphBlueprintsTransaction.java:119)
    at org.janusgraph.graphdb.tinkerpop.JanusGraphBlueprintsGraph.addVertex(JanusGraphBlueprintsGraph.java:143)

但是,一旦我在新的 Cassandra Key 空间上尝试相同的代码,它就会按预期工作,并且能够使用下面的代码存储字符串自定义顶点 ID

 Vertex firstVertex = g.addV("record")
                       .property(T.id,"customVertexId1")
                       .property("recordId", "abc")
                       .next();

所以我的疑问是这个自定义顶点 ID 不能应用于现有的键空间?我们总是需要创建新的键空间才能在 JanusGraph 中使用自定义字符串类型 vertexId?请提出建议

最佳答案

参见https://docs.janusgraph.org/advanced-topics/custom-vertex-id/#alter-an-existing-graph

基本上,如果您想在现有图表上使用它,您应该这样做

mgmt = graph.openManagement();
mgmt.set("graph.set-vertex-id", true);
// optional, if you want to provide string ID
mgmt.set("graph.allow-custom-vid-types", true);
mgmt.commit();

关于graph-databases - 现有 Cassandra 键空间的 JanusGraph 自定义字符串顶点 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77360352/

相关文章:

indexing - Neo4j 中可以接受混合类型索引吗?

neo4j - neo4j是否适合搜索特定长度的路径

neo4j - 复制关系与执行更多查询

cassandra - JanusGraph 没有足够的副本可用于一致性 QUORUM 查询

java - 谓词在 Java 中查找边缘

python - 如何使用 python 为 janusgraph 设置模式以进行批量加载

Gremlin-Python : Returning a fully populated subgraph

python - Neo4J 与 NeoModel : How to speed up graph creation?

amazon-web-services - janusgraph 在与 AWS opensearch 版本 7 及更高版本交互时遇到 `PermanentBackendException`

neo4j - 如何在neo4j中使用cypher创建多个节点