2016-01-13 87 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的任务也可能是重新设计数据库模式的好时机。数据库设计的一般主题包含在上面提到的文字中。