更新時間:2020-04-03 來源:黑馬程序員 瀏覽量:
一、數據庫的分類
1. 關系型數據庫
關系型數據庫,是指采用了關系模型來組織數據的數據庫,其以行和列的形式存儲數據,以便于用戶理解,關系型數據庫這一系列的行和列被稱為表,一組表組成了數據庫。用戶通過查詢來檢索數據庫中的數據,而查詢是一個用于限定數據庫中某些區域的執行代碼。關系模型可以簡單理解為二維表格模型,而一個關系型數據庫就是由二維表及其之間的關系組成的一個數據組織。主流的關系型數據庫有Oracle、DB2、MySQL、SQL Server等。
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
2.1 什么是Neo4j
Neo4j是一個高性能的NOSQL圖形數據庫,它將結構化數據存儲在網絡上而不是表中。它是一個嵌入式的、基于磁盤的、具備完全的事務特性的Java持久化引擎,但是它將結構化數據存儲在網絡(從數學角度叫做圖)上而不是表中。Neo4j也可以被看作是一個高性能的圖引擎,該引擎具有成熟數據庫的所有特性。簡單來說Neo4j是一個開源的基于Java開發,運行于JVM之上。
2.2 Neo4j的數據結構
在一個圖中包含兩種基本的數據類型:Nodes**(節點)** 和 Relationships**(關系)。Nodes** 和 Relationships 包含key/value形式的屬性。Nodes通過Relationships所定義的關系相連起來,形成關系型網絡結構。
2.3 社區版和企業版區別
1)社區版限制
節點:320 億
關系:320 億
屬性:640 億
2)企業版與社區版都有的功能
·Property Graph Model(屬性圖模型)
·Native Graph Processing & Storage(本地圖形處理和存儲)
·ACID(事務管理)
·Cypher – Graph Query Language(支持Cypher圖查詢語句)
·REST API(Restful風格的api)
·High-Performance Native API(本機高性能api)
·HTTPS
3)企業版獨有的功能
·集群(水平伸縮/高可用)
社區版不支持集群等高可用配置,只有單機。
·基于用戶和角色的訪問控制
社區版在安全管理方面相比企業版而言,功能較弱,僅提供用戶和密碼管理,沒有涉及角色、權限控制等企業必需的安全管理功能。
·熱備份
社區版不支持熱備份(neo4j-backup),只有企業版才有這個工具。
·日志功能
社區版本沒有安全日志功能,Neo4j提供安全日志和查詢日志兩種,用于記錄數據庫的查詢和發生的安全事件,但僅在企業版才支持。
·查詢管理
可以設置事務超時時間,以及列出運行的查詢,可以選擇性終止一個或多個查詢。
·診斷及調優工具
JMX日志和監控,包含Graphite JMX客戶端
·垂直伸縮(超過4核)
支持超過4個以上的CPU核心,對于超過4核的CPU提供高度優化的并行圖算法執行過程。
·鎖管理
對于超過4核的CPU系統提供更加高效的寫入鎖機制以增加并發處理能力
·Cypher查詢追蹤
對正在運行的查詢進行狀態跟蹤和管理(例如強制結束查詢的運行)
·企業級監控
更全面的監控插件以及日志輸出,社區版本僅有http日志,企業版包含了GC、Security日志。
·世界級支持
有錢啥都好說......
4)企業版報價
套餐(服務器 x 內核) 價格(萬美元/年)
3 x 8 = 19.9(萬美元/年)
3 x 4 = 9.9(萬美元/年)
2 x 4 = 6.8(萬美元/年)
1 x 4 = 3.6(萬美元/年)
這里需要注意neo4j的企業報價不僅和機器數量有關還與CPU核數掛鉤。
2.4 Neo4j 使用
1)環境
Java:jdk1.8
Neo4j: neo4j3.5.7
2)安裝
資料包:https://pan.baidu.com/s/1cA49NnqzQp0Z9QQdCX9GGw
·jdk安裝
·neo4j安裝
下載地址:https://neo4j.com/download-center/#releases
·簡單使用
通過瀏覽器訪問圖庫,默認賬密: neo4j/neo4j,會提示你修改密碼
正確的打開姿勢
查詢圖庫并限制返回個數
MATCH (n) RETURN n LIMIT 25
如果這時候張寶寶想要找亮平辦點兒事情應該怎么托關系呢?我們通過關系圖譜可以看到有n個方法可以實現,那么為了追求效率肯定是“求最少的人辦最多的事兒”,這個時候就要用到我們的最短路徑算法了,放心圖庫中已經自帶了。
match p=shortestpath((u1:User{name:'張寶寶'})-[*]-(u2:User{name:'侯亮平'})) return p
2.5 Neo4j應用場景
·金融行業應用
反欺詐已經是金融行業一個核心應用,通過圖數據庫可以對不同的個體、團體做關聯分析,從人物在指定時間內的行為,例如去過地方的IP地址、曾經使用過的MAC地址(包括手機端、PC端、WIFI等)、社交網絡的關聯度分析,同一時間點是否曾經在同一地理位置附近出現過,銀行賬號之間是否有歷史交易信息等。
·社交網絡圖譜
在社交網絡中,公司、員工、技能的信息,這些都是節點,它們之間的關系和朋友之間的關系都是邊,在這里面圖數據庫可以做一些非常復雜的公司之間關系的查詢。比如說公司到員工、員工到其他公司,從中找類似的公司、相似的公司,都可以在這個系統內完成。
·企業關系圖譜
圖數據庫可以對各種企業進行信息圖譜的建立,包括最基本的工商信息,包括何時注冊、誰注冊、注冊資本、在何處辦公、經營范圍、高管架構。圍繞企業的經營范圍,繼續細化去查詢企業究竟有哪些產品或服務,例如通過企業名稱查詢到企業的自媒體,從而給予其更多關注和了解。另外也包括對企業的產品和服務的數據關聯,查看該企業有沒有令人信服的自主知識產權和相關資質來支撐業務的開展。
企業在日常經營中,與客戶、合作伙伴、渠道方、投資者都會打交道,這也決定了企業對社會各個領域都廣有涉獵,呈現面錯綜復雜,因此可以通過企業數據圖譜來查詢,層層挖掘信息。基于圖數據的企業信息查詢可以真正了解企業的方方面面,而不再是傳統單一的工商信息查詢。
2.6 思考
以上只是neo4j圖數據庫的基本安裝、簡單使用以及應用場景,那么我們該如果用好圖數據庫,如何去定義自己的圖模型、編寫圖庫語句以及圖庫如何用我們的java代碼來操作了?請關注下期出品。
猜你喜歡: