【发布时间】:2016-04-14 17:22:53
【问题描述】:
我是 Neo4j 的新手,我正在尝试使用它的 import tool 将一堆旧数据导入新数据库。此数据的主 ID 将是整数。但是,似乎节点的 :ID 属性默认为字符串类型?我知道我可以在其他属性上使用 :int 以使其成为整数类型,但似乎无法将其与 :ID 结合使用。
例如,这里是节点类型 1:
node1_int_id:ID(node1)|other_prop|another_prop
12345 |foo |bar
节点类型 2:
node2_int_id:ID(node2)|other_prop|another_prop
67890 |foo |bar
关系
:START_ID(node1) |:END_ID(node2)
12345 |67890
这似乎可行,但结果是基于两个字符串类型字段的关系。所以我想我有两个问题:
1) 我这样做对吗?有什么方法可以使我没有看到的 ID 字段整数?
2)如果我必须这样做,它们是字符串是否有问题?这最终会产生一个包含约 1 亿个节点和关系的相当大的数据库,因此基于字符串比较来查找关系似乎是个坏主意。
【问题讨论】:
-
Neo4j 的原生 ID 是数字。您确定您使用的是本地 ID,还是使用您自己的 ID?你用的是什么neo4j驱动?此外,您应该知道依赖本机 ID 并不是一个好主意。正如the warning here 所说:“当节点和关系被删除时,Neo4j 会重用其内部 id。这意味着使用和依赖于 Neo4j 内部 id 的应用程序很脆弱或有出错的风险。而是使用应用程序生成的 id。”跨度>
-
这些是我自己的 ID。它们来自我们现有关系数据库中的索引号。
-
您使用的是什么语言和 neo4j 驱动程序?这似乎不是 neo4j 本身的问题,因为它可以存储整数属性。
-
我知道它可以存储整数属性。 “other_prop:int”何时正确将该属性存储为整数。但我无法将其与将属性指定为 ID 结合起来。做 "my_id:ID:int" 和 " "my_id:int:ID" 不起作用。这是 2.3.2 版,带有 python 后端。
-
请显示您的实际 Cypher 查询。
标签: neo4j graph-databases