[知識圖譜] 3.1-圖數據庫是什麼?Neo4j是什麼?

圖數據庫是什麼?就算是科班出身的朋友,可能也對圖數據庫沒有多少了解。圖數據庫是基於圖論實現的一種新型的NoSQL數據庫。html

關係型數據庫的不適性

  • 隨着關係數據庫使用範圍的不斷擴大,也暴露出一些它始終沒法解決的問題,其中最主要的是數據建模中的一些缺陷和問題,以及在大數據量和多服務器之上進行水平伸縮的限制。算法

  • 互聯網發展產生了一些新的趨勢變化:用戶、系統和傳感器產生的數據量呈指數增加,數據量不斷增長,大數據的存儲和處理; 新時代互聯網形勢下的問題急迫性,這一問題因互聯網+、社交網絡,智能推薦等的大規模興起和繁榮而變得越加緊迫。數據庫

NoSQL數據庫的數據模型

  • NoSQL(Not Only SQL,不限於SQL)是一類範圍很是普遍的持久化解決方案,它們不遵循關係數據庫模型,也不使用SQL做爲查詢語言。 其數據存儲能夠不須要固定的表格模式,也常常會避免使用SQL的JOIN操做,通常有水平可擴展的特徵。服務器

  • NoSQL數據庫能夠按照它們的數據模型分紅4類:鍵-值存儲庫(Key-Value-stores);列數據庫(BigTable-implementations);文檔庫(Document-stores);圖形數據庫(Graph Database)。網絡

作知識圖譜爲何選擇圖形數據庫,爲何選擇Neo4j?

  • 更快的數據庫操做。固然,有一個前提條件,那就是數據量較大,在MySql中存儲的話須要許多表,而且表之間聯繫較多(即有很多的操做須要join表)。數據庫設計

  • 數據更直觀,相應的SQL語句也更好寫(Neo4j使用Cypher語言,與傳統SQL有很大不一樣)。post

  • 更靈活。無論有什麼新的數據須要存儲,都是一概的節點和邊,只須要考慮節點屬性和邊屬性。而MySql中即意味着新的表,還要考慮和其餘表的關係。大數據

  • 數據庫操做的速度並不會隨着數據庫的增大有明顯的下降。這得益於Neo4j特殊的數據存儲結構和專門優化的圖算法。優化

圖數據庫有哪些特徵?

  • 包含節點和邊;.net

  • 節點上有屬性(鍵值對);

  • 邊有名字和方向,並老是有一個開始節點和一個結束節點;

  • 邊也能夠有屬性。

在項目中使用Neo4J

  • 對事務的支持。Neo4J強制要求每一個對數據的更改都須要在一個事務以內完成,以保證數據的一致性。

  • 強大的圖形搜索能力。Neo4J容許用戶經過Cypher語言來操做數據庫。該語言是特地爲操做圖形數據庫設計的,所以其能夠很是高效地操做圖形數據庫。 同時Neo4J也提供了面向當前市場一系列流行語言的客戶端,以供使用這些語言的開發人員可以快速地對Neo4J進行操做。

  • 具備必定的橫向擴展能力。因爲圖中的一個結點經常具備和其它結點相關聯的關係,所以像一系列Sharding解決方案那樣對圖進行切割經常並不現實。 所以Neo4J當前所提供的橫向擴展方案主要是經過Read Replica進行的讀寫分割。 反過來,因爲單個Neo4J實例能夠存儲幾十億個結點及關係,所以對於通常的企業級應用,這種橫向擴展能力已經足夠了。

參考資料

下一篇

3-2. Neo4j的配置和使用

相關文章
相關標籤/搜索