1、Neo4j簡介
Neo4j是一個高性能的、NOSQL圖形數據庫,它將結構化數據存儲在網絡上而不是表中。它是一個嵌入式的、基於磁盤的、具備完全的事務特性的Java持久化引擎,但是它將結構化數據存儲在網絡(從數學角度叫做圖)上而不是表中。Neo4j也可以被看作是一個高性能的圖引擎,該引擎具有成熟數據庫的所有特性。程序員工作在一個面向對象的、靈活的網絡結構下,而不是嚴格、靜態的表中,但是他們可以享受到具備完全的事務特性、企業級的數據庫的所有好處。Neo4j是基於Java的圖形數據庫,運行Neo4j需要啟動JVM進程,因此必須安裝JDK1.8及以上版本。
Neo4j分為Neo4j分社區版(Community Edition)和企業版(Enterprise Edition),社區版為免費版本。Neo4j社區版和企業版在功能上沒有本質區別,主要區別在如下幾點:
1)容量:社區版最多支持 320 億個節點、320 億個關系和 640 億個屬性,而企業版沒有這個限制。
2)並發:社區版只能部署成單實例,不能做集群。而企業版可以部署成高可用集群或因果集群,從而可以解決高並發量的問題。
3)容災:由於企業版支持集群,部分實例出故障不會影響整個系統正常運行。
4)熱備:社區版只支持冷備份,即需要停止服務后才能進行備份,而企業版支持熱備,第一次是全量備份,后續是增量備份。
5)性能:社區版最多用到 4 個內核,而企業能用到全部內核,且對性能做了精心的優化。企業版的性能大概是社區版的2~4倍。
6)支持:企業版客戶能得到 5X10 電話支持(Neo4j 美國電話、郵件,微雲數聚電話、微信、郵件)。
二、Neo4j優缺點
1、優點
1)更快的數據庫操作。當然,有一個前提條件,那就是數據量較大,在MySql中存儲的話需要許多表,並且表之間聯系較多(即有不少的操作需要join表)。
2)數據更直觀,相應的SQL語句也更好寫(Neo4j使用Cypher語言,與傳統SQL有很大不同)。
3)更靈活。不管有什么新的數據需要存儲,都是一律的節點和邊,只需要考慮節點屬性和邊屬性。而MySql中即意味着新的表,還要考慮和其他表的關系。
4)數據庫操作的速度並不會隨着數據庫的增大有明顯的降低。這得益於Neo4j特殊的數據存儲結構和專門優化的圖算法。
2、缺點
1)插入速度比較慢。可能是因為創建節點和邊的時候需要保存一些額外信息(為了查詢服務)。
2)超大節點處理效率低。當有一個節點的邊非常多時(常見於大V),有關這個節點的操作的速度將大大下降。
3)無法增加分配內存的方法,提高數據庫速度。
3、適用場景
鑒於其明顯的優缺點,Neo4j適合存儲”修改較少,查詢較多,沒有超大節點“的圖數據。
4、圖數據庫選擇Neo4j的理由
1)作為較早的一批圖形數據庫之一,文檔和各種技術博客較多。
2)flockdb雖說操作可能簡單,也輕量級,但是安裝過程復雜,依賴太多。
3)orientdb和arangodb從易用性來說都差不多,速度上arangodb相對最快,因為其使用了混合索引,但是從穩定性來說,neo4j是最好的。
三、安裝環境
Neo4j的安裝對硬件、系統等有一些要求,例如CPU、Memory、Disk、Filesystem、Software等。
1)CPU
關於CPU,最低要求是Itel Core i3 推薦使用Intel Core i7 或 IBM POWER 8。
2)Memory
關於Memory,最低要求是2GB, 推薦是16-32GB 或更多。 越大的內存允許處理越大的圖,但必須正確配置,以免破垃圾收集壞性操作。
3)Disk
除了Disk的容量,Disk的性能對Neoj4的影響非常大,Neo4j的工作負載傾向於隨機讀。選擇平均尋址時間低的存儲,例如SSD,最低要求 10GB SATA,推薦配置 SSD w/SATA。
4)FileSystem
最低要求 ext4(或類似的),推薦配置 ext4、ZFS。
5)Software
必須安裝OpenJDK 8 或 Oracle Java 8及以上版本。
6)Operation Sytem
Linux(Ubuntu, Debian等) 。我的測試環境為CentorOS 6.6,暫時還沒有發現什么問題。
四、安裝步驟
Neo4j是基於Java的圖形數據庫,運行Neo4j需要啟動JVM進程,因此必須安裝JDK1.8及以上版本。
1、下載安裝包
Neo4j下載地址:
https://neo4j.com/download/other-releases/#releases
或者直接在服務器上使用命令下載
curl -O http://dist.neo4j.org/neo4j-community-3.4.5-unix.tar.gz
2、解壓安裝
tar -axvf neo4j-community-3.4.5-unix.tar.gz
3、修改配置
在安裝目錄下找到conf目錄下的neo4j.conf文件,修改相應配置如下:
# 修改第22行load csv時l路徑,在前面加個#,可從任意路徑讀取文件
#dbms.directories.import=import
# 修改35行和36行,設置JVM初始堆內存和JVM最大堆內存
# 生產環境給的JVM最大堆內存越大越好,但是要小於機器的物理內存
dbms.memory.heap.initial_size=5g
dbms.memory.heap.max_size=10g
# 修改46行,可以認為這個是緩存,如果機器配置高,這個越大越好
dbms.memory.pagecache.size=10g
# 修改54行,去掉改行的#,可以遠程通過ip訪問neo4j數據庫
dbms.connectors.default_listen_address=0.0.0.0
# 默認 bolt端口是7687,http端口是7474,https關口是7473,不修改下面3項也可以
# 修改71行,去掉#,設置http端口為7687,端口可以自定義,只要不和其他端口沖突就行
dbms.connector.bolt.listen_address=:7687
# 修改75行,去掉#,設置http端口為7474,端口可以自定義,只要不和其他端口沖突就行
dbms.connector.http.listen_address=:7474
# 修改79行,去掉#,設置http端口為7473,端口可以自定義,只要不和其他端口沖突就行
dbms.connector.https.listen_address=:7473
# 修改227行,去掉#,允許從遠程url來load csv
dbms.security.allow_csv_import_from_file_urls=true
# 修改246行,允許使用neo4j-shell,類似於mysql 命令行之類的
dbms.shell.enabled=true
# 修改248行,去掉#,設置連接neo4j-shell的端口,一般都是localhost或者127.0.0.1,這樣安全,其他地址的話,一般使用https就行
dbms.shell.host=127.0.0.1
# 修改250行,去掉#,設置neo4j-shell端口,端口可以自定義,只要不和其他端口沖突就行
dbms.shell.port=1337
# 修改254行,設置neo4j可讀可寫
dbms.read_only=false
# 設置JDK,若系統默認是jdk1.8及以上可以不需要設置
JAVA_HOME=/usr/java/jdk1.8.0_144
JRE_HOME=/usr/java/jdk1.8.0_144/jre
4、啟動及其他命令
進入bin目錄執行執行如下命令
后台啟動:./neo4j start
前台啟動:./neo4j console
查看狀態:./neo4j status
停止:./neo4j stop
重啟:./neo4j restart
5、客戶端訪問
http://服務器ip地址:7474/browser/
1
在瀏覽器上第一次訪問圖數據庫所在的機器上的7474端口時,賬號neo4j,密碼neo4j,會提示修改初始密碼。若出現404錯誤,可能被防火牆阻止了7474端口的訪問,需要在防火牆中設置。
五、其他配置
1、開機啟動
vi /etc/rc.d/rc.local
在文件最后添加如下命令行:
/usr/share/neo4j/bin/neo4j start
其中/usr/share/neo4j/bin/是安裝Neo4j的路徑,然后保存。
2、修改環境變量
vi /etc/profile
export NEO4J_HOME=/opt/moudles/neo4j/neo4j-community-3.2.10
export PATH=$PATH:$NEO4J_HOME/bin
3、修改可操作文件數量
vi /etc/security/limits.conf
neo4j soft nofile 40000
neo4j hard nofile 40000
————————————————
版權聲明:本文為CSDN博主「hdd2803」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hdd2803/article/details/84432007