簡體   English   中英

邊和屬性的綜合索引(tinkerpop / orientDB)

[英]Composite index of edges & property (tinkerpop / orientDB)

我在OrientDB中有一個圖形(使用Tinkerpop堆棧),需要能夠快速查找邊緣值/屬性/字段和邊緣輸入/輸出頂點。

所以,基本上用戶需要查找如下:

SELECT from myEdges WHERE inVertex = {VertexIdentity},outVertex = {VertexIdentity},property1 ='xyz'

本質上,它是邊緣類的復合索引,有3個屬性:inVertex,outVertex和property1

基本上 - 如果用戶已經有2個頂點的VertexIdentity(可能,形式為:#CLUSTER_ID:RECORD_ID) - 以及屬性值(在本例中為xyz ) - 它將允許非常快速的查找以查看組合是否已經存在於圖中(如果2個頂點與property1鏈接) - 不進行遍歷。

到目前為止,我找到了以下代碼來幫助復合索引,但我不知道是否可以在此中包含in / out頂點(對於圖形邊緣)。

https://github.com/orientechnologies/orientdb/blob/master/tests/src/test/java/com/orientechnologies/orient/test/database/auto/SQLSelectCompositeIndexDirectSearchTest.java

可能嗎??

這適用於定義邊緣唯一性:

OCommandSQL declareIn= new OCommandSQL();
declareIn.setText("CREATE PROPERTY E.in LINK");
OCommandSQL declareOut= new OCommandSQL();
declareOut.setText("CREATE PROPERTY E.out LINK");
OCommandSQL createIndexUniqueEdge= new OCommandSQL();
createIndexUniqueEdge.setText("CREATE INDEX unique_edge ON E (in, out) UNIQUE");
graph.command(declareIn).execute();
graph.command(declareOut).execute();               
graph.command(createIndexUniqueEdge).execute();

在這種情況下,只需將另一個屬性添加到Edge類,然后添加到索引中

您可以使用OrientDB執行此操作,只需針對in和out屬性創建復合索引(在E類中聲明它們之前)。

這也用作約束以避免多個邊連接相同的頂點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM