本体上为了更好的描绘实体之间的关系,咱们若是再络续使用Redis的话,是不是嗅觉实体之间的关系不够那么的昭着,天然亦然属于NoSQL的一种,可是相对来说,Redis,发挥实体之间的关系就莫得那么明晰了,为了更好的描绘实体之间的关系,就会使用图形数据库来进行了,那么今天阿粉先容的,即是一个图形化的数据可,Neo4J。
什么是Neo4JNeo4j是一个天下跳跃的开源的基于图的数据库。它是使用Java言语完好开荒的。那么什么是图数据库呢?图数据库所以图结构的口头存储数据的数据库。它以节点,关系和属性的口头存储利用重要的数据。正如RDBMS以表的“行,列”的口头存储数据,GDBMS以图的口头存储数据。
RDBMS与图数据库的分袂
1.Tables 表Graphs 图表
2.Rows 行Nodes 节点
3.Columns and Data 列和数据 Properties and its values属性终点值
4.Constraints 料理Relationships 关系
5.Joins 加入Traversal 遍历
说罢了图形数据库,咱们就来望望这个 Neo4J 数据库吧
Neo4J 数据库的装配neo4j是用Java言语编写的图形数据库,运行时需要启动JVM程度,因此,需装配JAVA SE的JDK。对于 Java 怎么装配,我就无谓再多鬼话了吧,到本领别忘了检测一下 Java 的版块就好了,java -version
接下来咱们即是要进行一个装配了,咱们先去官网,下载社区版,企业版要收费的,介意哈。
官网地址
下载完成,径直启动装配,傻瓜式操作即可。
Neo4j利用重要有如下主要的目次结构:
bin目次:用于存储Neo4j的可膨胀重要 conf目次:用于截止Neo4j启动的建立文献 data目次:用于存储中枢数据库文献 plugins目次:用于存储Neo4j的插件介意,如果你使用的是Zip的压缩包来进行的使用的话,那么你就需要介意一些处所,比如你如果是用 Zip 的包解压之后,况兼想要通过 bat 的敕令启动,径直在目次下进行 cmd ,然后 neo4j.bat ,这本领可能会出现一个问题,即是版块可能会出现问题,你如果下载使用的是最新版的 Neo4J ,那么就可能会让你使用 JDK 11 ,而阿粉即是踩过了这个大坑之后,才发现,bat 闪退的原因。
告戒: ERROR! Neo4j cannot be started using java version 1.8.0_181 告戒: * Please use Oracle(R) Java(TM) 11, OpenJDK(TM) 11 to run Neo4j Server. * Please see https://neo4j.com/docs/ for Neo4j installation instructions. Invoke-Neo4j : This instance of Java is not supported 所在位置 E:\softFile\neo4j-community-4.4.2\bin\neo4j.ps1:21 字符: 7 + Exit (Invoke-Neo4j -Verbose:$Arguments.Verbose -CommandArgs $Argument ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Invoke-Neo4j
这样即是诠释咱们的 JDk 的版块对应的和 Neo4J 需要的 JDK 是不匹配的,咱们就需要换一下咱们的 JDK 了。把他换成 JDK 11 就好了,再次启动。
neo4j.bat console
E:\softFile\neo4j-community-4.4.2\bin>neo4j.bat console Directories in use: home: E:\softFile\neo4j-community-4.4.2 config: E:\softFile\neo4j-community-4.4.2\conf logs: E:\softFile\neo4j-community-4.4.2\logs plugins: E:\softFile\neo4j-community-4.4.2\plugins import: E:\softFile\neo4j-community-4.4.2\import data: E:\softFile\neo4j-community-4.4.2\data certificates: E:\softFile\neo4j-community-4.4.2\certificates licenses: E:\softFile\neo4j-community-4.4.2\licenses run: E:\softFile\neo4j-community-4.4.2\run Starting Neo4j. 2021-12-19 12:37:08.121+0000 INFO Starting... 2021-12-19 12:37:09.665+0000 INFO This instance is ServerId{25e1fcb1} (25e1fcb1-702c-4b58-bcdc-3564df95b2a1) 2021-12-19 12:37:11.957+0000 INFO ======== Neo4j 4.4.2 ======== 2021-12-19 12:37:14.556+0000 INFO Initializing system graph model for component 'security-users' with version -1 and status UNINITIALIZED 2021-12-19 12:37:14.567+0000 INFO Setting up initial user from defaults: neo4j 2021-12-19 12:37:14.568+0000 INFO Creating new user 'neo4j' (passwordChangeRequired=true, suspended=false) 2021-12-19 12:37:14.589+0000 INFO Setting version for 'security-users' to 3 2021-12-19 12:37:14.594+0000 INFO After initialization of system graph model component 'security-users' have version 3 and status CURRENT 2021-12-19 12:37:14.601+0000 INFO Performing postInitialization step for component 'security-users' with version 3 and status CURRENT 2021-12-19 12:37:15.979+0000 INFO Bolt enabled on 127.0.0.1:7687. 2021-12-19 12:37:17.200+0000 INFO Remote interface available at http://localhost:7474/ 2021-12-19 12:37:17.206+0000 INFO id: 1ED17593750B5E6E3046A68E5254B92B64EE0B6CECA021D540D1B93BDFE67164 2021-12-19 12:37:17.206+0000 INFO name: system 2021-12-19 12:37:17.207+0000 INFO creationDate: 2021-12-19T12:37:12.956Z 2021-12-19 12:37:17.207+0000 INFO Started.
这本领,咱们就径直拜谒 localhost:7474 的端口,径直就能看到如下的画面, 1.jpg
刚干涉的本领可能需要众人输入帐号密码,默许的帐号密码即是,neo4j 修改成你想要的就行了。
这样登录进去咱们就能启动崇拜学习 Neo4J 的所有内容了。
Neo4J 的语法教学Neo4j - CQL语法
它是Neo4j图形数据库的查询言语。 它是一种声明性模式匹配言语 它撤职SQL语法。 它的语法辱骂常粗浅且人道化、可读的口头。咱们在讲语法之前率先咱们先得望望 Neo4J 的构建模块,否则之后的查询都是不测思意思的。
Neo4j图数据库主要有以下构建块 -
节点 属性 关系 标签 数据浏览器节点是图表的基本单元。它包含具有键值对的属性,如下所示
属性是用于描画图节点和关系的键值对
关系是图形数据库的另一个主要构建块。它贯穿两个节点,如下所示。
Label将一个众人称号与一组节点或关系干系联。节点或关系不错包含一个或多个标签。咱们不错为现存节点或关系创建新标签。咱们不错从现存节点或关系中删除现存标签。
Neo4j数据浏览器 一朝咱们装配Neo4j,咱们不错拜谒Neo4j数据浏览器使用以下URL
http:// localhost:7474 / browser /
CQL 语法CREATE 语法
CREATE (<node-name>:<label-name>)
它是咱们要创建的节点称号。
它是一个节点标签称号
咱们不错创建一个节点,然后给他安排上一个标签
CREATE (emp:Employee)
当咱们看到
Added 1 label, created 1 node, completed after 74 ms.
这就创建告捷了,
那么怎么稽查呢?
MATCH语法MATCH (<node-name>:<label-name>) return xxx
是这个花样的
MATCH (emp:Employee) return emp
╒═════╕ │"emp"│ ╞═════╡ │{} │ └─────┘
可是看到内部尽然莫得东西,就特别于是一个空的对象,那是不是就应该给内部放入属性的操作呢?没错,细目有
CREATE (emp:Employee{ id : 1001 ,name :"lucy", age : 10})
Added 1 label, created 1 node, set 3 properties, completed after 163 ms. 创建告捷。
咱们再次稽查就能看到
╒══════════════════════════════════╕ │"emp" │ ╞══════════════════════════════════╡ │{} │ ├──────────────────────────────────┤ │{"name":"lucy","id":1001,"age":10}│ └──────────────────────────────────┘
如果咱们想惟有其中的一些对象的属性,而不是一起属性,那应该怎么操作呢?
RETURN语法RETURN 不错复返的是一个对象,也不错是对象中的属性,比如:
MATCH (emp:Employee) return emp.name
成果即是底下这个花样的,众人看一下,是不是嗅觉依然挺好用的。
╒══════════╕ │"emp.name"│ ╞══════════╡ │"Lokesh" │ ├──────────┤ │"jack" │ ├──────────┤ │"luxun" │ ├──────────┤ │"lucy" │ └──────────┘
** WHERE语法**
WHERE <condition>
为什么在前边的位置阿粉说,CQL 是和 SQL 类型的,这完好是因为许多东西和 SQL 是访佛的。
MATCH (emp:Employee) where emp.name = 'jack' return emp
成果如下:
╒════════════════════════════════════════════════╕ │"emp" │ ╞════════════════════════════════════════════════╡ │{"name":"jack","id":125,"deptno":10,"sal":35800}│ └────────────────────────────────────────────────┘
疏通的还有
布尔运算符 描绘 AND 和 OR 好像 NOT 非 XOR 异或 相比运算符 描绘 = “等于”运算符 <> “不等于”运算符 < “小于”运算符 > “大于”运算符 <= “小于或等于”运算符。 >= “大于或等于”运算符。 DELETE语法删除语法势必是有的,因为有创建,细目有删除。
DELETE <node-name-list>
可是这个敕令也不是单独使用的哈,
MATCH (e: Employee) DELETE e
径直删除告捷。
基础的东西讲罢了,阿粉就得说说这个相比艰巨的内容了,关系,
Neo4j 的关系咱们之前创建节点的本领,那叫一个粗浅平静加自得,可是创建关系就相比复杂了,因为需要研讨怎么匹配到预见系的两个节点,以及关系自己的属性怎么诞生。这里咱们就粗浅学一下怎么培植节点之间的关系。
由于Neo4j CQL语法所以人类可读的口头。Neo4j CQL也使用访佛的箭头象征来创建两个节点之间的关系。
每个关系(→)包含两个节点
在Neo4j中,两个节点之间的关系是有办法性的。它们是单向或双向的。
如果咱们尝试创建一个莫得任何办法的关系,那么就会报错。
关系创建语法CREATE (<node1-details>)-[<relationship-details>]->(<node2-details>)
咱们这里径直使用创建新的节点来创建关系。
CREATE (book:Book)-[contains:CONTAINS]->(bookStore:BOOKSTORE)
教导创建告捷
Added 2 labels, created 2 nodes, created 1 relationship, completed after 199 ms.
这里关系称号是“CONTAINS”
关系标签是“contains”。
MATCH (book:Book)-[contains:CONTAINS]->(bookStore:BOOKSTORE) return contains
这样看是看不出有啥关系的,可是,咱们不错从另外的一个位置
这样看下来,这个 Neo4J 粗浅操作是不是就学会了,阿粉接下来的著述中讲怎么使用 Java 来操作 Neo4J 数据库。接待众人来有观看。