neo4j数据库学习

What is a graph database? - Getting Started (neo4j.com)

以官方文档进行学习:

neo4j是图形数据库,存储节点与关系。

图数据库规范:Graph database concepts - Getting Started (neo4j.com)

图数据库neo4j

Neo4j 使用属性图 数据库模型。 图形数据结构由可以通过关系连接节点(离散对象)组成。 

Neo4j 属性图数据库模型包括:

  • 节点描述域的实体(离散对象)。

  • 节点可以有零个或多个标签来定义(分类)它们是哪种类型的节点。

  • 关系描述源节点 目标节点 之间的连接。

  • 关系总是有一个方向(一个方向)。

  • 关系必须具有类型(一种类型)来定义(分类)它们是什么类型的关系。

  • 节点和关系可以具有属性(键值对),这些属性可以进一步描述它们。

示例

 

CREATE (:Person:Actor {name: 'Tom Hanks', born: 1956})    (节点)

-[:ACTED_IN {roles: ['Forrest']}]->            (关系)

(:Movie {title: 'Forrest Gump', released: 1994})<-[:DIRECTED]-(:Person {name: 'Robert Zemeckis', born: 1951})     (节点)

节点

节点用于表示域的实体(离散对象)。

 

节点标签为:   一个节点可以有零到多个标签。

  • Person

  • Actor

这些属性包括:

  • name: Tom Hanks

  • born: 1956

可以使用以下查询使用 Cypher 创建节点:

CREATE (:Person:Actor {name: 'Tom Hanks', born: 1956})

关系

关系描述源节点目标节点之间的连接之间的关系。 节点可能与自身有关系。

关系:

  • 连接源节点目标节点

  • 有一个方向(一个方向)。

  • 必须具有类型(一种类型)来定义(分类)它是什么类型的关系。

  • 可以具有属性(键值对),用于进一步描述关系。

CREATE ()-[:ACTED_IN {roles: ['Forrest'], performance: 5}]->()

关系类型:ACTED_IN,   关系必须只具有一种关系类型。

这些属性包括 roles: ['Forrest'] performance: 5

 

属性类型

属性是用于在节点和关系上存储数据的键值对。

属性的值部分:

  • 可以保存不同的数据类型,例如 、 或 。numberstringboolean

  • 可以保存包含字符串、数字或布尔值等的同类列表(数组)

{c: 'This is an example string', d: true, e: false})     {a: 1, b: 3.14}   {f: [1, 2, 3], g: [2.71, 3.14], h: ['abc', 'example'], i: [true, true, false]}

 

遍历与路径

遍历是查询图形以查找问题的答案的方式。

找出汤姆·汉克斯(Tom Hanks)出演了哪些电影,遍历将从节点开始,跟踪连接到节点的任何关系,并以节点作为结果(参见黑线):Tom HanksACTED_INMovieForrest Gump

 

 最短路径的长度为零。 它包含单个节点,没有关系。

仅包含单个节点的长度为 0的路径

包含一个关系的长度为1的路径

 

"schema"(模式)

在数据库领域,"schema"(模式)是指用于描述数据库中数据结构的元数据集合。它定义了数据的组织结构、数据类型、约束条件等信息。

在 Neo4j 中,schema 通常用于指代索引和约束,这些索引和约束可以提高查询性能并确保数据的完整性。

  • 索引是用于提高数据库查询性能的数据结构,通常是一种有序的数据结构,加快了数据的检索速度。
  • 约束是用于确保数据库数据完整性和一致性的规则或条件。

索引

定义架构 - 入门 (neo4j.com)

以下查询创建一个索引,以加快在数据库中按名称查找 actor 的速度:

CREATE INDEX example_index_1 FOR (a:Actor) ON (a.name)

可以查询数据库以找出定义了哪些索引。SHOW INDEXES

SHOW INDEXES YIELD name, labelsOrTypes, properties, type

约束

约束用于确保数据符合域的规则。

唯一性约束

示例:为标签为Movie的节点创建约束,约束其title属性时唯一的。

CREATE CONSTRAINT constraint_example_1 FOR (movie:Movie) REQUIRE movie.title IS UNIQUE

 

添加唯一约束将隐式添加该属性的索引 如果删除了约束,但仍需要索引,则必须显式创建索引。

可以将约束添加到已包含数据的数据库中。 这要求现有数据符合正在添加的约束。

 

约束查询

此示例显示了一个 Cypher 查询,该查询返回已为数据库定义的约束。

SHOW CONSTRAINTS YIELD id, name, type, entityType, labelsOrTypes, properties, ownedIndexId

 约束创建语法

语法 - Cypher Manual (neo4j.com)

 

 

 

 

posted @ 2024-04-23 16:51  zzl14  阅读(18)  评论(0)    收藏  举报