簡體   English   中英

Edge記錄未顯示在OrientDB中

[英]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.

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