如何选择用TAG还是Vertex

  • nebula 版本:3.2.0
  • 部署方式:单机
  • 安装方式:Docker
  • 是否为线上版本:N
  • 硬件信息
    • 磁盘 sdd
    • CPU、内存信息 apple m1, 32mem
      有这样的一个场景:我有一个有限的数据集,数据集中只有k1, k2, k3 三个种类,我的目的是需要通过k1 或者k2或者k3来查询到对应的数据。按照最佳实战我有两个想法:
      一个想法是把k1,k2,k3数据定义为TAG,然后插入其他vertex的时候用上这些TAG,当需要查询k1类型的数据时,直接用 LOOKUP 查询
LOOKUP ON
  tc 
WHERE  `tc`.name == "n1000"
    | LIMIT 100

另外一个想法是 把k1,k2,k3定义为vertex,然后插入其他vertex时与这些vertex关联起来,当需要查询k1类型数据时,用
go 语句查询

据我的了解,第一种看了文档需要创建对应的索引,而文档中说不建议用索引;而第二种无需索引

这两种方式,哪种方式更好一些呢?

你的第二种想法需要考虑点的数量的问题,如果你的 k1,k2,k3 建模出来的点比较少,又插入了很多其它点和它们进行关联,可能会造成每一个点上连了非常多的边,造成稠密节点或者超级节点,对性能的影响会很恶劣。

本质上没区别,你怎么好理解怎么来吧。
索引在这个小规模上问题不大的。

还有一个思路,在 .name 可以唯一确定一个 vertex 的情况下,并且不存在一个 vertrex 同时属于多个 tag 的场景下,把 k1 k2 k3 作为 vid 前缀。

k1_n1000

查询也可以规避索引

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。