1. 概述
Neo4j是“轻型模式数据库”(Schema-lite),对所存储数据的类型和格式要求没有关系数据库那样严格。然而,作为数据库管理系统,Neo4j还是有相关元数据管理功能的。在Neo4j Browser中可以通过执行:
:schema
命令查看索引和限制;或者显示图结构的元模型:
CALL db.schema.visualization
APOC中还提供了更多元数据相关功能。
2. APOC中的元数据管理功能
除了Cypher中提供的查看数据库中元数据(metadata)的命令,APOC提供功能更强大、返回信息更丰富的元数据过程,并可视化展现数据库元数据图(meta graph)。下表是APOC中与元数据相关的过程。
过程名 | 功能 |
apoc.meta.graphSample() | 收集数据库统计信息并构建元图,非常快、会报告额外的关系。 |
apoc.meta.graph | 收集数据库统计信息以创建元图,通过抽样过滤额外的关系。 |
apoc.meta.subGraph( | 收集给定子图统计信息并创建元图。 |
apoc.meta.data | 收集图的元数据并以表格形式返回。 |
apoc.meta.schema | 收集图的元数据并以MAP形式返回。 |
apoc.meta.stats yield labelCount, relTypeCount, propertyKeyCount, nodeCount, relCount, labels, relTypes, stats | 返回保存事务执行统计信息。 |
下表是APOC中与元数据相关的函数。
函数名 | 功能 |
apoc.meta.cypher.type(value) | 返回一个值的类型名称。可以是:INTEGER,FLOAT,STRING,BOOLEAN, |
apoc.meta.cypher.isType(value,type) | 如果类型名称匹配则返回true,否则返回none。 |
apoc.meta.cypher.types(node or relationship or map) | 返回属性名称的到它们类型的映射。 |
| 在Neo4j中,每个节点或者标签都有全局唯一的内部ID,这是个非负的长整数,代表节点或标签在数据库存储中(分别在nodestore和relationshipstore中)的逻辑位置。可以通过内部ID唯一搜索到对应的节点或者关系。 在元数据模型图上,代表标签的圆圈和关系类型的线条也有ID,但是都是负数,这是因为这些对象是数据库模式定义、而非真正的数据,因此没有实际存储在数据库中。这些对象不能通过负数的ID来搜索到。 |