NoSQL Neo4j

Neo4j 第一站 – 基本介紹

莊興旺 2020/03/24 17:40:20
950

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,沃爾瑪,思科,花旗銀行,UBSHPCenturyLinkATTDHS,美國陸軍,MicrosoftIBMThomson ReutersAmadeus TravelCaterpillarVolvo等。

. 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          選擇OSDB版本

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

 

 

 

莊興旺