[英]Edges records not showing up in OrientDB
我最近發現了有關OrientDB的信息,最近幾周來我一直在使用此工具。 但是,今天我注意到,每當在兩個頂點之間添加一條邊時,似乎有些問題。 如果執行諸如SELECT FROM E
類的查詢,則邊緣記錄不存在,這只會返回一個空集。 盡管如此,仍可以將關系視為節點中的屬性,並且像SELECT IN() FROM V
這樣的查詢也可以工作。
這帶來了一個問題。 如果無法直接訪問邊緣記錄,則無法使用更多屬性對其進行修改,或者即使可以,也無法看到所做的更改。 我以為出於某些原因這可能是一個設計決定,但是GratefulDeadConcerts示例數據庫似乎沒有這個問題。
我將通過一個例子來說明我的問題:
讓我們從頭開始在OrientDB中創建一個圖形數據庫,並將其命名為“ Test”。 我們將創建幾個頂點:
CREATE VERTEX SET TEST=123
CREATE VERTEX SET TEST=456
假設這些節點的@rid分別為#9:0和#9:1,因為我們沒有更改默認設置。 讓我們在它們之間創建一條邊緣:
CREATE EDGE FROM #9:0 TO #9:1
現在,讓我們看一下查詢SELECT FROM V
的輸出:
orientdb {Test}> SELECT FROM V
----+----+----+----+----
# |@RID|TEST|out_|in_
----+----+----+----+----
0 |#9:0|123 |#9:1|null
1 |#9:1|456 |null|#9:0
----+----+----+----+----
2 item(s) found. Query executed in 0.005 sec(s).
到目前為止,一切看起來都不錯。 但是,查詢SELECT FROM E
的輸出僅0 item(s) found. Query executed in 0.016 sec(s).
0 item(s) found. Query executed in 0.016 sec(s).
。 如果我們SELECT IN() FROM V
執行SELECT IN() FROM V
得到以下信息:
orientdb {Test}> SELECT IN() FROM V
----+-----+----
# |@RID |IN
----+-----+----
0 |#-2:1|[0]
1 |#-2:2|[1]
----+-----+----
2 item(s) found. Query executed in 0.005 sec(s).
因此,即使E類的默認群集為10,我也假定在群集編號-2中創建了邊,並且我沒有添加任何其他群集。 我懷疑這與問題有關,但我不確定如何解決。 我嘗試將新的群集添加到E類並在此新群集中創建邊緣,但無濟於事,我一直得到完全相同的結果。
所以我的問題是,如何使邊緣記錄顯示在OrientDB中?
我正在使用OrientDB Community 1.7-RC2,並已在兩台不同的計算機上進行了嘗試,一台Windows 7和另一台Debian Wheezy。
摘自https://github.com/orientechnologies/orientdb/wiki/Troubleshooting#why-i-cant-see-all-the-edges :
如果沒有屬性,OrientDB默認情況下會將邊緣管理為“輕量級”邊緣。 這意味着,如果邊沒有屬性,則不會將其存儲為物理記錄。 但請放心,您的優勢仍然存在,但已編碼為單獨的數據結構。 因此,如果您從Eno邊執行選擇,則返回的邊或少於預期的邊。 很少需要邊緣列表,但是如果您是這種情況,則可以通過發出以下命令一次來禁用此功能(速度變慢並且數據庫更大):
alter database custom useLightweightEdges=false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.