跳到主要内容

数据模型 ​

GraphNode ​

java
GraphNode node = GraphNode.builder("user-1", "Person")
    .property("name", "Alice")
    .property("age", 30L)
    .build();

节点 ID 应由业务方稳定生成。稳定 ID 是幂等 upsert、更新、删除、断点恢复和审计关联的基础。

Neo4j 支持多标签节点;Nebula Portable Writer 当前只支持一个 Tag。跨后端共享模型时,应使用单一主标签, 或者在业务层分别定义后端模型。

GraphEdge ​

java
GraphEdge edge = GraphEdge.builder("user-1", "KNOWS", "user-2")
    .rank(0)
    .property("since", 2020L)
    .build();

rank 用于区分同一 source、type、target 之间的平行边。删除边时必须提供完整的 GraphEdgeKey,不能只提供 起点和终点。

属性类型 ​

类型Java 常见值说明
STRINGStringUTF-8 文本
BOOLEANBoolean布尔值
INT64Long64 位整数
DOUBLEDouble双精度浮点
DATE后端支持的日期值日期类型
DATETIME后端支持的时间值日期时间类型

不同驱动对日期、时间、列表和 Map 的参数转换不同。复杂类型应使用目标后端真实环境测试,不要只依赖 编译器单元测试。

标识符 ​

标签、边类型、属性名、别名和 Graph Space 名称需要符合 SDK 的可移植标识符规则。用户输入若要用于这些 结构位置,应先校验或映射为内部名称;用户输入的值则应作为查询参数绑定。

结果模型 ​

查询返回的表格结果使用 GraphResult、GraphRecord;当结果中包含节点、边或路径时,可以通过 GraphSubgraphResult 读取结构化子图。应用不应直接依赖 Neo4j Driver 或 Nebula Client 的实体类型。