1.什么是Neo4j?
Neo4j是一个高性能的,NOSQL数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事物特性的java持久化引擎。Neo4j也可以看作是一个高性能的图引擎,该引擎具有成熟数据库所有特性。
在属性图中,图由顶点(节点),边(关系),属性组成,每个顶点和边都可以有一个或多个属性,Neo4j创建的图是用顶点和边构建的有向图。
2.使用场景
1.社交媒体和社交网络图
当您使用图形数据库为社交网络应用程序提供动力时,可以轻松利用社交关系或根据活动推断关系。
2.知识图
利用基于图形的搜索工具的强大功能,使用市场上最灵活和可伸缩的解决方案进行更好的数字资产管理。
3.反欺诈多维关联分析
通过图分析可以清楚的知道洗钱网络及相关嫌疑,例如对用户所使用的账号、发生交易时的IP地址、MAC地址、手机IMEI号等进行关联分析。
4.企业关系图谱
图数据库可以对各种企业进行信息图谱的建立,包括最基本的工商信息,包括何时注册、谁注册、注册资本、在何处办公、经营范围、高管架构。围绕企业的经营范围,继续细化去查询企业究竟有哪些产品或服务,例如通过企业名称查询到企业的自媒体,从而给予其更多关注和了解。另外也包括对企业的产品和服务的数据关联,查看该企业有没有令人信服的自主知识产权和相关资质来支撑业务的开展。
企业在日常经营中,与客户、合作伙伴、渠道方、投资者都会打交道,这也决定了企业对社会各个领域都广有涉猎,呈现面错综复杂,因此可以通过企业数据图谱来查询,层层挖掘信息。基于图数据的企业信息查询可以真正了解企业的方方面面,而不再是传统单一的工商信息查询。
3.简单的CQL(cypher查询语言)语句
CQL代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。
CQL支持以下数据类型:
聚合函数:
常用命令:
1.创建---create
(1)创建节点:
CREATE (别名:标签名 {属性:’属性值’, 属性2:’属性2值’}),
(别名2: 标签名2 {属性:属性值, 属性2:’属性2值’})
,,,,,,
(2)创建关系:
(别名)-[:关系名称]->(别名2)
2.查询---match
(1)查询某个节点(通过属性查询)
Match(别名:标签名 {属性:’属性值’}) return别名
(2)查询两个节点(通过属性和关系查询,关系区分大小写)
Match (别名1:标签名1 {属性:’属性值’})-[:关系名]->(别名2) return 别名1,别名2
(3)给存在的节点(node)添加关系
Match (别名1:标签名 {属性1:’属性1值’}), (别名2:标签名 {属性2:’属性2值’})
Merge (别名1)-[:关系名]->(别名2)
(4)对存在的关系修改(先删除再添加)
Match (别名1:标签名 {属性1:’属性1值’}), (别名2:标签名 {属性2:’属性2值’})
Merge (别名1)-[r1:原关系名]->(别名2) delete r1
Merge (别名1)-[新关系名]->(别名2)
3.更新属性--set(cypher语言中,任何语法都可以有return)
Match (别名:标签名 {属性:’属性值’}) set 属性名=’属性值’ return n
4.删除--delete remove
Delete:删除节点和关系
Remove:删除标签和属性(remove label等同于 drop table)
这两个命令应该与match一起使用
(1)删除属性:
Match (别名:标签名 {属性:’属性值’}) remove 别名.属性名 return 别名
(2)删除节点和关系
Match (别名1:标签1)-[r:关系名]->(别名2:标签2) delete 别名1, r, 别名2
(3)删除标签
Match (别名:标签名) remove 别名
(4)删除一个关系
Match (别名1:标签1),(别名2:标签2) where 别名1.属性名=属性值 and 别名2.属性=属性值 merge (别名1)-[r:关系名]->(别名2) delete r
5.创建索引和删除索引
create index on :标签名 (属性名)
drop index on :标签名 (属性名)
6.创建和删除唯一性约束
create constraint on (标签名) assert 属性名 is unique
drop constraint on (标签名) assert 属性名 is unique
4.数据库备份与恢复
在对Neo4j数据进行备份、恢复、迁移的操作时,首先要关闭Neo4j。
cd %NEO4J_HOME%/bin
./neo4j stop
数据备份: ./neo4j-admin dump --database=graph.db --to=/home/xxx.dump
数据恢复:./neo4j-admin load --from=/home/xxx.dump --database=graph.db --force
启动服务:./neo4j start