图数据库GDB支持TinkerPop Gremlin查询语言。对于TinkerPop Gremlin查询语言,图数据库GDB Gremlin与TinkerPop Gremlin在实现细节上存在差异。本文主要介绍图数据库GDB对于TinkerPop Gremlin查询语言的兼容性。
版本兼容
图数据库GDB Gremlin兼容TinkerPop Gremlin 3.3.x以及3.4.x版本。
与图数据库GDB服务端进行交互时,使用GraphSON格式。
说明GraphSON是Gremlin的标准格式,使用JSON格式表示点、边和属性。
DSL使用限制
图数据库GDB Gremlin在DSL的使用规则上与TinkerPop的差异如下:
所有的DSL必须以内置的变量g开头,该变量等同于TinkerPop中的
Graph.traversal()
。不支持对于查询策略的控制,所有查询优化由图数据库GDB内置自动执行。
点和边的ID为字符串类型,可以由您指定。如果您没有指定,则自动生成UUID作为点或边的ID。
图数据库GDB的属性图模型中,目前支持Single、Set两种模式,即TinkerPop中的
org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality.single; org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality.set
图数据库GDB属性值的类型当前仅支持简单类型(包括数字、字符串和布尔型,即Java编程语言中的byte、char、short、int、long、float、double、boolean和String);不支持复杂类型(例如日期)。
Groovy限制
图数据库GDB Gremlin不支持Groovy语言的相关特性,包括:
Groovy风格的Lambda表达式和内嵌函数调用,例如
map.findAll{it.value>3}
。数学表达式,例如
1+1
。系统调用,例如
System.currentTimeMillis()
。
事务的支持
图数据库GDB Gremlin默认支持事务,具体如下:
不支持ThreadedTransaction(即跨线程,由用户自己控制开始和提交的方式),而是采用内置的Sesionless方式的事务。一个DSL内部所有的操作认为在一个事务内部。
如果DSL内部含有更新类型的Step(Mutation类别),则认为该事务是一个读写事务,反之认为是一个只读事务。
一个DSL从开始的时候,自动开启一个事务,在结束的时候,按运行情况自动提交或回滚。
事务隔离的级别为Read-Committed。
数据导入拆分为按行的一组单条事务,事务(各数据行)之间无关联。
对TinkerPop Gremlin的Step接口支持情况
主要不支持的接口主要为以下几类:
用到了GraphComputer类的OLAP接口。
Explain和Profiling类型的接口。
其他非增、删、查、改类型的辅助接口。
下表中代表支持,代表不支持。
Step接口 |
是否支持 |
备注 |
---|---|---|
|
不支持 |
|
|
- |
|
|
不支持 |
|
|
不支持 |
|
|
不支持 |
|
|
- |
|
|
- |
|
|
不支持 |
|
|
不支持 |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
仅支持 |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
|
|
- |
图数据库GDB Gremlin支持的特性
下表中特性的返回内容与TinkerPop的Graph.features()返回内容相同。
分类 |
特性 |
是否支持 |
---|---|---|
Graph |
ThreadedTransactions |
|
Computer |
||
Transactions |
||
Persistence |
||
ConcurrentAccess |
||
Variable |
SerializableValues |
|
UniformListValues |
||
BooleanArrayValues |
||
DoubleArrayValues |
||
IntegerArrayValues |
||
StringArrayValues |
||
MapValues |
||
MixedListValues |
||
ByteArrayValues |
||
FloatArrayValues |
||
LongArrayValues |
||
Variables |
||
BooleanValues |
||
ByteValues |
||
DoubleValues |
||
FloatValues |
||
IntegerValues |
||
LongValues |
||
StringValues |
||
Vertex |
MetaProperties |
|
DuplicateMultiProperties |
||
MultiProperties |
||
NumericIds |
||
UuidIds |
||
CustomIds |
||
AnyIds |
||
AddVertices |
||
RemoveVertices |
||
UserSuppliedIds |
||
AddProperty |
||
RemoveProperty |
||
StringIds |
||
Vertex Property |
UserSuppliedIds |
|
NumericIds |
||
UuidIds |
||
CustomIds |
||
AnyIds |
||
SerializableValues |
||
UniformListValues |
||
BooleanArrayValues |
||
DoubleArrayValues |
||
IntegerArrayValues |
||
StringArrayValues |
||
MapValues |
||
MixedListValues |
||
ByteArrayValues |
||
FloatArrayValues |
||
LongArrayValues |
||
AddProperty |
||
RemoveProperty |
||
StringIds |
||
Properties |
||
BooleanValues |
||
ByteValues |
||
DoubleValues |
||
FloatValues |
||
IntegerValues |
||
LongValues |
||
StringValues |
||
Edge |
NumericIds |
|
UuidIds |
||
CustomIds |
||
AnyIds |
||
AddEdges |
||
RemoveEdges |
||
UserSuppliedIds |
||
AddProperty |
||
RemoveProperty |
||
StringIds |
||
Edge Property |
SerializableValues |
|
UniformListValues |
||
BooleanArrayValues |
||
DoubleArrayValues |
||
IntegerArrayValues |
||
StringArrayValues |
||
MapValues |
||
MixedListValues |
||
ByteArrayValues |
||
FloatArrayValues |
||
LongArrayValues |
||
Properties |
||
BooleanValues |
||
ByteValues |
||
DoubleValues |
||
FloatValues |
||
IntegerValues |
||
LongValues |
||
StringValues |