本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配 Neptune DFE查詢引擎使用 Gremlin
如果您完全啟用稱為實驗室模式 DFE 的 Neptune 替代查詢引擎 neptune_lab_mode
(透過將資料庫叢集參數設定為 DFEQueryEngine=enabled
),則 Neptune 會將唯讀 Gremlin 查詢/周遊轉換為中繼邏輯表示式,並盡可能在DFE引擎上執行。
不過, DFE 尚未支援所有 Gremlin 步驟。當無法在 上原生執行步驟時DFE,Neptune 會重新登入 TinkerPop 以執行該步驟。explain
和 profile
報告包含此情況發生時的警告。
注意
從引擎 1.0.5.0 版開始,處理 Gremlin 步驟的預設DFE行為已變更,而不需要原生支援。先前DFE引擎在 Neptune Gremlin 引擎上下降的地方,現在引擎掉回香草 TinkerPop 引擎。
DFE 引擎原生支援的 Gremlin 步驟
GraphStep
VertexStep
EdgeVertexStep
IdStep
TraversalFilterStep
PropertiesStep
支援對屬性和 ID 以及標籤上的頂點和邊緣進行
HasStep
篩選,但文字和Without
述詞除外。WherePredicateStep
(含Path
範圍篩選條件),但沒有ByModulation
、SideEffect
或Map
查詢支援DedupGlobalStep
,但ByModulation
、SideEffect
和Map
查詢支援除外。
查詢規劃交錯
當轉譯程序遇到沒有對應原生DFE運算子的 Gremlin 步驟時,在返回使用 Tinkerpop 之前,會嘗試尋找可在DFE引擎上原生執行的其他中繼查詢部分。它透過將交錯邏輯應用到頂層周遊來執行此操作。結果是盡可能使用支援的步驟。
任何此類中繼、非字首查詢轉換都會在 explain
和 profile
輸出中使用 NeptuneInterleavingStep
來表示。
為了進行效能比較,您可能想要關閉查詢中的交錯,同時仍使用DFE引擎執行字首部分。或者,您可能只想將 TinkerPop 引擎用於非字首查詢執行。您可以使用 disableInterleaving
查詢提示來做到這一點。
與值為 的使用DFE查詢提示一樣,DFE完全false
無法在 上執行查詢,值為 的disableInterleaving
查詢提示true
會關閉DFE交錯以翻譯查詢。例如:
g.with('Neptune#disableInterleaving', true) .V().has('genre','drama').in('likes')
已更新 Gremlin explain
和 profile
輸出
Gemlin explain 會提供有關 Neptune 用來執行查詢的最佳化周遊的詳細資訊。請參閱範例DFEexplain輸出,了解DFE引擎啟用時explain
輸出的外觀。
Gremlin profile API 會執行指定的 Gemlin 周遊、收集有關執行的各種指標,以及產生設定檔報告,其中包含有關最佳化的查詢計畫和各種運算子的執行期統計資料的詳細資訊。請參閱DFEprofile輸出範例,了解DFE引擎啟用時profile
輸出的外觀。
注意
由於DFE引擎是實驗室模式中發行的實驗性功能,因此 explain
和 profile
輸出的確切格式可能會有所變更。