Neo4j Study
Neo4j 是目前主流的图数据库(graph database)产品,图数据库用于存在数据关系,更有利于关系的优化管理,存储和遍历节点和关系。
对于 Neo4j 管理员来说,需要掌握的知识点包括:
- 图数据库核心思想
- Neo4j 架构
- 可视化管理:Neo4j Browser, Neo4j Desktop等
- 高级管理技术:升级、客户端工具使用、日志管理、备份恢复、监控
- 优化技术:负载均衡、集群
- 安全技术:授权与认证,用户管理
概念
什么是图数据库?
使用过传统关系型数据库(例如:MySQL)的同学非常明确,一个数据库 大约等于 多个数据表+表之间的关系。而图数据库(Graph database)理解起来却没那么直观,首先要明确的是图数据库与图片没有关系,即它不是用来存储图片的,也不是以图片的形式存储数据的。
图. 关系型数据库 vs 图数据库
关系型数据库重点在于管理多个表,以及表中海量的数据,虽然名称为关系型,但实际上关系不是重点,重点是一行一行的数据。
图数据库恰恰相反,图数据库的重点是管理一对一对的关系。
可能有些同学有疑问,难道关系也需要用到数据库来管理?当然,看看下面的场景:
应用场景
- 社交领域:Facebook, Linkedin 分析每个用户的好友信息,进一步管理社交关系,实现好友推荐
- 零售领域:零售商 和电商平台构建商品之间的关系模型链(读读《啤酒与尿布》),便于做商品推荐
- 金融领域:从用户手机通讯录或爬取社交关系,为用户构建一个关系网画像,便于风控和催收
- 汽车制造领域:汽车制造商零部件供应商的关系图谱,有效降低单台汽车2万个零部件的供应链风险
- 电信领域:电信运营商公司管理分布全球的复杂网络设施拓扑图,便于更有效的运维。
- 知识图谱领域:企查查、天眼查等对于公司和人的关系的知识图谱,可以理解为关系搜索引擎。
- 公共领域:类似新冠疫情患者出行轨迹的关系图谱,可以更好做出精准排查。
可见,图数据库就用来存储:人-人, 物-物, 人-物 之间的关系,用于推荐、知识图谱、效率等目的。
在内卷化及其严重的今天,通过对各行各业关系的研究和分析,获取知识,从其中挖潜“数据金矿”,不失为一种差异化竞争的途径。
如何存储数据?
图数据库的数据存储相关概念有:节点(标签,属性),关系(关系,关系类型)。
以下图为例:
- 一共有三个节点(两个 Person 节点,一个 Movie 节点),两个关系(两条边)
- 一共两个关系类型:ACTED_IN 和 DIRECTED
- 一共两个标签(节点类型或节点分组):Person 和 Movie
- Person 类型节点有两个属性:name 和 born
- Movie 类型节点有两个属性:title 和 released
- 关系类型 ACTED_IN 有一个属性 roles
- 两个关系中有方向,也称之路径(Path)
学术上属性图的基本概念:一个属性图是由顶点(Vertex),边(Edge),标签(Lable),关系类型和属性(Property)组成的有向图。
数据库特征
Neo4j 作为一个数据库管理系统,与其他数据库管理系统有非常类似的基本数据库定义
-
数据库管理系统:Neo4j是一个数据库管理系统(DBMS),能够管理多个数据库。DBMS可以管理因果群集中的独立服务器或一组服务器。
-
数据库:目录或文件夹内组织的文件的物理结构,具有与数据库相同的名称。从逻辑上讲,数据库是一个或多个图形的容器。
Neo4j 4.2的默认安装包含两个数据库:
- system-系统数据库,包含DBMS上的元数据和安全性配置。
- neo4j-默认数据库,用于存储用户数据的数据库。
-
Graph:数据库中的数据模型,每个数据中只有一个Graph(图)
下面是数据库管理的命令:
命令 | 描述 |
---|---|
CREATE DATABASE name [企业版] | 创建并启动一个新的数据库。 |
DROP DATABASE name [企业版] | 删除(删除)现有数据库。 |
START DATABASE name | 启动已停止的数据库。 |
STOP DATABASE name | 关闭数据库。 |
SHOW DATABASE name | 显示特定数据库的状态。 |
SHOW DATABASES | 显示所有数据库的名称和状态。 |
SHOW DEFAULT DATABASE | 显示默认数据库的名称和状态。 |
:use neo4j; | 切换到 neo4j 库 |
Installation
Neo4j is based on Java runtime, before installation, you should install JDK
- Linux: use rpm/deb package for installation
- Windows/macOS: one click installation package
- Docker:Use Neo4j image on DockerHub
And you can use the Neo4j Aura hosted in the cloud.
CLI
Refer to: Neo4j Tools
Clustering
Refer to: Clustering
Only for Neo4j Enterprise Edition
Fabric
Refer to: Neo4j Fabric
Authentication
Refer to: Authentication and authorization
Security
Refer to: Neo4j Security
Monitoring
Refer to: Monitoring
Performance
Refer to: Performance