存储方案细节问题:schema如何实现?

在下面的存储格式中,没有图空间的编码:


同时在manual中我们看到了下面的语句:

Nebula Graph的图空间彼此之间是完全隔离的,将一个图空间作为工作空间后,用户无法访问其他空间。检索新图空间的唯一方法是通过USE语句切换。

那么,

  1. 不同图空间之间的“隔离”在存储格式中是如何体现的?

  2. 是否一个图空间的点、边结构需要连续存储?如果需要连续存储,后续增加点、边时,是如何解决更新代价过大的问题的?

1 个赞

1, 不同的图空间,使用物理隔离,即使用不同的rocksdb来存储。
表现为storage conf下面的data_path路径下面的nebula 下面的每个目录。就是每个space。目录名为
spaceId
2. 对于同一个space的点边数据,会根据key来排序。
根据点或者边的key格式, 点边数据不一定是连续的。因此为了查询快点,我们引入了index。

2 个赞

不同空间用的不同文件目录

你可能需要了解一下rocksdb的机理,写入时候是先写内存再flush的,sst怎么分层的,我的感觉是0层单个sst里面key是顺序的,不同文件之间没有要求,所以import里面自己写sst的时候要先sort过。但是每层把sst compact到下层以后,当层应该是顺序的。不顺序没法随机读。

2 个赞

该主题在最后一个回复创建后30天后自动关闭。不再允许新的回复。