日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

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接口

是否支持

備注

connectedComponent()

不支持GraphComputer

io(String)

-

pageRank()

不支持GraphComputer

pageRank(double)

不支持GraphComputer

peerPressure()

不支持GraphComputer

profile()

-

profile(String)

-

program(VertexProgram<?>)

不支持GraphComputer

shortestPath()

不支持GraphComputer

subgraph(String)

-

tx()

-

withBulk(boolean)

-

withComputer()

-

withComputer(Class<? extends GraphComputer>)

-

withComputer(Computer)

-

withoutStrategies(Class<? extends TraversalStrategy>…)

-

withPath()

-

withRemote(Configuration)

-

withRemote(RemoteConnection)

-

withRemote(String)

-

write()

-

addE(String)

-

addE(Traversal<?, String>)

-

addV()

-

addV(String)

-

addV(Traversal<?, String>)

-

aggregate(String)

-

and(Traversal<?, ?>…)

-

as(String, String…)

-

barrier()

-

barrier(Consumer>)

-

barrier(int)

-

both(String…)

-

bothE(String…)

-

bothV()

-

branch(Function,M>

-

branch(Traversal<?, M>)

-

by()

-

by(Comparator)

-

by(Function, Comparator)

-

by(Function)

-

by(Order)

-

by(String)

-

by(String, Comparator)

-

by(T)

-

by(Traversal<?, ?>)

-

by(Traversal<?, ?>, Comparator)

-

cap(String, String…)

-

choose(Function)

-

choose(Predicate, Traversal<?, E2>)

-

choose(Predicate, Traversal<?, E2>, Traversal<?, E2>)

-

choose(Traversal<?, ?>, Traversal<?, E2>)

-

choose(Traversal<?, ?>, Traversal<?, E2>, Traversal<?, E2>)

-

choose(Traversal<?, M>)

-

coalesce(Traversal<?, E2>…)

-

coin(double)

-

constant(E2)

-

count()

-

count(Scope)

-

cyclicPath()

-

dedup(Scope, String…)

-

dedup(String…)

-

drop()

-

E(Object…)

-

emit()

-

emit(Predicate>)

-

emit(Traversal<?, ?>)

-

filter(Predicate>)

-

filter(Traversal<?, ?>)

-

flatMap(Function, Iterator>)

-

flatMap(Traversal<?, E2>)

-

fold()

-

fold(E2, BiFunction)

-

from(String)

-

from(Traversal<?, Vertex>)

-

from(Vertex)

-

group()

-

group(String)

-

groupCount()

-

groupCount(String)

-

has(String)

-

has(String, Object)

-

has(String, P<?>)

-

has(String, String, Object)

-

has(String, String, P<?>)

-

has(String, Traversal<?, ?>)

-

has(T, Object)

-

has(T, P<?>)

-

has(T, Traversal<?, ?>)

-

hasId(Object, Object…)

-

hasId(P)

-

hasKey(P)

-

hasKey(String, String…)

-

hasLabel(P)

-

hasLabel(String, String…)

-

hasNot(String)

-

hasValue(Object, Object…)

-

hasValue(P)

-

id()

-

identity()

-

in(String…)

-

index()

-

inE(String…)

-

inject(E…)

-

inV()

-

is(Object)

-

is(P)

-

iterate()

-

key()

-

label()

-

limit(long)

-

limit(Scope, long)

-

local(Traversal<?, E2>)

-

loops()

-

loops(String)

-

map(Function, E2>)

-

map(Traversal<?, E2>)

-

match(Traversal<?, ?>…)

-

math(String)

-

max()

-

max(Scope)

-

mean()

-

mean(Scope)

-

min()

-

min(Scope)

-

not(Traversal<?, ?>)

-

option(M, Traversal<?, E2>)

-

option(Traversal<?, E2>)

-

optional(Traversal<?, E2>)

-

or(Traversal<?, ?>…)

-

order()

-

order(Scope)

-

otherV()

-

out(String…)

-

outE(String…)

-

outV()

-

path()

-

project(String, String…)

-

properties(String…)

-

property(Object, Object, Object…)

-

property(Cardinality, Object, Object, Object…)

僅支持Cardinality.single

propertyMap(String…)

-

range(long, long)

-

range(Scope, long, long)

-

read()

-

repeat(String, Traversal<?, E>)

-

repeat(Traversal<?, E>)

-

sack()

-

sack(BiFunction)

-

sample(int)

-

sample(Scope, int)

-

select(Column)

-

select(Pop, String)

-

select(Pop, String, String, String…)

-

select(Pop, Traversal)

-

select(String)

-

select(String, String, String…)

-

select(Traversal)

-

sideEffect(Consumer>)

-

sideEffect(Traversal<?, ?>)

-

simplePath()

-

skip(long)

-

skip(Scope, long)

-

store(String)

-

sum()

-

sum(Scope)

-

tail()

-

tail(long)

-

tail(Scope)

-

tail(Scope, long)

-

timeLimit(long)

-

times(int)

-

to(Direction, String…)

-

to(String)

-

to(Traversal<?, Vertex>)

-

to(Vertex)

-

toE(Direction, String…)

-

toV(Direction)

-

tree()

-

tree(String)

-

unfold()

-

union(Traversal<?, E2>…)

-

until(Predicate>)

-

until(Traversal<?, ?>)

-

V(Object…)

-

value()

-

valueMap(boolean, String…)

-

valueMap(String…)

-

values(String…)

-

where(P)

-

where(String, P)

-

where(Traversal<?, ?>)

-

with(String)

-

with(String, Object)

-

withSack(A)

-

withSack(A, BinaryOperator)

-

withSack(A, UnaryOperator)

-

withSack(A, UnaryOperator<A>, BinaryOperator<A>)

-

withSack(Supplier<A>)

-

withSack(Supplier,BinaryOperator)

-

withSack(Supplier,UnaryOperator)

-

withSack(Supplier,UnaryOperator,BinaryOperator)

-

withSideEffect(String, A)

-

withSideEffect(String, A, BinaryOperator)

-

withSideEffect(String,Supplier)

-

withSideEffect(String,Supplier, BinaryOperator)

-

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