Neo4j中的标签和索引是什么?

时间:2014-05-02 14:11:38

标签: ruby neo4j

我正在使用neo4j-core gemNeo4j::Node API)。它是我能找到的唯一与MRI兼容的neo4j的Ruby绑定,因此很有价值,但它的文档是一个废话(它缺少链接,很多印刷错误,很难理解)。在第一个链接的标签和索引支持部分中,它显示:

  • 创建一个[sic]标签person和一个属性

    的节点
    Neo4j::Node.create({name: 'kalle'}, :person)
    
  • 在标签上添加索引

    person = Label.create(:person)
    person.create_index(:name)
    
  • drop index

    person.drop_index(:name)
    

(我认为其第二个代码行是以下的印刷错误)

person = Node4j::Label.create(:person)
  • 什么是标签,是数据库表的名称,还是节点特有的属性?
  • 如果它是节点的名称,我不认为(根据第二个链接中的API)方法Neo4j::Node.createNeo4j::Node#add_label可以为标签带来多个参数。在节点上有多个标签意味着什么?
  • 此外,如果我使用相同的label参数重复create命令,则每次都会创建一个不同的节点对象。拥有多个具有相同名称的节点意味着什么?标签不是标识节点的东西吗?
  • 索引是什么?标签和指数有何不同?

2 个答案:

答案 0 :(得分:4)

标签是一种分组节点的方式。您可以将标签分配给多个节点或仅一个节点。可以将其视为组合在一起的节点集合。它们允许您分配索引和其他约束。

索引允许快速查找节点或边缘,而无需遍历整个图形来查找它们。可以将其视为指向特定节点/边索引的直接指针表。

答案 1 :(得分:2)

当我读到您从文档中粘贴的内容时(无可否认,知道关于neo4j的最轻微的事情):

  • 它是一个图形数据库,其中每个数据都是具有一定数量属性的节点

  • 每个节点都可以有标签(或更多,大概是?)。可以把它想象成一种类型 - 或者更恰当地说,用Ruby术语来说就是一个模块。

  • 它是一个数据库,因此节点可以成为索引的一部分,以便更快地访问。节点的子集也是如此,因此具有特定标签的节点也是如此。

换句话说:将标签视为数据库中的表格。节点作为数据库行,可以属于一个或多个标签/表,或者根本不属于标签/表。并且索引作为DB对行集的索引。