圖數據庫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 |