Neo4j 第一站 – 基本介紹
Neo4j介紹
圖資料庫排名
目前使用的圖模型有3種,分別是屬性圖(Property Graph)、資源描述框架(RDF)三元組和超圖(HyperGraph)。現在較為知名的圖數據庫主要是基於屬性圖,更確切得說是帶標籤的屬性圖(Labeled-Property Graph)
圖. DB-ENGINES 調查報告
What is Neo4j?
Neo4j是一個高度可擴展的原生(Native)圖形資料庫,旨在專門利用資料和資料關係。
與其他資料庫不同,Neo4j 可以在儲存資料時建立關係,從而使其能夠更快地遍歷(Traversal)資料間的連接。
核心組件:節點、關係、屬性、標籤。
是一個符合ACID標準的資料庫。
Neo4J就是屬於原生圖資料庫(Native Graph Database),它使用的後端儲存是專門為Neo4J這種圖資料庫定製和優化的,理論上說能更有利於發揮圖資料庫的效能。而JanusGraph不是原生圖資料庫,而將資料儲存在其他系統上,比如Hbase。
在電腦科學裡,樹的遍歷(也稱為樹的搜尋)是圖的遍歷的一種,指的是按照某種規則,不重複地存取某種樹的所有節點的過程。
圖. 示意圖
圖. Release history
Why Neo4j?
使用Neo4j,開發人員可以建置智能應用程序,以實時遍歷當今大型的,相互關聯的資料集。
特點如下
1. 性能: ebay 用 Neo4j 取代 MySQL 解決方案,效能快了 1000倍, 查詢代碼卻少了 10 ~ 100 倍
2. 高可用性: 採用因果叢集架構
3. 敏捷: (節點、關係、屬性) 可隨業務發展, 靈活開發解決方案
4. 安全: 提供沙盒功能(避免不安全API)、白名單、TLS憑證、LDAP等。
5. 對開發人員友善: 使用 Cypher 圖查詢語言, 可以做到 SQL 語言, 很難表達的關係
6. 可擴展: Adobe 用 Neo4j 取代 Cassandra, 資料量從 50TB 降到 40GB
典型應用場景
基本上就是基於圖形搜尋的應用:
實時建議
主資料管理
身份和訪問管理
網絡和IT運營
詐欺識別
反洗錢/逃稅
基於圖的搜索
知識圖
圖分析和算法
圖驅動的人工智能
智能家居
物聯網/物聯網
主要客戶
Neo4j擁有300多家商業客戶和750多家新創公司。旗艦客戶包括eBay,沃爾瑪,思科,花旗銀行,UBS,HP,CenturyLink,AT&T,DHS,美國陸軍,Microsoft,IBM,Thomson Reuters,Amadeus Travel,Caterpillar,Volvo等。
圖. Customer Reference
授權模式
Neo4j共有2個版本:社區版和企業版。它具有雙重許可:GPL v3和商業許可。社區版是免費的,但由於缺乏群集,並且僅限於在一個節點上運行,並且沒有熱備份。企業版釋放了這些限制,允許進行群集,熱備份和監視。企業版可通過訂閱開源商業許可獲得。
Neo4j系統架構
Neo4j 系統架構可以分成 2 種
1. Standalone 單機
適合測試環境、快速開發。
優點:即開即用、無需配置。
缺點:單點失敗就不可用。
圖. Standalone 單機
2. Causal Clustering 因果叢集
適合正式環境、處理大圖。
由 Core Servers(讀寫) + Replica Servers(只讀) 組成。
優點:高可用,透過擴展Replica Servers 增加應用。
缺點:需要較多硬體資源、配置較複雜。
圖. Causal Clustering 因果叢集
硬體規格
** 以v3.5為例 **
CPU
最低 Intel Core i3
建議 Intel Core i7, IBM POWER8
Memory
最低 2GB
建議 16-32GB以上
Disk
最低 SATA 7.2K RPM 6Gbps
建議 SSD, SATA Express, or NVMe
工作負載傾向隨機存取, 選擇平均尋道時間短的
Filesystem
建議EXT4
安裝操作
考量到v4.0需要Java11的環境,以下將使用Linux + Java8環境,示範安裝Neo4j Community Edition v3.5
1 先到官方下載中心 https://neo4j.com/download-center/
2 選擇OS和DB版本
圖. Download
3 啟動步驟
3.1 下載後解壓
$ tar zxvf neo4j-community-3.5.15-unix.tar.gz
3.2 啟動
$ cd neo4j-community-3.5.15/bin/
$ ./neo4j start
3.3 瀏覽器登入
http://localhost:7474
(初次登入密碼 neo4j)
圖. 登入畫面
近期版本特點
v3.5 Release Note Feature
全部版本
全文索引和搜索:這項基於Lucene技術的特點,適合文字密集型的應用,e.g. 知識圖、中繼資料管理、物料清單(BOM表)、自然語言處理(NLP)、AI領域。
Go語言驅動程序:基於全新的Seabolt連接器(C語言)框架上開發。
實作本地索引(Native Index):寫入效能提高5倍。
Off-Heap交易狀態:允許DBA將交易狀態(中間結果),使用heap之外的記憶體,為執行交易保留大量記憶體,避免發生OOM。
索引支持 ORDER BY 排序功能:有效改善Cypher查詢效能。
企業版
叢集發現服務加密:支持因果叢集用TLS協議發現其他成員。
預防蠻力攻擊(Brute-force attack):支持設定登入嘗試次數和失敗鎖定時間。
主題備用名稱(SAN)和主機名稱驗證:這項功能支持X.509憑證列出集群成員的資訊。
棄用項目
非本地索引(Non-native Index)
高可用叢集(HA Cluster)
REST API // 請改用HTTP API或官方驅動程序
v4.0 Release Note Feature
回應式架構Reactive Architecture:支持開發人員控制資料的回傳速率,或是優雅的中斷回傳作業。
多資料庫Multi-Database:原本v3.5只能一個資料庫能上線工作,而v4.0在保證隔離性的同時,支持多個資料庫同時在線工作。
Neo4j Fabric:將多個資料庫,聚合成一個虛擬資料庫。因此,可以用一個Cypher語法,同時查詢多個資料庫內的資料。
參考連結
l https://en.wikipedia.org/wiki/Neo4j
維基百科: Neo4j
l https://neo4j.com/blog/rdf-triple-store-vs-labeled-property-graph-difference/
RDF Triple Stores vs. Labeled Property Graphs: What’s the Difference?
l https://neo4j.com/neo4j-graph-database/
What Is Neo4j?
l https://neo4j.com/use-cases/knowledge-graph/
Why Neo4j?
l https://neo4j.com/docs/operations-manual/3.5/installation/requirements/
硬體規格
l https://neo4j.com/blog/neo4j-graph-database-3-5-ga-release/
Neo4j Graph Database 3.5: Everything You Need to Know [GA Release]
l https://neo4j.com/blog/neo4j-graph-database-4-0-ga-release/
Introducing Neo4j Graph Database 4.0 [GA Release]