自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

還有和Redis一樣好用的NoSQL

存儲 存儲軟件 Redis
Neo4j是一個世界領(lǐng)先的開源的基于圖的數(shù)據(jù)庫。它是使用Java語言完全開發(fā)的。那么什么是圖數(shù)據(jù)庫呢?圖數(shù)據(jù)庫是以圖結(jié)構(gòu)的形式存儲數(shù)據(jù)的數(shù)據(jù)庫。

[[441486]]

實(shí)際上為了更好的描述實(shí)體之間的關(guān)系,我們要是再繼續(xù)使用Redis的話,是不是感覺實(shí)體之間的關(guān)系不夠那么的明顯,雖然也是屬于NoSQL的一種,但是相對來說,Redis,表現(xiàn)實(shí)體之間的關(guān)系就沒有那么清晰了,為了更好的描述實(shí)體之間的關(guān)系,就會使用圖形數(shù)據(jù)庫來進(jìn)行了,那么今天阿粉介紹的,就是一個圖形化的數(shù)據(jù)可,Neo4J。

什么是Neo4J

Neo4j是一個世界領(lǐng)先的開源的基于圖的數(shù)據(jù)庫。它是使用Java語言完全開發(fā)的。那么什么是圖數(shù)據(jù)庫呢?圖數(shù)據(jù)庫是以圖結(jié)構(gòu)的形式存儲數(shù)據(jù)的數(shù)據(jù)庫。它以節(jié)點(diǎn),關(guān)系和屬性的形式存儲應(yīng)用程序的數(shù)據(jù)。正如RDBMS以表的“行,列”的形式存儲數(shù)據(jù),GDBMS以圖的形式存儲數(shù)據(jù)。

RDBMS與圖數(shù)據(jù)庫的區(qū)別

1.Tables 表Graphs 圖表

2.Rows 行Nodes 節(jié)點(diǎn)

3.Columns and Data 列和數(shù)據(jù) Properties and its values屬性及其值

4.Constraints 約束Relationships 關(guān)系

5.Joins 加入Traversal 遍歷

說完了圖形數(shù)據(jù)庫,我們就來看看這個 Neo4J 數(shù)據(jù)庫吧

Neo4J 數(shù)據(jù)庫的安裝

neo4j是用Java語言編寫的圖形數(shù)據(jù)庫,運(yùn)行時需要啟動JVM進(jìn)程,因此,需安裝JAVA SE的JDK。關(guān)于 Java 怎么安裝,我就不用再多廢話了吧,到時候別忘了檢測一下 Java 的版本就好了,java -version

接下來我們就是要進(jìn)行一個安裝了,我們先去官網(wǎng),下載社區(qū)版,企業(yè)版要收費(fèi)的,注意哈。

官網(wǎng)地址

下載完成,直接開始安裝,傻瓜式操作即可。

Neo4j應(yīng)用程序有如下主要的目錄結(jié)構(gòu):

  • bin目錄:用于存儲Neo4j的可執(zhí)行程序
  • conf目錄:用于控制Neo4j啟動的配置文件
  • data目錄:用于存儲核心數(shù)據(jù)庫文件
  • plugins目錄:用于存儲Neo4j的插件

注意,如果你使用的是Zip的壓縮包來進(jìn)行的使用的話,那么你就需要注意一些地方,比如你如果是用 Zip 的包解壓之后,并且想要通過 bat 的命令啟動,直接在目錄下進(jìn)行 cmd ,然后 neo4j.bat ,這時候可能會出現(xiàn)一個問題,就是版本可能會出現(xiàn)問題,你如果下載使用的是最新版的 Neo4J ,那么就可能會讓你使用 JDK 11 ,而阿粉就是踩過了這個大坑之后,才發(fā)現(xiàn),bat 閃退的原因。

  1. 警告: ERROR! Neo4j cannot be started using java version 1.8.0_181 
  2. 警告: * Please use Oracle(R) Java(TM) 11, OpenJDK(TM) 11 to run Neo4j Server. 
  3. * Please see https://neo4j.com/docs/ for Neo4j installation instructions. 
  4. Invoke-Neo4j : This instance of Java is not supported 
  5. 所在位置 E:\softFile\neo4j-community-4.4.2\bin\neo4j.ps1:21 字符: 7 
  6. + Exit (Invoke-Neo4j -Verbose:$Arguments.Verbose -CommandArgs $Argument ... 
  7. +       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  8.     + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException 
  9.     + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Invoke-Neo4j 

這樣就是說明我們的 JDk 的版本對應(yīng)的和 Neo4J 需要的 JDK 是不匹配的,我們就需要換一下我們的 JDK 了。把他換成 JDK 11 就好了,再次啟動。

  1. neo4j.bat console 
  1. E:\softFile\neo4j-community-4.4.2\bin>neo4j.bat console 
  2. Directories in use: 
  3. home:         E:\softFile\neo4j-community-4.4.2 
  4. config:       E:\softFile\neo4j-community-4.4.2\conf 
  5. logs:         E:\softFile\neo4j-community-4.4.2\logs 
  6. plugins:      E:\softFile\neo4j-community-4.4.2\plugins 
  7. import:       E:\softFile\neo4j-community-4.4.2\import 
  8. data:         E:\softFile\neo4j-community-4.4.2\data 
  9. certificates: E:\softFile\neo4j-community-4.4.2\certificates 
  10. licenses:     E:\softFile\neo4j-community-4.4.2\licenses 
  11. run:          E:\softFile\neo4j-community-4.4.2\run 
  12. Starting Neo4j. 
  13. 2021-12-19 12:37:08.121+0000 INFO  Starting... 
  14. 2021-12-19 12:37:09.665+0000 INFO  This instance is ServerId{25e1fcb1} (25e1fcb1-702c-4b58-bcdc-3564df95b2a1) 
  15. 2021-12-19 12:37:11.957+0000 INFO  ======== Neo4j 4.4.2 ======== 
  16. 2021-12-19 12:37:14.556+0000 INFO  Initializing system graph model for component 'security-users' with version -1 and status UNINITIALIZED 
  17. 2021-12-19 12:37:14.567+0000 INFO  Setting up initial user from defaults: neo4j 
  18. 2021-12-19 12:37:14.568+0000 INFO  Creating new user 'neo4j' (passwordChangeRequired=true, suspended=false
  19. 2021-12-19 12:37:14.589+0000 INFO  Setting version for 'security-users' to 3 
  20. 2021-12-19 12:37:14.594+0000 INFO  After initialization of system graph model component 'security-users' have version 3 and status CURRENT 
  21. 2021-12-19 12:37:14.601+0000 INFO  Performing postInitialization step for component 'security-users' with version 3 and status CURRENT 
  22. 2021-12-19 12:37:15.979+0000 INFO  Bolt enabled on 127.0.0.1:7687. 
  23. 2021-12-19 12:37:17.200+0000 INFO  Remote interface available at http://localhost:7474/ 
  24. 2021-12-19 12:37:17.206+0000 INFO  id: 1ED17593750B5E6E3046A68E5254B92B64EE0B6CECA021D540D1B93BDFE67164 
  25. 2021-12-19 12:37:17.206+0000 INFO  name: system 
  26. 2021-12-19 12:37:17.207+0000 INFO  creationDate: 2021-12-19T12:37:12.956Z 
  27. 2021-12-19 12:37:17.207+0000 INFO  Started. 

這時候,我們就直接訪問 localhost:7474 的端口,直接就能看到如下的畫面, 1.jpg

剛進(jìn)入的時候可能需要大家輸入帳號密碼,默認(rèn)的帳號密碼就是,neo4j 修改成你想要的就行了。

這樣登錄進(jìn)去我們就能開始正式學(xué)習(xí) Neo4J 的所有內(nèi)容了。

Neo4J 的語法教學(xué)

Neo4j - CQL語法

  • 它是Neo4j圖形數(shù)據(jù)庫的查詢語言。
  • 它是一種聲明性模式匹配語言
  • 它遵循SQL語法。
  • 它的語法是非常簡單且人性化、可讀的格式。

我們在講語法之前首先我們先得看看 Neo4J 的構(gòu)建模塊,不然之后的查詢都是無意義的。

Neo4j圖數(shù)據(jù)庫主要有以下構(gòu)建塊 -

  • 節(jié)點(diǎn)
  • 屬性
  • 關(guān)系
  • 標(biāo)簽
  • 數(shù)據(jù)瀏覽器

節(jié)點(diǎn)是圖表的基本單位。它包含具有鍵值對的屬性,如下所示

屬性是用于描述圖節(jié)點(diǎn)和關(guān)系的鍵值對

關(guān)系是圖形數(shù)據(jù)庫的另一個主要構(gòu)建塊。它連接兩個節(jié)點(diǎn),如下所示。

Label將一個公共名稱與一組節(jié)點(diǎn)或關(guān)系相關(guān)聯(lián)。節(jié)點(diǎn)或關(guān)系可以包含一個或多個標(biāo)簽。我們可以為現(xiàn)有節(jié)點(diǎn)或關(guān)系創(chuàng)建新標(biāo)簽。我們可以從現(xiàn)有節(jié)點(diǎn)或關(guān)系中刪除現(xiàn)有標(biāo)簽。

Neo4j數(shù)據(jù)瀏覽器 一旦我們安裝Neo4j,我們可以訪問Neo4j數(shù)據(jù)瀏覽器使用以下URL

http:// localhost:7474 / browser /

CQL 語法

CREATE 語法

  1. CREATE (<node-name>:<label-name>) 

它是我們要創(chuàng)建的節(jié)點(diǎn)名稱。

它是一個節(jié)點(diǎn)標(biāo)簽名稱

我們可以創(chuàng)建一個節(jié)點(diǎn),然后給他安排上一個標(biāo)簽

  1. CREATE (emp:Employee) 

當(dāng)我們看到

  1. Added 1 label, created 1 node, completed after 74 ms. 

這就創(chuàng)建成功了,

那么怎么查看呢?

MATCH語法

  1. MATCH (<node-name>:<label-name>) return xxx 

是這個樣子的

  1. MATCH (emp:Employee) return emp 
  1. ╒═════╕ 
  2. "emp"│ 
  3. ╞═════╡ 
  4. │{}   │ 
  5. └─────┘ 

但是看到里面竟然沒有東西,就相當(dāng)于是一個空的對象,那是不是就應(yīng)該給里面放入屬性的操作呢?沒錯,肯定有

CREATE (emp:Employee{ id : 1001 ,name :"lucy", age : 10})

Added 1 label, created 1 node, set 3 properties, completed after 163 ms. 創(chuàng)建成功。

我們再次查看就能看到

  1. ╒══════════════════════════════════╕ 
  2. "emp"                             │ 
  3. ╞══════════════════════════════════╡ 
  4. │{}                                │ 
  5. ├──────────────────────────────────┤ 
  6. │{"name":"lucy","id":1001,"age":10}│ 
  7. └──────────────────────────────────┘ 

如果我們想只要其中的一些對象的屬性,而不是全部屬性,那應(yīng)該怎么操作呢?

RETURN語法

RETURN 可以返回的是一個對象,也可以是對象中的屬性,比如:

  1. MATCH (emp:Employee) return emp.name 

結(jié)果就是下面這個樣子的,大家看一下,是不是感覺還是挺好用的。

  1. ╒══════════╕ 
  2. "emp.name"│ 
  3. ╞══════════╡ 
  4. "Lokesh"  │ 
  5. ├──────────┤ 
  6. "jack"    │ 
  7. ├──────────┤ 
  8. "luxun"   │ 
  9. ├──────────┤ 
  10. "lucy"    │ 
  11. └──────────┘ 

** WHERE語法**

 

  1. WHERE <condition> 

為什么在前面的位置阿粉說,CQL 是和 SQL 類型的,這完全是因?yàn)楹芏鄸|西和 SQL 是類似的。

  1. MATCH (emp:Employee) where emp.name = 'jack' return emp 

結(jié)果如下:

  1. ╒════════════════════════════════════════════════╕ 
  2. "emp"                                           │ 
  3. ╞════════════════════════════════════════════════╡ 
  4. │{"name":"jack","id":125,"deptno":10,"sal":35800}│ 
  5. └────────────────────────────────────────────────┘ 

相同的還有

布爾運(yùn)算符 描述
AND
OR 或者
NOT
XOR 異或
比較運(yùn)算符 描述
= “等于”運(yùn)算符
<> “不等于”運(yùn)算符
< “小于”運(yùn)算符
> “大于”運(yùn)算符
<= “小于或等于”運(yùn)算符。
>= “大于或等于”運(yùn)算符。

DELETE語法

刪除語法必然是有的,因?yàn)橛袆?chuàng)建,肯定有刪除。

 

  1. DELETE <node-name-list> 

但是這個命令也不是單獨(dú)使用的哈,

  1. MATCH (e: Employee) DELETE e 

直接刪除成功。

基礎(chǔ)的東西講完了,阿粉就得說說這個比較重要的內(nèi)容了,關(guān)系,

Neo4j 的關(guān)系

我們之前創(chuàng)建節(jié)點(diǎn)的時候,那叫一個簡單舒適加愉快,但是創(chuàng)建關(guān)系就比較復(fù)雜了,因?yàn)樾枰紤]如何匹配到有關(guān)系的兩個節(jié)點(diǎn),以及關(guān)系本身的屬性如何設(shè)置。這里我們就簡單學(xué)一下如何建立節(jié)點(diǎn)之間的關(guān)系。

由于Neo4j CQL語法是以人類可讀的格式。Neo4j CQL也使用類似的箭頭標(biāo)記來創(chuàng)建兩個節(jié)點(diǎn)之間的關(guān)系。

每個關(guān)系(→)包含兩個節(jié)點(diǎn)

在Neo4j中,兩個節(jié)點(diǎn)之間的關(guān)系是有方向性的。它們是單向或雙向的。

如果我們嘗試創(chuàng)建一個沒有任何方向的關(guān)系,那么就會報(bào)錯。

關(guān)系創(chuàng)建語法

  1. CREATE (<node1-details>)-[<relationship-details>]->(<node2-details>) 

我們這里直接使用創(chuàng)建新的節(jié)點(diǎn)來創(chuàng)建關(guān)系。

  1. CREATE (book:Book)-[contains:CONTAINS]->(bookStore:BOOKSTORE) 

提示創(chuàng)建成功

  1. Added 2 labels, created 2 nodes, created 1 relationship, completed after 199 ms. 

這里關(guān)系名稱是“CONTAINS”

關(guān)系標(biāo)簽是“contains”。

  1. MATCH (book:Book)-[contains:CONTAINS]->(bookStore:BOOKSTORE) return contains 

這么看是看不出有啥關(guān)系的,但是,我們可以從另外的一個位置

 

這樣看下來,這個 Neo4J 簡單操作是不是就學(xué)會了,阿粉接下來的文章中講怎么使用 Java 來操作 Neo4J 數(shù)據(jù)庫。歡迎大家來觀看。

 

責(zé)任編輯:武曉燕 來源: Java極客技術(shù)
相關(guān)推薦

2023-04-05 14:19:07

FlinkRedisNoSQL

2009-06-12 15:26:02

2023-08-09 09:03:25

Typescript工具Jsdoc

2011-02-28 10:38:13

Windows 8

2012-12-20 10:17:32

IT運(yùn)維

2012-03-07 17:24:10

戴爾咨詢

2020-03-02 10:56:41

辦公電腦疫情

2013-01-11 18:10:56

軟件

2020-05-19 10:02:58

CIOIPD集成產(chǎn)品開發(fā)

2015-08-25 09:52:36

云計(jì)算云計(jì)算產(chǎn)業(yè)云計(jì)算政策

2024-08-19 11:23:36

2011-03-14 16:51:24

2021-12-23 15:11:46

Web 3.0元宇宙Metaverse

2016-05-09 18:40:26

VIP客戶緝拿

2009-03-07 18:53:46

Chrome瀏覽器訂制

2017-05-25 15:02:46

聯(lián)宇益通SD-WAN

2022-02-26 09:39:19

前端SSR編譯

2015-10-19 12:33:01

華三/新IT

2020-05-15 10:16:43

HttpHttps網(wǎng)絡(luò)協(xié)議

2014-03-17 10:20:30

數(shù)據(jù)目錄服務(wù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號