2014-07-24 49 views
3

我知道neo4j存储以图表而非表格结构化的数据。在RDBMS我们将有表的模式,但在neo4j我们将不会有表。只有节点,关系和属性被定义。那么在neo4j中有没有metadata的概念。就像存在关于节点的任何信息,数据库中的关系?如果是,它在元数据中的存储方式和存储方式如何?此外,我们在哪里可以找到图形数据库(位置)的元数据相关的信息neo4j图形数据库中的元数据

感谢,

+1

您是否阅读过[手册](http://docs.neo4j.org/chunked/milestone/index.html),特别是[关于模式的章节](http://docs.neo4j.org/chunked/里程碑/ graphdb-的Neo4j-schema.html)?其他介绍材料如何[1](http://www.neo4j.org/learn),[2](http://neo4j.com/graphacademy/online-course/),[3](http:// neo4j.com/guides/graph-concepts/),[4](http://neo4j.com/docs/2.0.2/data-modeling-examples/)? – jjaderberg

+0

@jjaderberg,我经历了解释模式的手册。但他们在那里解释了如何使用INDEX和CONSTRAINT创建和使用。所以我看到或期待一些其他的答案。在这里,我的模式/元数据指的是与索引和约束不同的东西。就像在数据库中某处的rdbms一样,表的信息被存储为模式文件。 neo4j数据库以类似的方式在数据库中的任何文件中存储节点和属性的任何信息? – shree11

回答

2

没有,直接元数据不存在。你可以做的最大限度是查询所有的结构类型,并在数据库中存储一个小的内部图。

START r=rel(*) 
RETURN type(r), count(*) 
START n=node(*) 
RETURN labels(n), count(*) 

特定的数据库文件存储的文件夹data/graph.db在但除了一些指标和密钥文件它们是二进制和不容易阅读。

+0

@ ulkas,感谢指导在密码端获取节点和关系信息。但是,当我运行上述查询它给我一个错误。在START和RETURN之间询问WITH关键字。即使在写入后它给我一个错误。 – shree11

+0

@ ulkas,感谢指导在密码端获取节点和关系信息。当我运行上述查询seperatatly节点和关系(即第一2lines和最后2lines),我得到的输出。但是,当我运行上述完整的查询(一次4线)它给我一个错误。在START和RETURN之间询问WITH关键字。即使在写入WITH后它给我一个错误。所以在运行单个脚本后,如何获得输出说明节点和关系信息。 – shree11

+0

@ shree11这是因为这些是2个单独的查询。要么两次运行它们,要么尝试“联合”它们 – ulkas

4

Neo4J不会以您要查找的方式直接存储元数据。 NeoProfiler工具正是为此目的而编写的。您可以在Neo4J数据库上运行它,它会尽可能多地提取关于标签,索引,约束,属性,节点和关系的信息。这种方式的效果与@ulkas在其他答案中所暗示的查询相差不大,输出效果会更好。

更广泛地说,在RDBMS中,您抽出的模式信息实质上限制了数据库。这里的模式就像一套规则;除非符合该模式,否则不能插入数据。在Neo4J中,因为它非常灵活,即使有一个模式,它也只是记录那里的内容,但它不会成为你可以放入什么的一系列约束。在任何时候,你都可以插入没有任何内容的新数据与当前模式有关(除了你不能违反唯一性约束之类的事情)。

如果您希望在neo4j中查看数据库的等效模式,请查看上面链接的neoprofiler。有几个人写了关于“metagraphs”的文章 - 也就是说,他们讨论将neo4j模式表示为一个图本身,例如一个节点引用一个标签。从那个“标签节点”的关系出发到其他类型的标签节点,指定节点之间可以存在哪种关系。例如,标记为“员工”的节点可能经常与标签“公司”的节点具有“work_for”关系。

+0

@ Frobber,这个概念已经很好地解释了,并且将会研究neoProfiler。我非常感谢 – shree11

+0

我知道这是一个老问题,但仅仅为了增加上面的(好)答案的顶部,另一条路线可能是使用最近发布的[MindmapsDB](https://mindmaps.io/pages /index.html),这与OP考虑的问题完全一致。充分披露:我为MindmapsDB工作,但它是一个开源项目,我不想卖东西。 – MiKo

相关问题