本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
當您查詢 quad 圖表,您可以對每個 quad 指定值限制,也可以不指定。查詢會傳回符合您指定之值限制的所有 quad。
Neptune 使用索引來解析圖形查詢模式。這些索引位於圖形邊緣的四個主要元件上:主體 (LPG 中的來源頂點);述詞 (RDF) 或屬性或邊緣標籤 (LPG);物件 (LPG 中的目標頂點或屬性值);以及圖形 (RDF) 或邊緣識別符 (LPG)。這四個四元元件位置有 16 (2^4) 個可能的存取模式。您可以使用六個索引,有效率地查詢所有 16 種模式,而無需掃描和篩選。每個 quad 陳述式索引使用由以不同順序串連的四個位置值組成的索引鍵。涵蓋所有 16 個存取路徑的四元統計索引的可能組合之一是:
Access Pattern Index key order
---------------------------------------------------- ---------------
1. ???? (No constraints; returns every quad) SPOG
2. SPOG (Every position is constrained) SPOG
3. SPO? (S, P, and O are constrained; G is not) SPOG
4. SP?? (S and P are constrained; O and G are not) SPOG
5. S??? (S is constrained; P, O, and G are not) SPOG
6. S??G (S and G are constrained; P and O are not) SPOG
7. ?POG (P, O, and G are constrained; S is not) POGS
8. ?PO? (P and O are constrained; S and G are not) POGS
9. ?P?? (P is constrained; S, O, and G are not) POGS
10. ?P?G (P and G are constrained; S and O are not) GPSO
11. SP?G (S, P, and G are constrained; O is not) GPSO
12. ???G (G is constrained; S, P, and O are not) GPSO
13. S?OG (S, O, and G are constrained; P is not) OGSP
14. ??OG (O and G are constrained; S and P are not) OGSP
15. ??O? (O is constrained; S, P, and G are not) OGSP
16. S?O? (S and O are constrained; P and G are not) OSGP
根據預設,Neptune 只會建立和維護這六個索引中的三個:
SPOG –
使用Subject + Predicate + Object + Graph
組成的索引鍵。POGS –
使用Predicate + Object + Graph + Subject
組成的索引鍵。GPSO –
使用Graph + Predicate + Subject + Object
組成的索引鍵。
這三個索引會處理許多最常見的存取模式。只維護三個完整陳述式索引 (而非六個),可大幅減少支援不經掃描和篩選而快速存取所需的資源。例如,每當頂點或頂點和屬性識別符等位置字首繫結時,SPOG
索引會允許有效查詢。只有存放於 P
位置的邊緣或屬性標籤繫結時,POGS
索引才會允許有效存取。
尋找陳述式的低層級 API 採用的陳述式模式,其中有些位置已知,而其餘則保留供索引搜尋探索。透過根據其中一個陳述式索引的索引鍵順序,在索引鍵字首索引鍵中構成已知位置,Neptune 執行範圍掃描來擷取符合已知位置的所有陳述式。
不過,根據預設,Neptune 未建立的其中一個陳述式索引是反向周遊 OSGP
索引,它可以跨物件和主題收集述詞。Neptune 預設會改為在個別索引中追蹤它用來進行 {all P x POGS}
聯合掃描的不同述詞。使用 Gremlin 時,述詞對應到屬性或邊緣標籤。
如果圖形中的不同述詞量很大時,預設的 Neptune 存取策略會變得沒有效率。例如,在 Gremlin 中,未指定邊緣標籤的 in()
步驟,或內部使用 in()
的任何步驟 (例如 both()
或 drop()
) 可能會變得沒有效率。
使用實驗室模式啟用 OSGP 索引建立
如果您的資料模型建立大量不同的述詞,可能會遇到效能降低和營運成本增加的情況,這些可藉由使用實驗室模式來啟用 OSGP 索引 (除了 Neptune 根據預設維護的三個索引以外) 而大幅改善。
注意
此功能從 Neptune 引擎版本 1.0.2.1 版開始提供。
啟用 OSGP 索引可能會有幾個缺點:
插入速率最多可能減慢 23%。
儲存量增加高達 20%。
均等觸及所有索引的讀取查詢 (這是很少見的情況) 可能會增加延遲。
不過,一般而言,啟用具有大量不同述詞之資料庫叢集的 OSGP 索引是值得的。物件型搜尋變成很有效率 (例如,尋找頂點的所有傳入邊緣,或連線到給定物件的所有主體),因此,降低頂點也變得更有效率。
重要
在載入任何資料之前,您只能在空白的資料庫叢集中啟用 OSGP 索引。
Neptune 資料模型中的 Gremlin 陳述式
Gremlin 屬性圖資料在 SPOG 模型中使用三類陳述式來表示,即:
如需如何在 Gemlin 查詢中使用這些陳述式的說明,請參閱 了解 Gremlin 查詢如何在 Neptune 中運作。