Nebula Graph v2.0.0-alpha Release Note

Nebula Graph 2.0.0-alpha 发布啦~ 该版本丰富了数据类型,增强了 nGQL 表达能力。 2.0.0 版本会逐步兼容 openCypher。

Nebula

注意:Schema 和数据暂未兼容 1.0,正开发中。。。

New Features

  • 点 ID 支持 String 类型
  • 新增数据类型
    • NULL,点和边的属性可以为 NULL,支持为属性增加 NOT NULL 约束
    • 复合类型:List,Set 和 Map(不支持定义属性类型)
    • 时间类型:DATE 和 DATETIME
  • 新增函数
    • size() 返回列表中元素的数量
    • time() 返回当前时间,默认返回当前时区的当前日期
    • date() or datetime() 返回当前 Date 和 DateTime
    • id() 返回点的 ID
    • tags()labels() 返回点的 Tags
    • collect(), 聚合函数,将所有值收集到一个列表 List 中
    • collect_set(), 聚合函数,将所有值收集到一个集合 Set 中
    • properties() 返回节点或边的属性(Map)
    • type() 返回边的类型
    • src() 返回边的起点 ID
    • dst() 返回边的终点 ID
    • rank() 返回边的 rank 值
  • 新增运算符
    • IN 常用于条件表达式中,其作用是查询某个范围内的数据
    • 字符串匹配: STARTS WITHENDS WITHCONTAINS
  • Explain & Profile 进行执行计划分析
  • 子图,GET SUBGRAPH 语句获取点的子图
  • 部分支持 Match
  • | 的输出可作为 DELETE 的输入。

Features different from 1.0

  • CREATE SPACE 支持配置点 ID 的类型,目前支持 fixed_stringint64 将会在下个版本支持)
  • 简化了 UPDATE/UPSERT 语句。
  • UPSERT ... SET 未 set 的属性将会被设置成该属性的默认值,若没有默认值,将会被设置为 NULL 。若改属性上设置了 NOT NULL 限制,会报错。
  • $- 在管道操作中,不再等价于 $-.id
  • 默认值中的表达式不再在 Schema 定义的时候计算,而会在数据插入时计算。

Upcoming Soon(进行中)

  • DESCRIBE TAG/EDGE INDEX
  • REBUILD TAG/EDGE INDEX
  • SHOW TAG/EDGE INDEXES
  • SHOW TAG/EDGE INDEX STATUS
  • FETCH PROP ON 多个 tags
  • 点 ID 兼容 1.0 中 Integer 类型
  • 支持更多 OpenCypher 语句
  • 备份和恢复
  • 全文索引

Nebula Graph Console

  • 支持 local command 模式,比如,:set csv命令可将查询结果导出到 CSV。详情请参见 nebula-console

客户端

  • Java
  • Python
  • Go

客户端支持连接池和负载均衡,详情请见 nebula-clients.

Nebula Graph Studio

支持 Nebula Graph v2.0.0-alpha,详细信息见 Studio 更新日志:Nebula Graph Studio v2.0.0-alpha Release Note

文档

文档请参见 https://github.com/vesoft-inc/nebula-docs/tree/master/docs-2.0

7 个赞

:clap: Hello,2.0 alpha

我看文档 说 FIND PATH 不支持带属性过滤的搜索。这个在2.0里面有改动吗?
不带过滤的是不是限制其使用场景了?
或者说不带属性的过滤是基于什么样的考虑?
还有就是要做到带过滤条件的Find path类似的nGQL 要怎样写啊
感谢

+1

会,beta。

不好意思,我问一下2.0 beta里面会 对 FIND PATH 支持带属性过滤的搜索吗?可以这样理解吗

不一定是通过 find path 语法实现,而是通过 match

1 个赞

@jude-zhu
rust客户端什么时候安排上 ?

有个板块 可以去提需求

像这样的查询语句吗?谢谢
MATCH (v1:player) -[:follow]-> (v2) -[:serve]-> (v3) WHERE v1.name == “Tim” and v3.name == ‘Nuggets’ RETURN v1.name AS Player, v2.name AS Friend, v3.name AS Friends_Team;

找2个节点的最短路径:
先用一度好友去试,不行再用二度好友去试,再用三度好友去试 。。。 是这样理解的吗?请斧正

@dingding

rust 需要等我们升级第三方库之后会提供,应该这个月底之前会提供一个简单版,然后打算让社区爱好者参与开发贡献,到时候欢迎贡献。

MATCH (v1:player) -[:follow]-> (v2) -[:serve]-> (v3) WHERE v1.name == “Tim” and v3.name == ‘Nuggets’ 是 “查找 Tim 和 Nuggets 间的2跳路径,并且限定第一跳的边类型是 follow,第二跳是 serve”

1 个赞

用match暂时还 实现不了 找2个节点之间的最短路径哈,只能先用一度好友去试,不行再用二度好友去试,再用三度好友去试 。。。 这样理解没错吧 :grinning:

计划支持 shortestPath() 函数

2 个赞

你好,请问Nebula 2.0 支持建立多标签节点吗?

你好,想咨询一下,Nebula支持像Neo4j那样建立多标签节点嘛?

支持,比如你对一个点插入两个不同的tag,分别是person和studen,语法:
INSERT VERTEX person(name, age), student(grade, number) VALUES 1001:("Lucy", 8, "three", 20190901001);

Nebula的Tag和Neo4j的Label是有些不同的意义。因为两者的schema强弱是不一样的。
Label是用于建一个(组)点的索引,更接近于对于点的指针或者引用(如果不带属性的话)。remove label 还算轻量。
Tag 是用于定义一组schema。更接近于SQL数据表的定义。当然,一个点可以有多个Tag。不过alter schema是比较重的。

求问子图查询当前的测试版已经可以试用了吗?有没有配套的说明文档可以参考