Neo4j
Contents
💠
💠 2024-11-20 10:28:22
Neo4j
Neo4j Graph Database & Analytics | Graph Database Management System
安装
docker run -p 7474:7474 -p 7687:7687 neo4j:5.24
- docker run –name neo4 -d -p 7474:7474 -p 7687:7687 –env NEO4J_AUTH=neo4j/jiushineo neo4j:5.24
- 或者 进入容器修改密码
neo4j-admin dbms set-initial-password pwdtest123
然后重启 注意只在第一次启动时有效,后续修改密码是 ALTER USER neo4j SET PASSWORD ; - 打开Web客户端 localhost:7474 选择 bolt协议,填入连接地址端口为7687, 用户名 neo4j
- 登录后 Favorites 菜单下的 Sample Scripts 可以快速了解常用查询语句
注意
-
社区版本不支持命令 create database 只能使用默认的 neo4j Multiple database in community edition · Issue #12920 · neo4j/neo4j
- DozerDB
衍生插件 支持多库
1 2 3 4 5 6 7
docker run -p 7479:7474 -p 7692:7687 \ --env NEO4J_AUTH=neo4j/jiushineo \ --env NEO4J_PLUGINS='["apoc"]' \ --env NEO4J_apoc_export_file_enabled=true \ --env NEO4J_apoc_import_file_enabled=true \ --env NEO4J_dbms_security_procedures_unrestricted='*' \ graphstack/dozerdb:5.24.2.1-alpha.1
- DozerDB
-
Docker方式启动适合调试,正式使用不推荐,数据备份迁移不方便 (也可以停止容器后docker cp复制出 data 目录,替换到新的空实例再启动)
K8s
驱动
注意协议区分为 bolt(6787) neo4j(6787) http(7474) 等, 使用的端口不一样
Python
Java
Using Neo4j from Java - Getting Started
Neo4j Java Drive Compatibility : r/Neo4j
Java8使用的话,坑会比较多,注意5.x需要Java17(4.x以及3.x才兼容Java8)。官网推荐 5.x 及 样例 neo4j-examples/movies-java-bolt
Spring Data Neo4j 不同boot版本的配置和使用方式差别较大(yml配置名变更),需要仔细翻阅相应版本的文档。
Java8 简单使用
|
|
|
|
|
|
坑点: 不支持多数据库,API简陋
使用
Neo4j - 悦光阴 - 博客园
Neo4j 第二篇:图形数据库 - 悦光阴 - 博客园
neo4j基础使用案例笔记 - 易水风萧
访问7474端口打开网页客户端
- 节点类型和边可以修改默认展示的字段和颜色,通过点击详情中的色块弹出设置页
- 执行窗口可通过 Ctrl + 上下方向键 切换历史执行的语句
查询 修改
Cypher
专有语言,类似于SQL,用于执行查询和修改,删除等
数据导入
Load CSV
可以注意到文件的写法是协议,所以支持HTTP协议的文件,如果是本地文件则是file://。
默认导入路径在 neo4j.conf 中配置,默认为 Neo4j根路径(/var/lib/neo4j)的import目录, 文件名最好为英文
|
|
结构
使用Neo4j创建的图(Graph)基于属性图模型,在该模型中
- 每个实体都有ID(Identity)唯一标识,每个节点由标签(Lable)分组,每个关系都有一个唯一的关系类型。
- 标签用于对节点进行分组,相当于节点的类型。一个节点可以拥有零或多个标签,因此,一个节点可以属于多个分组。
- 关系也有类型(type),用于对关系做分类,一个关系只能有一个分类,两个节点间要多个分类时则建多个关系。
- 属性是一个键值对(Key/Value),用于为节点或关系提供扩展的信息。一般情况下,每个节点都会加name属性,存储节点的业务名称。
- 节点和关系的默认属性有 identity,elementId 均唯一。关系存储方式为 Start节点 End节点 和类型type
Schema
Neo4j的模式(Schema)通常是指索引、约束和统计,通过创建模式,Neo4j能够获得查询性能的提升和建模的便利;Neo4j数据库的模式可选的,也可以是无模式的。
索引
|
|
约束
统计信息
当使用Cypher查询图形数据库时,Cypher脚本被编译成一个执行计划,执行该执行计划获得查询结果。为了生成一个性能优化的执行计划,Neo4j需要收集统计信息以对查询进行优化。当统计信息变化到一定的赋值时,Neo4j需要重新生成执行计划,以保证Cypher查询是性能优化的
Pattern
模式(Pattern)和模式匹配(Match)是Cypher的核心,使用模式来描述所需数据的形状,该模式使用属性图的结构来描述,通常使用小括号()表示节点,–>表示关系,-[]->表示关系和关系的类型,箭头表示关系的方向。
节点模式 (Variable:Lable1:Lable2{Key1:Value1,Key2,Value2})
- 节点可以有多个标签用于匹配,{}内则是匹配节点的属性值
关系模式 在属性图中,节点之间存在关系,关系通过[]表示,节点之间的关系通过箭头()-[]->()表示
- 关联节点模式: 节点之间通过关系联系在一下,由于关系具有方向性,因此,–>表示存在有向的关系,–表示存在关联,不指定关系的方向
(a)-[r]->(b)
:该模式用于描述节点a和b之间存在有向的关系r,(a)-->(b)
:该模式用于描述a和b之间存在有向关系;
- 变长路径的模式: 从一个节点,通过直接关系,连接到另外一个节点,这个过程叫遍历,经过的节点和关系的组合叫做路径(Path),路径是由节点和关系的有序组合
(a)-->(b)
:是步长为1的路径,节点a和b之间有关系直接关联;(a)-->()-->(b)
:是步长为2的路径,从节点a,经过两个关系和一个节点,到达节点b;- Cypher语言支持变长路径的模式,变长路径的表示方式是:
[*N..M]
,N和M表示路径长度的最小值和最大值
应用
hokaso/hocassian-people-neo4j: NoSQL可视化人脉图谱项目
NTDXYG/Neo4j: 基于电影知识图谱和微信小程序的智能问答系统
lonngxiang/Knowledge-map-of-family-tree (姓氏家族家谱知识图谱)
python_de_learners_data/code_script_notebooks/projects/exploringNeo4j
rahulnyk/graph_maker
felahong/neo4j-kenan-relationship-map: 图数据库 - 我用Neo4j 实现了柯南和怪盗基德周边动态关系图谱
Author Kuangcp
LastMod 2024-10-13