linux 安装 neo4j

日萌社

人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)


MySQL part1

MySQL part2

MySQL part3

Redis part1

Redis part2

Redis part3

neo4j图数据库:Cypher

mongodb:安装cmake、mongodb、mongodb的C驱动、C++驱动

linux 安装 Redis

linux 安装 neo4j


链接:https://pan.baidu.com/s/19R-SdGCy8klKjYQhckGTew 
提取码:ug14 


ubuntu安装neo4j

1.下载:https://neo4j.com/download-center/#community
2.安装neo4j-community-3.5.18
	tar -xzvf neo4j-community-3.5.18-unix.tar.gz
	cd ./neo4j-community-3.5.18
3.配置 vim ./neo4j-community-3.5.18/conf/neo4j.conf
  注意:现在文件中先搜索对应的属性名,如果被注释掉的话则可以直接增加,如果属性没被注释的话则可以对其进行修改
	# 数据库的存储库存储位置、日志位置等
	dbms.directories.data=data
	dbms.directories.plugins=plugins
	dbms.directories.certificates=certificates
	dbms.directories.logs=logs
	dbms.directories.lib=lib
	dbms.directories.run=run

	# 导入的位置
	dbms.directories.import=import

	# 初始化内存大小
	dbms.memory.heap.initial_size=512m

	# Bolt 连接地址
	dbms.connector.bolt.enabled=true
	dbms.connector.bolt.tls_level=OPTIONAL
	dbms.connector.bolt.listen_address=0.0.0.0:7687
 
	dbms.connector.http.enabled=true
	dbms.connector.http.listen_address=0.0.0.0:7474

	dbms.connector.https.enabled=true
	dbms.connector.https.listen_address=0.0.0.0:7473


4.JDK1.8 下载安装
	1.下载:https://www.oracle.com/java/technologies/javase-jdk8-downloads.html
	2.卸载自带的OpenJDK方法 sudo apt-get remove openjdk*
	3.安装 JDK 1.8
		sudo mkdir /usr/local/java
		sudo tar zxvf jdk-8u251-linux-x64.tar.gz -C /usr/local/java
		cd /usr/local/java/jdk1.8.0_251/bin
		./java -version
	4.vim ~/.bashrc
		1.在文件末尾添加以下内容:
			#set java environment
			JAVA_HOME=/usr/local/java/jdk1.8.0_251
			CLASSPATH=.:$JAVA_HOME/lib/tools.jar
			PATH=$JAVA_HOME/bin:$PATH
			export JAVA_HOME CLASSPATH PATH
		2.重新加载profile配置文件,让配置文件生效:source ~/.bashrc 
		3.检查是否已配置好新的JDK:java -version

5.启动neo4j
	cd ./neo4j-community-3.5.18/bin
	./neo4j start
	ps aux|grep neo4j 

6.浏览器访问使用
	neo4j的可视化管理后台登陆:192.168.88.26:7474
	ConnectURL bolt:192.168.88.26:7687
	Username: neo4j
	Password: neo4j (默认)


centos安装neo4j

  • neo4j图数据库的安装流程:
    • 第一步: 将neo4j安装信息载入到yum检索列表.
    • 第二步: 使用yum install命令安装.
    • 第三步: 修改配置文件内容 /etc/neo4j/neo4j.conf.
    • 第四步: 启动neo4j数据库.

  • 第一步: 将neo4j安装信息载入到yum检索列表
cd /tmp
wget http://debian.neo4j.org/neotechnology.gpg.key
rpm --import neotechnology.gpg.key
cat <<EOF>  /etc/yum.repos.d/neo4j.repo
# 写入下面内容
[neo4j]
name=Neo4j RPM Repository
baseurl=http://yum.neo4j.org/stable
enabled=1
gpgcheck=1
EOF
  • 第二步: 使用yum install命令安装
yum install neo4j-3.3.5

  • 第三步: 修改配置文件默认在/etc/neo4j/neo4j.conf, 为了方便显示下面把一些修改显示在这里
# 数据库的存储库存储位置、日志位置等
dbms.directories.data=/var/lib/neo4j/data
dbms.directories.plugins=/var/lib/neo4j/plugins
dbms.directories.certificates=/var/lib/neo4j/certificates
dbms.directories.logs=/var/log/neo4j
dbms.directories.lib=/usr/share/neo4j/lib
dbms.directories.run=/var/run/neo4j

# 导入的位置
dbms.directories.import=/var/lib/neo4j/import

# 初始化内存大小
dbms.memory.heap.initial_size=512m

# Bolt 连接地址
dbms.connector.bolt.enabled=true
dbms.connector.bolt.tls_level=OPTIONAL
dbms.connector.bolt.listen_address=0.0.0.0:7687

  • 第四步: 启动neo4j数据库
# 启动命令
neo4j start

# 终端显示如下, 代表启动成功
Active database: graph.db
Directories in use:
  home:         /usr/neo4j
  config:       /etc/neo4j
  logs:         /var/log/neo4j
  plugins:      /var/lib/neo4j/plugins
  import:       /var/lib/neo4j/import
  data:         /var/lib/neo4j/data
  certificates: /var/lib/neo4j/certificates
  run:          /var/run/neo4j
Starting Neo4j.

  • neo4j的可视化管理后台登陆:
    • 访问地址: http://0.0.0.0:7474.
    • ConnectURL: bolt://0.0.0.0:7687
    • Username: neo4j
    • Password: neo4j (默认)


Cypher介绍与使用

  • 学习目标
    • 了解Cypher的基本概念.
    • 掌握Cypher的基本命令和语法.

  • Cypher的基本概念:
    • Cypher是neo4j图数据的查询语言, 类似于mysql数据库的sql语句, 但是它允许对图形进行富有表现力和有效的查询和更新.

  • Cypher的基本命令和语法:
    • create命令
    • match命令
    • merge命令
    • relationship关系命令
    • where命令
    • delete命令
    • sort命令
    • 字符串函数
    • 聚合函数
    • index索引命令

  • create命令: 创建图数据中的节点.

  • 演示:
# 创建命令格式:
# 此处create是关键字, 创建节点名称node_name, 节点标签Node_Label, 放在小括号里面()
# 后面把所有属于节点标签的属性放在大括号'{}'里面, 依次写出属性名称:属性值, 不同属性用逗号','分隔
# 例如下面命令创建一个节点e, 节点标签是Employee, 拥有id, name, salary, deptnp四个属性:
CREATE (e:Employee{id:222, name:'Bob', salary:6000, deptnp:12})

  • 效果

  • match命令: 匹配(查询)已有数据.

  • 演示:
# match命令专门用来匹配查询, 节点名称:节点标签, 依然放在小括号内, 然后使用return语句返回查询结果, 和SQL很相似.
MATCH (e:Employee) RETURN e.id, e.name, e.salary, e.deptno

  • 效果:

  • merge命令: 若节点存在, 则等效与match命令; 节点不存在, 则等效于create命令.

  • 演示:
MERGE (e:Employee {id:146, name:'Lucer', salary:3500, deptno:16})

  • 效果:

  • 然后再次用merge查询, 发现数据库中的数据并没有增加, 因为已经存在相同的数据了, merge匹配成功.

  • 演示:
MERGE (e:Employee {id:146, name:'Lucer', salary:3500, deptno:16})

  • 效果:

  • 使用create创建关系: 必须创建有方向性的关系, 否则报错.

  • 演示:
# 创建一个节点p1到p2的有方向关系, 这个关系r的标签为Buy, 代表p1购买了p2, 方向为p1指向p2
CREATE (p1:Profile1)-[r:Buy]->(p2:Profile2)

  • 效果:

  • 使用merge创建关系: 可以创建有/无方向性的关系.

  • 演示:
# 创建一个节点p1到p2的无方向关系, 这个关系r的标签为miss, 代表p1-miss-p2, 方向为相互的
MERGE (p1:Profile1)-[r:miss]-(p2:Profile2)

  • 效果:

  • where命令: 类似于SQL中的添加查询条件.

  • 演示:
# 查询节点Employee中, id值等于123的那个节点
MATCH (e:Employee) WHERE e.id=123 RETURN e

  • 效果:

  • delete命令: 删除节点/关系及其关联的属性.

  • 演示:
# 注意: 删除节点的同时, 也要删除关联的关系边
MATCH (c1:CreditCard)-[r]-(c2:Customer) DELETE c1, r, c2

  • 效果:

  • sort命令: Cypher命令中的排序使用的是order by.

  • 演示:
# 匹配查询标签Employee, 将所有匹配结果按照id值升序排列后返回结果
MATCH (e:Employee) RETURN e.id, e.name, e.salary, e.deptno ORDER BY e.id

# 如果要按照降序排序, 只需要将ORDER BY e.salary改写为ORDER BY e.salary DESC
MATCH (e:Employee) RETURN e.id, e.name, e.salary, e.deptno ORDER BY e.salary DESC

  • 效果:

  • 字符串函数:
    • toUpper()函数
    • toLower()函数
    • substring()函数
    • replace()函数

  • toUpper()函数: 将一个输入字符串转换为大写字母.

  • 演示:
MATCH (e:Employee) RETURN e.id, toUpper(e.name), e.salary, e.deptno

  • 效果:

  • toLower()函数: 讲一个输入字符串转换为小写字母.

  • 演示:
MATCH (e:Employee) RETURN e.id, toLower(e.name), e.salary, e.deptno

  • 效果:

  • substring()函数: 返回一个子字符串.

  • 演示:
# 输入字符串为input_str, 返回从索引start_index开始, 到end_index-1结束的子字符串
substring(input_str, start_index, end_index)

# 示例代码, 返回员工名字的前两个字母
MATCH (e:Employee) RETURN e.id, substring(e.name,0,2), e.salary, e.deptno

  • 效果:

  • replace()函数: 替换掉子字符串.

  • 演示:
# 输入字符串为input_str, 将输入字符串中符合origin_str的部分, 替换成new_str
replace(input_str, origin_str, new_str)

# 示例代码, 将员工名字替换为添加后缀_HelloWorld
MATCH (e:Employee) RETURN e.id, replace(e.name,e.name,e.name + "_HelloWorld"), e.salary, e.deptno


  • 效果:

  • 聚合函数
    • count()函数
    • max()函数
    • min()函数
    • sum()函数
    • avg()函数

  • count()函数: 返回由match命令匹配成功的条数.

  • 演示:
# 返回匹配标签Employee成功的记录个数
MATCH (e:Employee) RETURN count( * )

  • 效果:

  • max()函数: 返回由match命令匹配成功的记录中的最大值.

  • 演示:
# 返回匹配标签Employee成功的记录中, 最高的工资数字
MATCH (e:Employee) RETURN max(e.salary)

  • 效果:

  • min()函数: 返回由match命令匹配成功的记录中的最小值.

  • 演示:
# 返回匹配标签Employee成功的记录中, 最低的工资数字
MATCH (e:Employee) RETURN min(e.salary)

  • 效果:

  • sum()函数: 返回由match命令匹配成功的记录中某字段的全部加和值.

  • 演示:
# 返回匹配标签Employee成功的记录中, 所有员工工资的和
MATCH (e:Employee) RETURN sum(e.salary)

  • 效果:

  • avg()函数: 返回由match命令匹配成功的记录中某字段的平均值.

  • 演示:
# 返回匹配标签Employee成功的记录中, 所有员工工资的平均值
MATCH (e:Employee) RETURN avg(e.salary)

  • 效果:

  • 索引index
    • Neo4j支持在节点或关系属性上的索引, 以提高查询的性能.
    • 可以为具有相同标签名称的所有节点的属性创建索引.

  • 创建索引: 使用create index on来创建索引.

  • 演示:
# 创建节点Employee上面属性id的索引
CREATE INDEX ON:Employee(id)

  • 效果:

  • 删除索引: 使用drop index on来删除索引.

  • 演示:
# 删除节点Employee上面属性id的索引
DROP INDEX ON:Employee(id)

  • 效果:

  • 小节总结:

    • 学习了Cypher的基本概念:
      • Cypher是neo4j图数据的查询语言, 类似于mysql数据库的sql语句, 但是它允许对图形进行富有表现力和有效的查询和更新.

    • Cypher的基本命令和语法:
      • create命令
      • match命令
      • merge命令
      • relationship关系命令
      • where命令
      • delete命令
      • sort命令
      • 字符串函数
      • 聚合函数
      • index索引命令

    • create命令: 创建图数据中的节点.
      • CREATE (e:Employee{id:222, name:'Bob', salary:6000, deptnp:12})

    • match命令: 匹配(查询)已有数据.
      • MATCH (e:Employee) RETURN e.id, e.name, e.salary, e.deptno

    • merge命令: 若节点存在, 则等效与match命令; 节点不存在, 则等效于create命令.
      • MERGE (e:Employee {id:145, name:'Lucy', salary:7500, deptno:12})

    • 使用create创建关系: 必须创建有方向性的关系, 否则报错.
      • CREATE (p1:Profile1)-[r:Buy]->(p2:Profile2)

    • 使用merge创建关系: 可以创建有/无方向性的关系.
      • MERGE (p1:Profile1)-[r:miss]-(p2:Profile2)

    • where命令: 类似于SQL中的添加查询条件.
      • MATCH (e:Employee) WHERE e.id=123 RETURN e

    • delete命令: 删除节点/关系及其关联的属性.
      • MATCH (c1:CreditCard)-[r]-(c2:Customer) DELETE c1, r, c2

    • sort命令: Cypher命令中的排序使用的是order by.
      • MATCH (e:Employee) RETURN e.id, e.name, e.salary, e.deptno ORDER BY e.id

    • 字符串函数:
      • toUpper()函数
      • toLower()函数
      • substring()函数
      • replace()函数

    • toUpper()函数: 将一个输入字符串转换为大写字母.
      • MATCH (e:Employee) RETURN e.id, toUpper(e.name), e.salary, e.deptno

    • toLower()函数: 讲一个输入字符串转换为小写字母.
      • MATCH (e:Employee) RETURN e.id, toLower(e.name), e.salary, e.deptno

    • substring()函数: 返回一个子字符串.
      • MATCH (e:Employee) RETURN e.id, substring(e.name,0,2), e.salary, e.deptno

    • replace()函数: 替换掉子字符串.
      • MATCH (e:Employee) RETURN e.id, replace(e.name,e.name,e.name + "_HelloWorld"), e.salary, e.deptno

    • 聚合函数
      • count()函数
      • max()函数
      • min()函数
      • sum()函数
      • avg()函数

    • count()函数: 返回由match命令匹配成功的条数.
      • MATCH (e:Employee) RETURN count( * )

    • max()函数: 返回由match命令匹配成功的记录中的最大值.
      • MATCH (e:Employee) RETURN max(e.salary)

    • min()函数: 返回由match命令匹配成功的记录中的最小值.
      • MATCH (e:Employee) RETURN min(e.salary)

    • sum()函数: 返回由match命令匹配成功的记录中某字段的全部加和值.
      • MATCH (e:Employee) RETURN sum(e.salary)

    • avg()函数: 返回由match命令匹配成功的记录中某字段的平均值.
      • MATCH (e:Employee) RETURN avg(e.salary)

    • 索引index
      • Neo4j支持在节点或关系属性上的索引, 以提高查询的性能.
      • 可以为具有相同标签名称的所有节点的属性创建索引.

    • 创建索引: 使用create index on来创建索引.
      • CREATE INDEX ON:Employee(id)

    • 删除索引: 使用drop index on来删除索引.
      • DROP INDEX ON:Employee(id)

3.4 在Python中使用neo4j

  • 学习目标
    • 了解python中neo4j-driver的相关知识.
    • 掌握neo4j中事务概念和操作方法.

  • neo4j-driver简介:
    • neo4j-driver是一个python中的package, 作为python中neo4j的驱动, 帮助我们在python程序中更好的使用图数据库.

  • neo4j-driver的安装:
pip install neo4j-driver

  • neo4j-driver使用演示:
from neo4j import GraphDatabase

# 关于neo4j数据库的用户名,密码信息已经配置在同目录下的config.py文件中
from config import NEO4J_CONFIG

driver = GraphDatabase.driver( **NEO4J_CONFIG)

# 直接用python代码形式访问节点Company, 并返回所有节点信息
with driver.session() as session:
    cypher = "CREATE(c:Company) SET c.name='程序员' RETURN c.name"
    record = session.run(cypher)
    result = list(map(lambda x: x[0], record))
    print("result:", result)
  • 输出效果:
result: 程序员
  • 事务的概念:
    • 如果一组数据库操作要么全部发生要么一步也不执行,我们称该组处理步骤为一个事务, 它是数据库一致性的保证.

  • 使用事务的演示:
def _some_operations(tx, cat_name, mouse_name):
    tx.run("MERGE (a:Cat{name: $cat_name})"
           "MERGE (b:Mouse{name: $mouse_name})"
           "MERGE (a)-[r:And]-(b)",
           cat_name=cat_name, mouse_name=mouse_name)


with driver.session() as session:
    session.write_transaction(_some_operations, "Tom", "Jerry")


  • 输出效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

あずにゃん

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值