create space VID类型讨论

如文档种所说 vid_type = {FIXED_STRING() | INT64}) 支持这两种类型,相当于一个关系性数据库种,库里的表的ID只能时这样两种情况,当 如果库里面的表的有的Id是int类型的,有的是UUID,要把数据导入到一个图数据库的图空间里,那么只能只是用固定模式,此时固定模式必须满足最长的ID的长度,不然导入就要报错。按照一般的理解固定长度就是限定的长度,如果数据长度小于限定长度,那么用空格补齐。此时问题就来了。在用VID查询的时候回自将讲输入条件字符串的长度增加到固定长度还是手动增加?
在neo4j种并没有这种限制。

在就是每次插入数据前是不是要对数据做个检查,超长了就要提醒或者处理。

大家在实际使用过程中是如何定以VID的类型呢?
https://docs.nebula-graph.com.cn/2.0/3.ngql-guide/9.space-statements/1.create-space/

在用VID查询的时候回自将讲输入条件字符串的长度增加到固定长度还是手动增加?

不需要用户增加,服务端会自己做处理的

在就是每次插入数据前是不是要对数据做个检查,超长了就要提醒或者处理。

是有检查的,假如 vid 类型不对或者长度超过设置最大长度的字符串时,服务端报错:
"Storage Error: The VID must be a 64-bit interger or a string fitting space vertex id length limit.

图空间的VID类型,更准确的说是长度在创建空间时已经确定了的,但是数据如果来自关系性数据库那么主键的长度是不确定的,在设置VID长度时有哪些实战建议呢?是否需要创建成超长的fixed_string 比如fixed_string(200)?有没有其他更好的办法。

你们数据量有多大?

现在在做选型的测试,我们的磁盘还有1T左右,数据量1T以内。尽可能的测试多种可能的情况。我计划用ldbc_snb做测试,sf10,sf100,sf300,在硬件条件运行情况下都可以测试一下。但是目前还没有找到完整的资料。neo4j单节点做到sf10已经跑了三天了还没出结果,感觉已经废了。

  1. 对于上面的 vid 为 fixed_string 的时候,数据量比较大,除非自己将维护不定长的string到 int id的关系,不然直接用不定长的string做id的话,这个长度肯定是要有限制的,不然这个长度就算你设置很大,也避免不了,有的数据会超出范围,已经浪费大量存储。

  2. 你们选型主要做什么 query 测试

BI 测试,可能会做交互测试

我是指你们做什么语句查询的时候,neo4j 跑不出结果。

这个说明书,https://ldbc.github.io/ldbc_snb_docs/ldbc-snb-specification.pdf

我按照网上另一个教程做sf1的测试 数据量在1.3Gb左右,后来做sf10时候,数据有14G左右,就一直跑不出来。我用的bi-benchmark.sh 因为整个结果没有出来,我也不清楚具体时哪个查询的问题。你感兴趣的话看一下他的说明书,看怎么样在nebula上完成他这个测试。 里面还有interactive-benchmark.sh 关于交互的测试。
我的测试环境
内存:总计503Gb,可用内存22Gb
Neo4j磁盘分区为2.0T 剩余1.1T空间
CPU(s): 64
ldbc_snb_datagen-0.3.3
ldbc_snb_implementations-stable
neo4j-community-3.5.27
hadoop-3.2.2
下面时sf1测试结果


`单位毫秒

ldbc 的 id,最大 64 位,我自己测的 sf30 的话,id 最大 15位,所以 sf30 的话 fixed_string(20) 就够了。
如果你想测很大的 ldbc 数据集,就 fixed_string(64) 或者稍微再多一点。

如果设置的很大,因为存储会自动补齐位数,实际中就浪费了好多存储了。

BI有些查询是跑不通的。

大佬你们是怎样测试nebula的性能的?

BI部分query因为功能限制v2.0.1跑不通,主要是两个MATCH那些。

浙ICP备20010487号