2016-01-13 83 views
1

我是新來圖數據庫,所以如果我問基本的東西,請原諒我。OrientDB Edge Confusion

在關係數據庫中,關係是在表的字段之間進行的。這很有意義,因爲當我們想要顯示兩張表中的記錄時,我們會創建一個連接和打印記錄。

但是在OrientDB的情況下,我們創建邊 - 那麼它需要創建記錄來記錄,而不是像RDBMS中的字段到字段?

回答

4

OrientDB將關係作爲與記錄的物理鏈接進行管理,在創建邊緣時只分配一次。 OrientDB不使用JOIN。而是使用具有通過在記錄源中存儲RID目標進行管理的關係的鏈接。這與在內存中的兩個對象之間存儲指針非常相似。 邊連接兩個頂點,並且必須具有:唯一標識符,鏈接頂點傳入,傳出鏈接頂點和定義連接類型的標籤。

這是一個小例子:

enter image description here

希望它能幫助。

+0

謝謝,但如果我有一百萬條記錄,我該怎麼辦?連接百萬條記錄,一個接一個? – phpMax

+0

是的,你應該。 –

0

原始問題似乎與OrientDB沒有任何關係,除非有更具體的問題(無論是關於ODB還是圖形數據庫)(請參閱https://stackoverflow.com/help/closed-questions),否則很可能會被「封閉」爲「off-topic」 )。

關於圖形數據庫的一般信息,請參見https://en.wikipedia.org/wiki/Graph_database和書籍,例如 Graph Databases

於關係和圖形數據庫之間的關係,我想你可能會發現它有用記得有根本性兩型「關係表」的:

(1) those in which each row represents an entity; 
(2) those in which each row represents a relationship between entities. 

如果這種區分在數據庫模式成立,那麼表示實體的行與圖表數據庫術語中的「頂點」緊密對應,表示實體之間的關係的行對應於圖形數據庫術語中的「邊緣」。

因此,如果您想將關係表T1中的信息傳遞給圖形數據庫,並且如果T1的每一行表示一個實體,並且T1沒有外鍵,則可能不需要任何外鍵從該表中「傳出」邊緣。如果另一個表引用由T1行表示的實體,那麼這些引用將對應於相對於T1的「傳入」邊緣。

當然,將信息傳輸到另一個DBMS的任務也可能是重新設計數據庫模式的好時機。數據庫設計的一般主題包含在上面提到的文字中。