日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

使用 Neo4j 图数据库可视化(网络安全)知识图谱

發(fā)布時(shí)間:2023/12/8 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 Neo4j 图数据库可视化(网络安全)知识图谱 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

一、安裝 Java?環(huán)境

1、下載 Java 包并解壓到指定目錄下

2、配置環(huán)境變量

a)添加系統(tǒng)變量 CLASS_PATH 和 JAVA_HOME

b)? 在已有的系統(tǒng)變量 Path 中添加(新建)環(huán)境變量

3、測試 java 環(huán)境

二、安裝?Neo4j-3.5.5

1、下載 neo4j 軟件包并解壓到指定目錄下

2、配置環(huán)境變量

a)添加系統(tǒng)變量 NEO4J_HOME

b)? 在已有的系統(tǒng)變量 Path 中添加(新建)環(huán)境變量

3、測試 neo4j 服務(wù)是否可以正常開啟

4、訪問 Neo4j 圖數(shù)據(jù)庫系統(tǒng)

三、使用 Neo4j 數(shù)據(jù)庫并可視化(網(wǎng)絡(luò)安全)知識(shí)圖譜

1、使用示例數(shù)據(jù)庫

2、生成我們自己的?CSV 數(shù)據(jù),并為文件導(dǎo)入配置環(huán)境

a)構(gòu)建并生成我們的數(shù)據(jù)(節(jié)點(diǎn)文件和邊文件)

b)為文件的導(dǎo)入配置環(huán)境

3、使用 neo4j 可視化(網(wǎng)絡(luò)安全)知識(shí)圖譜

附錄

一、Neo4j 簡介及其數(shù)據(jù)結(jié)構(gòu)

二、關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫

1. 關(guān)系型數(shù)據(jù)庫

2. 非關(guān)系型數(shù)據(jù)庫


說明:本文前兩節(jié)提到的 Java 和 neo4j 的安裝包可以通過如下鏈接免費(fèi)下載:

Neo4j可視化知識(shí)圖譜所需的所有軟件包-自然語言處理文檔類資源-CSDN下載Neo4j可視化知識(shí)圖譜所需的兩個(gè)軟件包:java.rar和neo4j-community-3更多下載資源、學(xué)習(xí)資料請?jiān)L問CSDN下載頻道.https://download.csdn.net/download/qq_40506723/86754696


一、安裝 Java?環(huán)境

1、下載 Java 包并解壓到指定目錄下

子目錄如下圖所示:


2、配置環(huán)境變量

a)添加系統(tǒng)變量 CLASS_PATH 和 JAVA_HOME


b)? 在已有的系統(tǒng)變量 Path 中添加(新建)環(huán)境變量

根據(jù)自己的?jdk 所在目錄添加,我的操作如下圖所示:?


3、測試 java 環(huán)境

win + R? 輸入 “cmd”? 回車,輸入?java -version,如下圖所示:

如果看到版本信息,說明環(huán)境配置成功。


二、安裝?Neo4j-3.5.5

1、下載 neo4j 軟件包并解壓到指定目錄下

子目錄如圖所示:


2、配置環(huán)境變量

a)添加系統(tǒng)變量 NEO4J_HOME


b)? 在已有的系統(tǒng)變量 Path 中添加(新建)環(huán)境變量


3、測試 neo4j 服務(wù)是否可以正常開啟

win + R? 輸入 “cmd”? 回車,輸入?neo4j.bat console,如下圖所示則說明一路安裝正確:

注意:此終端(服務(wù))不要關(guān)閉,否則不能訪問 Neo4j 圖數(shù)據(jù)庫系統(tǒng)


4、訪問 Neo4j 圖數(shù)據(jù)庫系統(tǒng)

地址:http://localhost:7474/

訪問后,顯示以下界面,說明此小節(jié)以上工作全部成功完成:

當(dāng)連接成功的同時(shí),終端也發(fā)生變化:

?我們輸入默認(rèn)登錄密碼 neo4j ,點(diǎn)擊 Connect,跳出更改密碼的界面,如下圖所示:

更改后,就成功進(jìn)入主界面,如下圖所示:


三、使用 Neo4j 數(shù)據(jù)庫并可視化(網(wǎng)絡(luò)安全)知識(shí)圖譜

1、使用示例數(shù)據(jù)庫

點(diǎn)擊左側(cè)邊欄的小星星,再點(diǎn)擊 Example Graph --> Movie Graph,界面如下:

點(diǎn)擊右側(cè)的執(zhí)行按鈕,顯示以下界面:

明顯這是一個(gè)電影相關(guān)的圖數(shù)據(jù)庫,我們使用給定的查詢命令試一試:

點(diǎn)擊執(zhí)行,這樣我們就圖數(shù)據(jù)庫中查詢到我們想要的結(jié)果的可視化結(jié)果,如下圖所示,我們也可以得到表或代碼等形式的返回結(jié)果,大家可以自行嘗試:

?其他命令大家可以自行嘗試...


2、生成我們自己的?CSV 數(shù)據(jù),并為文件導(dǎo)入配置環(huán)境

a)構(gòu)建并生成我們的數(shù)據(jù)(節(jié)點(diǎn)文件和邊文件)

需要兩個(gè)文件,一個(gè)是 entity.csv(數(shù)據(jù)格式:e1,兔子,my_entity)(節(jié)點(diǎn)文件),一個(gè)是 triples.csv(數(shù)據(jù)格式:e1,e2,愛吃)(邊文件,因?yàn)檫叢荒苊撾x實(shí)體存在,所以這個(gè)文件中既有實(shí)體,也有關(guān)系),可以用下面這段代碼,替換數(shù)據(jù)集(訓(xùn)練集、驗(yàn)證集和測試集;它們的數(shù)據(jù)格式:兔子????????胡蘿卜????????愛吃 )及上述兩個(gè)目標(biāo)文件的路徑,用下面代碼可以直接生成:

import csv# 把每一行的實(shí)體加入列表進(jìn)行編號(hào)(e1,e2,e3...),并存入字典 entity_dic = {} # 為實(shí)體計(jì)數(shù), 從 0 開始 ent_count = 0def read_dataset(ds_path):"""輸入:數(shù)據(jù)集的路徑返回:數(shù)據(jù)集中的數(shù)據(jù)構(gòu)成的列表"""ds_list = []with open(ds_path, 'r', encoding='UTF-8') as f:reader = csv.reader(f)lines = [row for row in reader]for item in lines:temp = []item = item[0].split("\t")temp.append(item[0])temp.append(item[1])temp.append(item[2])ds_list.append(temp)f.close()return ds_list# 訓(xùn)練集、驗(yàn)證集和測試集的數(shù)據(jù)格式:兔子 胡蘿卜 愛吃 train_data = read_dataset('D:/TSEE/datasets/neo4j_data/train.txt') valid_data = read_dataset('D:/TSEE/datasets/neo4j_data/valid.txt') test_data = read_dataset('D:/TSEE/datasets/neo4j_data/test.txt') # 疊加三個(gè)數(shù)據(jù)集,用于后邊對所有實(shí)體的編號(hào) all_data = train_data + valid_data + test_datadef generate_entity_csv():"""輸出:entity.csv文件(即實(shí)體與編號(hào)的對應(yīng)文件)數(shù)據(jù)格式:e1,兔子,my_entitye2,胡蘿卜,my_entity"""# 使用global關(guān)鍵字,在執(zhí)行函數(shù)時(shí),可以更改全局變量,防止再次創(chuàng)建同名的局部變量global ent_countfor item in all_data:if item[0] not in entity_dic.keys():entity_dic[item[0]] = "e" + str(ent_count)ent_count += 1if item[1] not in entity_dic.keys():entity_dic[item[1]] = "e" + str(ent_count)ent_count += 1with open('D:/TSEE/datasets/neo4j_data/entity.csv', 'w', encoding='utf-8') as o:# print(item_dic)o.write("entity:ID"+",")o.write("name"+",")o.write(":LABEL"+"\n")for item in entity_dic:# print(item)o.write(entity_dic[item] + ",")o.write(item + ",")o.write("my_entity" + "\n")o.close()def generate_triples_csv():"""輸出:triples.csv文件(即所有三元組數(shù)據(jù))數(shù)據(jù)格式:e1,e2,愛吃"""triples = []for item in all_data:temp_list = []temp_list.append(entity_dic[item[0]])temp_list.append(entity_dic[item[1]])temp_list.append(item[2])triples.append(temp_list)with open("D:/TSEE/datasets/neo4j_data/triples.csv", 'w', encoding='utf-8') as o:o.write(":START_ID" + ",")o.write(":END_ID" + ",")o.write(":TYPE" + "\n")for item in triples:o.write(str(item[0]) + ",")o.write(str(item[1]) + ",")o.write(str(item[2]) + "\n")o.close()generate_entity_csv() generate_triples_csv()

最終兩個(gè)文件(數(shù)據(jù)的部分截圖)如下圖所示,其中第一行邊的類型千萬別忘了加(不管你是用腳本構(gòu)造或者是手動(dòng)創(chuàng)建)。如果忘加,Neo4j 不能有效識(shí)別文件,就會(huì)直接報(bào)錯(cuò):

entity.csv 文件(節(jié)點(diǎn)文件):

triples.csv 文件(邊文件):


b)為文件的導(dǎo)入配置環(huán)境

1)把如下圖所示的默認(rèn)的數(shù)據(jù)庫,也就是 graph.db 目錄給刪掉:

?2)打開如下我展示的目錄下的文件:

如下圖所示,把 dbms.active_database=graph.db 這一行的 “#” 去掉;

并將 graph.db 更為任意名,我起的名字是 zax.db(不更改也可以,但上一步的 graph.db 目錄刪掉,要不然影響要導(dǎo)入自己數(shù)據(jù)所執(zhí)行的命令的運(yùn)行):


3、使用 neo4j 可視化(網(wǎng)絡(luò)安全)知識(shí)圖譜

關(guān)閉 neo4j 的運(yùn)行窗口,再在 D:\neo4j-community-3.5.5\bin 下右鍵打開終端,執(zhí)行以下命令:

.\neo4j-import.bat --into D:\\neo4j-community-3.5.5\\data\\databases\\zax.db --id-type string --nodes D:\\neo4j-community-3.5.5\\entity.csv --relationships D:\\neo4j-community-3.5.5\\triples.csv

如圖所示:?

可以看到我們的兩個(gè) csv 文件已經(jīng)成功導(dǎo)入,我們再重新打開 neo4j 服務(wù),如下:

進(jìn)入界面,點(diǎn)擊左側(cè)邊欄的數(shù)據(jù)庫圖標(biāo),可以看到,我們已經(jīng)成功可視化(網(wǎng)安)知識(shí)圖譜:

大家也可以根據(jù)自己的數(shù)據(jù)來可視化知識(shí)圖譜...


附錄

一、Neo4j 簡介及其數(shù)據(jù)結(jié)構(gòu)

Neo4j是一個(gè)高性能的NOSQL圖形數(shù)據(jù)庫,它將結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在網(wǎng)絡(luò)上而不是表中。它是一個(gè)嵌入式的、基于磁盤的、具備完全的事務(wù)特性的Java持久化引擎,但是它將結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在網(wǎng)絡(luò)(從數(shù)學(xué)角度叫做圖)上而不是表中。Neo4j也可以被看作是一個(gè)高性能的圖引擎,該引擎具有成熟數(shù)據(jù)庫的所有特性。簡單來說Neo4j是一個(gè)開源的基于Java開發(fā),運(yùn)行于JVM之上。

在一個(gè)圖中包含兩種基本的數(shù)據(jù)類型:Nodes(節(jié)點(diǎn)) 和 Relationships(關(guān)系)。Nodes?和 Relationships 包含key/value形式的屬性。Nodes通過 Relationships 所定義的關(guān)系相連起來,形成關(guān)系型網(wǎng)絡(luò)結(jié)構(gòu)。


二、關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫

1. 關(guān)系型數(shù)據(jù)庫

關(guān)系型數(shù)據(jù)庫,是指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫,其以行和列的形式存儲(chǔ)數(shù)據(jù),以便于用戶理解,關(guān)系型數(shù)據(jù)庫這一系列的行和列被稱為表,一組表組成了數(shù)據(jù)庫。用戶通過查詢來檢索數(shù)據(jù)庫中的數(shù)據(jù),而查詢是一個(gè)用于限定數(shù)據(jù)庫中某些區(qū)域的執(zhí)行代碼。關(guān)系模型可以簡單理解為二維表格模型,而一個(gè)關(guān)系型數(shù)據(jù)庫就是由二維表及其之間的關(guān)系組成的一個(gè)數(shù)據(jù)組織。主流的關(guān)系型數(shù)據(jù)庫有Oracle、DB2、MySQL、SQL Server等。推薦了解java中級程序員學(xué)習(xí)線路圖。

2. 非關(guān)系型數(shù)據(jù)庫

非關(guān)系型數(shù)據(jù)庫,也稱為NoSQL,泛指非關(guān)系型的數(shù)據(jù)庫。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在處理web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,出現(xiàn)了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。常見的非關(guān)系型數(shù)據(jù)庫按照分類有:

鍵值(Key-Value): Redis、Memcached、Oracle BDB

列存儲(chǔ)數(shù)據(jù)庫:Cassandra、HBase、 Riak

文檔型數(shù)據(jù)庫:MongoDB、SequoiaDB

圖形數(shù)據(jù)庫:Neo4J、JanusGraph、TigerGraph


其中上述一、二節(jié)摘自:

什么是Neo4j?如何通過Neo4j構(gòu)建《人民的名義》的關(guān)系圖譜?


因此我們也可以在 Neo4J 中使用?NoSQL 命令創(chuàng)建結(jié)點(diǎn)和關(guān)系,直接可視化知識(shí)圖譜:

NoSQL 簡介 | 菜鳥教程NoSQL 簡介 NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”。 在現(xiàn)代的計(jì)算系統(tǒng)上每天網(wǎng)絡(luò)上都會(huì)產(chǎn)生龐大的數(shù)據(jù)量。這些數(shù)據(jù)有很大一部分是由關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)來處理。 1970年 E.F.Codd’s提出的關(guān)系模型的論文 'A relational model of data for large shared data banks”,這使得數(shù)據(jù)建模和應(yīng)用程序編程更加簡單。通..https://www.runoob.com/mongodb/nosql.html當(dāng)然,這也只是在數(shù)據(jù)量較小的情況下才可行,如果構(gòu)建大型知識(shí)圖譜,還得像我們之前那樣,通過導(dǎo)入的方式來可視化知識(shí)圖譜。


補(bǔ)充:WARN ?The client is unauthorized due to authentication failure. 錯(cuò)誤的解決辦法:

描述:當(dāng)你導(dǎo)入其他數(shù)據(jù)庫(如A.db)后,再導(dǎo)入另一個(gè)數(shù)據(jù)庫(如B.db),并可視化后,你更改B 的圖譜上的節(jié)點(diǎn)顏色或大小改不了,會(huì)在命令窗口報(bào)這個(gè)錯(cuò),也就是授權(quán)問題。

我的理解:A 數(shù)據(jù)庫在可視化圖譜后,你的操作會(huì)保存在一個(gè)配置文件中(具體是哪個(gè)文件沒必要管)。但當(dāng)你可視化 B 數(shù)據(jù)庫時(shí),就會(huì)導(dǎo)入 A 的配置,當(dāng)你針對 B 的圖譜修改時(shí),就對這個(gè)配置文件的內(nèi)容作出了修改,但這沒有經(jīng)過 A 的允許 ,就會(huì)報(bào)錯(cuò)

解決辦法:到 D:\neo4j-community-3.5.5\conf 目錄下修改 neo4j.conf 文件?

去掉 下面這行 的 “ # ”,保證不進(jìn)行任何授權(quán)驗(yàn)證

總結(jié)

以上是生活随笔為你收集整理的使用 Neo4j 图数据库可视化(网络安全)知识图谱的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。