《NOSQL数据库技术》课件第3章-Neo4j图数据库_第1页
《NOSQL数据库技术》课件第3章-Neo4j图数据库_第2页
《NOSQL数据库技术》课件第3章-Neo4j图数据库_第3页
《NOSQL数据库技术》课件第3章-Neo4j图数据库_第4页
《NOSQL数据库技术》课件第3章-Neo4j图数据库_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录Neo4jDB基础1Neo4j数据操作基础2Neo4j集群技术3Neo4j管理与监控4小结513.1Neo4jDB基础2Neo4j图数据库采用Java语言开发。Neo4j图数据库是以原生图结构形式来存储数据的,数据模型对于实体及其间的复杂关联关系具有天生的适配性官网:/谁在用?https:///customers/3.1Neo4jDB基础Neo4j特点优越的性能:高效的读写能力;设计的灵活性:无固定模式,自然扩展;迭代的敏捷性:适应迭代的敏捷开发方法;安全可靠:支持事务管理,提供实时在线备份、日志恢复功能;简单易用:支持多种程序设计语言开发,特别是SpringdataNeo4j开发包;支持RESTAPI;提供类SQL的图数据查询语言:Neo4jCQL;支持批量导入、导出图数据;提供一个用于执行CQL命令的WebUI:通过浏览器即可操作Neo4j图数据;3.1Neo4jDB基础Neo4j特点(续)支持索引机制及UNIQUE约束;采用原生图数据存储模式与图计算引擎;提供丰富的图数据处理与分析算法库(APOC);提供丰富的API,支持Java、Python、Scala等编程语言;集群架构易于横向扩展;最新4.0版本在横向扩展方面、安全控制粒度方面、支持Web应用响应式开发框架技术等方面都有很大提升;丰富的学习资源:/graphgists/;大企业实践应用的考验:拥有广大实力派用户群体,验证了其稳定性、健壮性;3.1Neo4jDB基础Neo4j特点(续):采用属性图模型描述业务关键图数据图数据模型关键要素

节点、关系、节点属性、关系属性等还有?Neo4j数据模型基本要素节点存储(nodestore)关系存储(relationshipstore)属性存储(propertystore)标签(Label):表示类别的含义3.1Neo4jDB基础官网下载:https:///社区版:单机、免费。课堂演示采用该版本企业版示例采用2019年发布的3.5版本;2020年1月15日发布最新版本4.0,读者可自行对比练习;4..0版本主要在多数据库访问支持、响应式开发等方面进行提升3.1.1下载与安装Windows版本安装,linux平台安装步骤类似下载neo4j-community-3.5.x-windows.zip需要OpenJDK8或者

OracleJava8环境创建目录:如D:\neo4j\解压,主要文件夹作用如下:bin目录:用于存储Neo4j的可执行程序;conf目录:用于控制Neo4j启动的配置文件,neo4j.conf

;data目录:用于存储核心数据库文件;plugins目录:用于存储Neo4j的插件;logs目录:用于存储日志文件;lib目录:用于存储依赖的jar包文件;3.1.1下载与安装配置环境变量设置环境变量:NEO4J_HOME为安装路径修改环境变量:PATH,加上Neo4j的bin目录3.1.1下载与安装启动服务:管理员身份方法1:控制台启动:neo4j.batconsole问题:需要始终开启窗口,否则服务无法访问方法2:安装服务,在系统服务管理中启停服务neo4jinstall-service方法3:neo4jstart命令启动服务

neo4jstop命令停止服务3.1.1下载与安装启动服务验证服务启动成功使用浏览器打开:http://localhost:74743.1.1下载与安装登录数据库服务默认登录账号:neo4j密码:neo4j首次登录需要修改密码:如改为yuan3.1.1下载与安装左边收藏中有电影库示例及其它功能菜单3.1.1下载与安装在Web控制台可以执行以下命令查看有关CQL的详细在线语法帮助。$:helpcypherNeo4j除了提供Web控制台方式操作数据库外,也提供了Cypher-shell的命令行方式操作数据库。命令行交互环境下可输入:help查看cypher命令提示信息输入:quit则退出交互环境cypher命令执行时需要以冒号开头3.1.1下载与安装Neo4j除了CQL默认提供的函数和存储过程外,还提供了功能强大的扩展APOC库。可以调用库函数进行更复杂的图数据处理与分析如图数据集成处理、社团检测、节点重要性计算、PageRank等算法,及灵活的格式转换等数据处理函数。需要额外安装对应程序包,如apoc--all.jars实践环节再详细介绍,右边命令可确认是否安装成功以下为格式转换命令示例3.1.1下载与安装在Neo4j数据库中,节点、边的属性是一系列的Key、Value值对,Key取值要求为字符串类型,表示属性的名称,属性Value的类型如表所示,可以是9种基本类型之一,也可以是由基本类型组成的数组类型。序号CQL数据类型含义1boolean布尔:true,false2byte8位整数3short16位整数4int32位整数5long64位整数6float32位浮点7double64位浮点8char16位Unicode字符9string字符串,Unicode字符序列3.1.2数据类型复杂类型支持映射(Map):KV形式列表(List)类型:类似数组的形式存储多个值的序列可以通过位置引用某个元素值,位置索引从0开始,位置为负时表示从尾部开始时间、日期类型:不直接支持通过函数调用实现,如下date函数调用示例3.1.2数据类型时间、日期类型:不直接支持(续)timestamp()函数可以用来获取当前的时间timestamp()函数内部是使用System.currentTimeMillis()返回当前毫秒级时间戳值的。可以使用APOC库函数apoc.date.format来完成格式转换操作,如按”yyyy-MM-ddHH:mm:ss”格式显示3.1.2数据类型目录Neo4jDB基础1Neo4j数据操作基础2Neo4j集群技术3Neo4j管理与监控4小结5193.2Neo4j数据操作基础20Neo4j每次启动读取配置文件中默认链接的数据库如初始默认配置数据库名称为:graph.db对应配置文件neo4j.conf中对应的数据库配置项:dbms.active_database=graph.db数据库文件位于安装路径下的\data\databases\graph.db文件夹下后续实践课学习如何新建其他数据库节点及其属性、标签的CRUD创建没有属性的节点创建包含属性的节点创建有一个标签的节点创建有多个标签的节点节点查询、修改、删除操作3.2.1节点操作1、创建没有属性的节点CREATE(<node-v-name>:<label-name>)例:create(emp:Employee)create(dept:Dept)注:如果执行两次上面标红色的语句会报错吗?<node-name>要创建的节点名称。<label-name>节点标签名称3.2.1节点操作说明:v表示variable,变量2、创建有属性的节点CREATE(<node-v-name>:<label-name>

{

<Property1-name>:<Property1-Value>

<Propertyn-name>:<Propertyn-Value>

})示例:CREATE(dept:Dept{deptno:10,dname:"Accounting",location:"Hyderabad"})3.2.1节点操作3.创建标签:节点单一标签CREATE(<node-v-name>:<label-name>)示例:CREATE(google1:GooglePlusProfile)4.同时创建节点的多个标签CREATE(<node-v-name>:<label-name1>:<label-name2>:<label-namen>)示例:CREATE(m:Movie:Cinema:Film:Picture)3.2.1节点操作节点查找

MATCH

(emp:Employee)

WHERE

='Abc'OR='Xyz'

RETURNemp查询所有节点,结果显示如图

MATCH(n)RETURNn;3.2.1节点操作更改节点属性语法:SET<property-name-list>示例:1)批量修改MATCH(emp:Employee)setemp.sal=3456returnemp2)

加WHERE过滤条件,修改满足条件节点的属性MATCH(emp:Employee)WHEREemp.id=121setemp.sal=5678returnemp3)加属性匹配过滤条件,修改匹配节点的属性MATCH(emp{id:121})setemp.sal=9000returnemp3.2.1节点操作删除节点示例语法:DELETE<node-name-list>示例:match(e:Employee)DELETEe注意:当节点含关系时,无法执行删除。可以限定要删除节点满足的属性取值及其它需要满足的条件3.2.1节点操作删除节点属性,关系属性删除语法类似语法:REMOVE<property-name-list>示例:1)创建CREATE(book:Book{id:122,title:"Neo4jTutorial",pages:340,price:250})3.2.1节点操作删除节点属性,关系属性删除语法类似(续)示例:2)查询:match(n:Book)returnnlimit253)删除节点属性MATCH(book{id:122})removebook.pricereturnbook3.2.1节点操作删除节点标签,关系标签删除语法类似语法:REMOVE<label-name-list>示例:MATCH(m:Movie)removem:PictureREMOVE与DELETE比较DELETE删除节点、关系;REMOVE删除属性、标签;二者都不能独立使用;二者需要和MATCH配合使用;3.2.1节点操作使用循环批量创建节点示例:with["a","b","c"]ascollforeach

(valueincoll|create(:person{name:value}))3.2.1节点操作1、创建无属性的关系CREATE

(<node1-v-name>:<node1-label-name>{…})-[<relationship-v-name>:<relationship-label-name>]->

(<node2-v-name>:<node2-label-name>{…})RETURN<relationship-v-name>示例:create(p1:Person)-[like:LIKES]->(p2:Person)3.2.2关系操作return非必需,也可返回其它表达式结果2、创建有属性的关系CREATE(<node1-v-name>:<node1-label-name>{<define-properties-list>})-[<relationship-v-name>:<relationship-label-name>{<define-properties-list>}]->(<node2-v-name>:<node2-label-name>{<define-properties-list>})RETURN<relationship-v-name>示例:CREATE(TheMatrix:Movie{title:'TheMatrix',released:1999,tagline:'WelcometotheRealWorld'})CREATE(Keanu:Person{name:'KeanuReeves',born:1964})CREATE(Keanu)-[:ACTED_IN{roles:['Neo']}]->(TheMatrix);3.2.2关系操作return非必需,也可返回其它表达式结果3、匹配已有节点,创建关系MATCH(<node1-v-name>:<node1-label-name>{…}),(<node2-v-name>:<node2-label-name>{…})CREATE

(<node1-v-name>)-[<relationship-v-name>:<relationship-label-name>{<define-properties-list>}]->(<node2-v-name>)RETURN<relationship-v-name>示例:CREATE(e:Customer{custID:100});CREATE(cc:CreditCard{cardID:300360});MATCH(e:Customer{custID:100}),(cc:CreditCard{cardID:300360})CREATE(e)-[r:DO_SHOPPING_WITH]->(cc);3.2.2关系操作删除关系示例,通常语法:DELETE<relationship-v-name>注:需配合匹配子句指定要删除关系需满足的条件示例:1)查询MATCH(cc:CreditCard)-[r]-(e:Customer)RETURNcc,e,r3.2.2关系操作删除关系示例,通常2)删除节点及关系match(cc:CreditCard)-[r]-(e:Customer)whereid(r)=273deleter3)查询MATCH(cc:CreditCard)-[r]-(e:Customer)RETURNcc,e,r4)以下语句会产生什么效果呢?match(cc:CreditCard)-[r]-(e:Customer)delete

r3.2.2关系操作排序子句语法:ORDERBY<property-name-list>[DESC]示例:create(emp:Employee{id:121,name:"qiqi",sal:35600,deptno:11})create(emp:Employee{id:123,name:"maqi",sal:5600,deptno:131})create(emp:Employee{id:125,name:"wufang",sal:8600,deptno:123})MATCH(emp:Employee)returnemp.id,,emp.sal,emp.deptno3.2.3排序与聚合操作排序子句示例:MATCH(emp:Employee)returnemp.id,,emp.sal,emp.deptnoORDERBYDESCMATCH(emp:Employee)returnemp.id,,emp.sal,emp.deptnoORDERBYemp.sal3.2.3排序与聚合操作使用WITH,连接子句MATCH(a:Person)-[:ACTED_IN]->(b:Movie)WITHa,count(b)ASk

WHEREk>0RETURNa,kORDERBYkDESC3.2.3排序与聚合操作如经典的最短路径查询MATCH(bacon:Person{name:"KevinBacon"})-[*1..4]-(hollywood)RETURNDISTINCThollywood3.2.4路径操作CQL索引Neo4jCQL支持节点或关系属性上的索引,以进一步提高应用程序的性能。可为具有相同标签的节点属性、关系属性创建索引。可以在MATCH或WHERE或IN运算符上使用这些索引来改进CQLCommand的执行性能。Neo4J索引操作CreateIndex

创建索引CREATEINDEXON:<label_name>(<property_name>)DropIndex

删除索引DROPINDEXON:<label_name>(<property_name>)3.2.5索引操作CQLUNIQUE约束Neo4j数据库支持对节点或关系的属性设定UNIQUE约束创建唯一约束语法CREATECONSTRAINTON(<label_name>)ASSERT<property_name>ISUNIQUE删除UNIQUE约束语法DROPCONSTRAINTON(<label_name>)ASSERT<property_name>ISUNIQUE3.2.6约束操作调用存储过程CALLdb.labels()CALLcedures():返回可用的存储过程列表及说明3.2.7存储过程调用目录Neo4jDB基础1Neo4j数据操作基础2Neo4j集群技术3Neo4j管理与监控4小结5443.3Neo4j集群技术45集群技术是低成本提供高性能存储与访问图数据的关键技术Neo4j图数据库主要有两种集群方式因果集群(CausalClustering)在3.1企业版中增加采用先进的集群架构和安全架构满足企业更大规模生产与安全性、可用性需求配置文件集群类别dbms.mode的值:CORE或者READ_REPLICA高可用性集群(HighAvailability,HA)最先在1.2版本上提供配置文件集群类别dbms.mode的值:HA3.3.1因果集群46因果集群按节点在集群中的操作任务分工,主要分为两类(1)核心服务器(CoreServer):处理读写的操作,大多数的核心服务器主要处理写操作。(2)读复制服务器(ReadReplicas):集群中可以包含一个或多个只负责分担读数据任务的服务器,数据从核心服务器异步更新,保持一致。安全性:当大多数核心服务器正常运行时,该平台将保持可用。扩展性:读复制服务器提供了可大规模横向扩展的平台,可以高效地分担图数据查询类负载。因果一致性:保证客户端应用程序至少能够读取自己的写入。3.3.1因果集群47为了保障一定数量核心服务器的容错能力,一般通过公式M=2F+1来计算集群中核心服务器的数量规模F为容错服务器数量M为核心服务器总数量如果可容忍1台故障服务器,则需要配置3台服务器。架构中核心服务器基于Raft协议维护和管理,并内置了由Neo4jBolt驱动处理的负载均衡机制3.3.2高可用性集群Neo4j高可用性(HA)集群采用主从式架构,可以1主多从。主服务器完成写入之后,同步数据到从服务器,主服务器既可以写也能读。与其他主从复制相比,Neo4j从节点(slave)可以处理写入,不需要都从主节点直接写入。但为保持数据一致性,从节点将写请求发给主节点同步处理写入。然而更新操作最终从主节点传播到从节点(slave),所以一个从节点的写入在其他所有从节点上不是立即可见的。目录Neo4jDB基础1Neo4j数据操作基础2Neo4j集群技术3Neo4j管理与监控4小结5493.4Neo4j管理与监控50Neo4j图数据库提供了方便、易用的管理与监控功能批量图数据导入图数据库备份、恢复事务管理监控与日志……3.4.1图数据导入51图数据库在初始建立或者数据库迁移时,往往需要将大量历史数据导入数据库。为了提高工作效率,Neo4j为用户提供了方便的批量数据导入操作。Neo4j导入方法主要有两种LOAD命令导入CSV格式数据$LOADCSVWITHHEADERSFROM"/northwind/products.csv"ASrowneo4j-import工具也可以借助第三方ETL工具软件完成数据导入、导出处理任务。数据导入、导出方法将在实践课具体介绍。3.4.2图数据备份与恢复52Neo4j数据库中数据备份支持完全备份和增量备份操作。企业版提供neo4j-backup备份工具功能更丰富。主要采用neo4j-admin命令进行数据库备份与恢复,在备份数据前需要将以下两个参数设置如下。dbms.backup.enable=true#默认值就是truedbms.backup.address=<主机名/IP>:6362neo4j-admin不仅仅可以用来实现数据的备份与恢复,还可以加上不同的子命令参数实现不同的管理功能。在命令行下输入以下help子命令可查看帮助>neo4j-adminhelp对于单实例数据库、HA集群、因果集群,过程类似。3.4.2图数据备份与恢复53数据备份与恢复的dump命令、load命令的用法(1)neo4j-admindump备份数据,导出整个数据库数据,需要先停止数据库。neo4j-admindump--database=graph.db--to=C:\backups\graph.db\bak-20190510.dump其中,--database参数值为要备份的数据库名称,--to参数为备份目标文件路径及名称。(2)采用neo4j-admin,导入整个数据库数据,需要先停止数据库。neo4j-adminload--from=C:\backups\graph.db\bak-20190510.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论