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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

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

目錄

一、安裝 Java?環境

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

2、配置環境變量

a)添加系統變量 CLASS_PATH 和 JAVA_HOME

b)? 在已有的系統變量 Path 中添加(新建)環境變量

3、測試 java 環境

二、安裝?Neo4j-3.5.5

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

2、配置環境變量

a)添加系統變量 NEO4J_HOME

b)? 在已有的系統變量 Path 中添加(新建)環境變量

3、測試 neo4j 服務是否可以正常開啟

4、訪問 Neo4j 圖數據庫系統

三、使用 Neo4j 數據庫并可視化(網絡安全)知識圖譜

1、使用示例數據庫

2、生成我們自己的?CSV 數據,并為文件導入配置環境

a)構建并生成我們的數據(節點文件和邊文件)

b)為文件的導入配置環境

3、使用 neo4j 可視化(網絡安全)知識圖譜

附錄

一、Neo4j 簡介及其數據結構

二、關系型數據庫和非關系型數據庫

1. 關系型數據庫

2. 非關系型數據庫


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

Neo4j可視化知識圖譜所需的所有軟件包-自然語言處理文檔類資源-CSDN下載Neo4j可視化知識圖譜所需的兩個軟件包:java.rar和neo4j-community-3更多下載資源、學習資料請訪問CSDN下載頻道.https://download.csdn.net/download/qq_40506723/86754696


一、安裝 Java?環境

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

子目錄如下圖所示:


2、配置環境變量

a)添加系統變量 CLASS_PATH 和 JAVA_HOME


b)? 在已有的系統變量 Path 中添加(新建)環境變量

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


3、測試 java 環境

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

如果看到版本信息,說明環境配置成功。


二、安裝?Neo4j-3.5.5

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

子目錄如圖所示:


2、配置環境變量

a)添加系統變量 NEO4J_HOME


b)? 在已有的系統變量 Path 中添加(新建)環境變量


3、測試 neo4j 服務是否可以正常開啟

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

注意:此終端(服務)不要關閉,否則不能訪問 Neo4j 圖數據庫系統


4、訪問 Neo4j 圖數據庫系統

地址:http://localhost:7474/

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

當連接成功的同時,終端也發生變化:

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

更改后,就成功進入主界面,如下圖所示:


三、使用 Neo4j 數據庫并可視化(網絡安全)知識圖譜

1、使用示例數據庫

點擊左側邊欄的小星星,再點擊 Example Graph --> Movie Graph,界面如下:

點擊右側的執行按鈕,顯示以下界面:

明顯這是一個電影相關的圖數據庫,我們使用給定的查詢命令試一試:

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

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


2、生成我們自己的?CSV 數據,并為文件導入配置環境

a)構建并生成我們的數據(節點文件和邊文件)

需要兩個文件,一個是 entity.csv(數據格式:e1,兔子,my_entity)(節點文件),一個是 triples.csv(數據格式:e1,e2,愛吃)(邊文件,因為邊不能脫離實體存在,所以這個文件中既有實體,也有關系),可以用下面這段代碼,替換數據集(訓練集、驗證集和測試集;它們的數據格式:兔子????????胡蘿卜????????愛吃 )及上述兩個目標文件的路徑,用下面代碼可以直接生成:

import csv# 把每一行的實體加入列表進行編號(e1,e2,e3...),并存入字典 entity_dic = {} # 為實體計數, 從 0 開始 ent_count = 0def read_dataset(ds_path):"""輸入:數據集的路徑返回:數據集中的數據構成的列表"""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# 訓練集、驗證集和測試集的數據格式:兔子 胡蘿卜 愛吃 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') # 疊加三個數據集,用于后邊對所有實體的編號 all_data = train_data + valid_data + test_datadef generate_entity_csv():"""輸出:entity.csv文件(即實體與編號的對應文件)數據格式:e1,兔子,my_entitye2,胡蘿卜,my_entity"""# 使用global關鍵字,在執行函數時,可以更改全局變量,防止再次創建同名的局部變量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文件(即所有三元組數據)數據格式: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()

最終兩個文件(數據的部分截圖)如下圖所示,其中第一行邊的類型千萬別忘了加(不管你是用腳本構造或者是手動創建)。如果忘加,Neo4j 不能有效識別文件,就會直接報錯:

entity.csv 文件(節點文件):

triples.csv 文件(邊文件):


b)為文件的導入配置環境

1)把如下圖所示的默認的數據庫,也就是 graph.db 目錄給刪掉:

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

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

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


3、使用 neo4j 可視化(網絡安全)知識圖譜

關閉 neo4j 的運行窗口,再在 D:\neo4j-community-3.5.5\bin 下右鍵打開終端,執行以下命令:

.\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

如圖所示:?

可以看到我們的兩個 csv 文件已經成功導入,我們再重新打開 neo4j 服務,如下:

進入界面,點擊左側邊欄的數據庫圖標,可以看到,我們已經成功可視化(網安)知識圖譜:

大家也可以根據自己的數據來可視化知識圖譜...


附錄

一、Neo4j 簡介及其數據結構

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

在一個圖中包含兩種基本的數據類型:Nodes(節點) 和 Relationships(關系)。Nodes?和 Relationships 包含key/value形式的屬性。Nodes通過 Relationships 所定義的關系相連起來,形成關系型網絡結構。


二、關系型數據庫和非關系型數據庫

1. 關系型數據庫

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

2. 非關系型數據庫

非關系型數據庫,也稱為NoSQL,泛指非關系型的數據庫。隨著互聯網web2.0網站的興起,傳統的關系數據庫在處理web2.0網站,特別是超大規模和高并發的SNS類型的web2.0純動態網站已經顯得力不從心,出現了很多難以克服的問題,而非關系型的數據庫則由于其本身的特點得到了非常迅速的發展。NoSQL數據庫的產生就是為了解決大規模數據集合多重數據種類帶來的挑戰,尤其是大數據應用難題。常見的非關系型數據庫按照分類有:

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

列存儲數據庫:Cassandra、HBase、 Riak

文檔型數據庫:MongoDB、SequoiaDB

圖形數據庫:Neo4J、JanusGraph、TigerGraph


其中上述一、二節摘自:

什么是Neo4j?如何通過Neo4j構建《人民的名義》的關系圖譜?


因此我們也可以在 Neo4J 中使用?NoSQL 命令創建結點和關系,直接可視化知識圖譜:

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


補充:WARN ?The client is unauthorized due to authentication failure. 錯誤的解決辦法:

描述:當你導入其他數據庫(如A.db)后,再導入另一個數據庫(如B.db),并可視化后,你更改B 的圖譜上的節點顏色或大小改不了,會在命令窗口報這個錯,也就是授權問題。

我的理解:A 數據庫在可視化圖譜后,你的操作會保存在一個配置文件中(具體是哪個文件沒必要管)。但當你可視化 B 數據庫時,就會導入 A 的配置,當你針對 B 的圖譜修改時,就對這個配置文件的內容作出了修改,但這沒有經過 A 的允許 ,就會報錯

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

去掉 下面這行 的 “ # ”,保證不進行任何授權驗證

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。