Gremlin兼容性
图数据库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 |
![]() |