2015-11-03 42 views

回答

1

它们可以用于两者。正如在OrientDB docs(下面引用的一些段落)中指出的那样,Graph DB API建立在Document DB API之上。

当您在Graph DB中创建边时,Graph API将创建一个边缘文档,其中包含指向顶点文档的输入和输出链接,以及指向边的顶点文档中的输入和输出链接(没有轻量级的边缘)。

通过比较,当您在文档之间创建链接时,它只是从一个文档到另一个文档的“单向指针”,因此第二个不知道它已链接。您还可以在不需要完整图形样式指针的情况下使用顶点/边缘文档以这种方式手动创建链接。

在OrientDB中,我们创建了2个不同的API:文档API和图形API。 Graph API在Document API之上工作。文档API包含文档,键/值和面向对象模型。

图形API

{剪断}

  • 关系被建模为双向边缘。如果轻量级边缘设置处于活动状态,则OrientDB在边缘没有属性的情况下使用轻量级边缘,因此它对速度和空间的影响与文档LINK相同,但是具有双向连接的额外好处。这意味着你可以使用MOVE VERTEX命令来重构你的图形而不会破坏LINK。有关边缘管理的更多信息,请参阅轻量级边缘。

文献API

{剪断}

  • 关系是唯一的单声道方向性。如果您需要双向关系,则您有责任维护两个LINK。
  • 文档是一个原子单元,而图形中的所有东西都连接为& Out。出于这个原因,图表操作必须在事务内完成。相反,当您使用LINK在文档之间创建关系时,目标链接文档不参与此操作。这会产生更好的多线程支持,特别是在插入,删除和更新操作时。

内嵌文件有不同的使用情况下,虽然,与普通文件和基于图形的文档。如各个地方所示in the docs,The Records are contained inside the owner. The contained records have no RecordIds and are reachable only by navigating the owner record

举一个实际的例子,假设您有个人和电子邮件文档,那么您将一封电子邮件嵌入到一个人 - 当您select from Email时,该电子邮件将不会存在。如果您创建从人员到电子邮件的链接,则会有独立的电子邮件记录,但您不知道 *谁在查询电子邮件时使用过每封电子邮件。然而,如果您使用了边缘(即使用图形db api,它将为您创建和维护链接),那么您将能够在查询电子邮件时查找哪个人使用了电子邮件。

* 您可以随时查询每个人以查找哪些记录链接到特定的电子邮件,但这样做首先会错过使用图形数据库的要点。

相关问题