優秀的資料庫,不僅可以提升應用的效能,而且可適應大規模的資料增長,減輕開發人員和資料庫管理人員的工作負擔,為你和你的企業以及使用者帶來前所未有的優越體驗。本書適合所有開發人員,特別是Spring Boot開發者,或資料庫管理人員和系統設計人員,並可作為系統策劃者進行資料庫選型的參考資料。
作者簡介:
資深專家,精通.Net和Java兩大體系,尤其對Spring和Spring Boot有深入研究。熟悉SQL Server、Oracle、MySQL等關聯式資料庫,以及Redis、MongoDB、Neo4j等NoSQL資料庫,並對Neo4j有更多的興趣和深入地研究。在系統設計、伺服器架構設計、資料安全和性能優化等方面都有豐富的實踐和工作經驗。
作者序
在高速發展的網際網路應用中,業務需求的頻繁變更和資料的快速增長都要求資料庫必須具有很強的適應能力。Neo4j圖資料庫正是一個能夠適應這種業務需求不斷變化和大規模資料增長而產生的資料庫,它不但具有很強的適應能力,而且能夠自始至終保持高效的查詢效能。
現實世界中的一切事物都處在聯繫之中,如人際關係、電腦網路、地理資料、分子結構模型等,無一不處在紛繁複雜的聯繫之中。這種聯繫形成一種互相關聯的資料,聯繫才是資料的本質所在。傳統的關聯式資料庫無法極佳地表現資料的聯繫,而一些NoSQL(Not Only SQL,非關聯式資料庫)資料庫也不能表現資料之間的聯繫。同樣是NoSQL的Neo4j圖資料庫是以圖的結構形式來儲存資料的,它所儲存的就是聯繫的資料,是連結資料本身。
連結資料中的聯繫本來就很複雜,若要在關聯式資料庫中使用結構化形式來表現這種聯繫,則一般不能直接表示,處理起來既煩瑣又麻煩,並且隨著資料的不斷增長,其存取效能將日趨下降。無數的開發人員和資料庫管理人員都或多或少地使用過關聯式資料庫,在其應用的規模化進展過程中,對於資料庫的效能最佳化常常捉襟見肘、陷入窘境。Neo4j沒有模式結構的定義,也不需要這些定義,它使用非結構化的方式來儲存連結資料,所以能夠直接表現資料的連結特性。
Neo4j不管是與關聯式資料庫相比,還是與其他NoSQL資料庫相比,都具有很多前所未有的優勢,主要表現在以下幾個方面。
1.優越的效能表現
Neo4j具有永久高效的讀取和寫入能力,這種能力與資料庫的大小無關,不管是初始建立的資料庫,還是用了很長時間、累積大量資料的資料庫,Neo4j始終能保持閃電般的讀/寫速度。
2.設計的靈活性
因為Neo4j沒有模式結構定義的約束,並且由於圖結構的自然延伸特性,都替Neo4j提供無限廣闊的靈活設計空間,因為無論是擴充設計,還是增加資料,都不會影響到原來資料的正常使用。
3.反覆運算的敏捷性
正是由於Neo4j的靈活設計特性及其圖結構資料的可伸縮性等特點,使其能追上業務需求變化發展的腳步,並且能適用於頻繁反覆運算的敏捷開發方法。
4. 安全可靠的特性
Neo4j不僅支援完整的交易管理特性,而且提供了即時線上備份功能,以及應對災難事故進行記錄檔恢復的方法,這些都充分說明Neo4j是一個安全可靠的資料庫。
5.簡單好用的特性
Neo4j在使用上非常簡單,不管是使用Java開發語言,還是其他開發語言,如Python、Ruby、PHP、.NET、Node.js等,都能夠非常方便地存取Neo4j。特別是Spring Data Neo4j開發套件,更是提供一整套非常簡單好用的Neo4j資料庫使用方法。
6.豐富的學習資源
Neo4j的社區版滋生了一個非常活躍的社區,在這個社區中,諸多開發者提供非常豐富的使用Neo4j的案例:GraphGists,這是學習使用Neo4j的極佳資源。透過對這些GraphGists的學習和交流,不僅能擴充你的想法,更能讓開發工作變得更加簡單和容易,而且還能幫助你快速建置應用的商業模型。
7.大企業的考驗
Neo4j擁有廣大而又有實力的使用者群眾,並且經過幾年時間的執行實作,充分驗證了它的穩定性和穩固性。如思科、沃爾瑪、愛迪達等公司,都在使用Neo4j的過程中採擷到了圖資料庫的極大威力,並且創造出蓬勃發展的商業模型。
綜上所述,使用如此優秀的資料庫,不僅可以提升應用的效能,而且可以適應大規模的資料增長,同時還能減輕開發人員和資料庫管理人員的工作負擔,為你和你的企業以及你的使用者帶來前所未有的優越體驗。
適合讀者群
本書適合所有開發人員,特別是Spring Boot開發者閱讀,同時適合資料庫管理人員和系統設計人員學習使用,並可作為系統策劃者進行資料庫選型的參考資料。
範例程式下載
本書各章的實例程式下載在各個章節中都有明確說明,同時也可以透過以下網址選擇不同專案進行下載或檢出:
github.com/mr-csj?tab=repositories
勘誤與回饋
如果有問題回饋則可以透過以下連結發起話題,而且如果因為編輯或排版出錯需要勘誤則也會首先在這裡發表:
github.com/mr-csj/discuss/issues
由於時間倉促,加之作者水準所限,書中難免存在紕漏或錯誤之處,敬請讀者批評指正!
繁體中文版說明
為維持全書之完整性,本書僅提供簡體中文程式碼下載,全書程式畫面亦維持簡體中文介面,讀者可對照全書文字進行操作。
在高速發展的網際網路應用中,業務需求的頻繁變更和資料的快速增長都要求資料庫必須具有很強的適應能力。Neo4j圖資料庫正是一個能夠適應這種業務需求不斷變化和大規模資料增長而產生的資料庫,它不但具有很強的適應能力,而且能夠自始至終保持高效的查詢效能。
現實世界中的一切事物都處在聯繫之中,如人際關係、電腦網路、地理資料、分子結構模型等,無一不處在紛繁複雜的聯繫之中。這種聯繫形成一種互相關聯的資料,聯繫才是資料的本質所在。傳統的關聯式資料庫無法極佳地表現資料的聯繫,而一些NoSQL(Not Only SQL,非關聯式資料庫)...
目錄
前言
01 Neo4j概述
1.1 Neo4j資料的特點
1.2 Neo4j資料的表現形式
1.3 Neo4j的優勢
1.4 哪些領域更適合使用Neo4j
1.5 哪些領域不適合使用Neo4j
1.6 哪些企業在使用Neo4j
1.7 豐富的學習資源
1.8 小結
02 Neo4j API應用
2.1 建立開發專案
2.2 使用Neo4j API
2.3 使用標籤
2.4 使用索引
2.5 圖的檢查
2.6 使用Cypher查詢語言
2.7 連接Neo4j伺服器
2.8 關於交易
2.9 其他開發語言實例
2.10 小結
03 Neo4j的安裝及使用
3.1 安裝要求及推薦
3.2 安裝Neo4j伺服器
3.3 Neo4j基本設定
3.4 Neo4j設定最佳化
3.5 使用Neo4j的Web主控台
3.6 小結
04 Cypher查詢語言簡介
4.1 Cypher語法基礎
4.2 Cypher讀/寫查詢結構
4.3 使用索引
4.4 使用約束
4.5 使用標籤
4.6 Cypher唯讀查詢結構
4.7 使用CASE子句
4.8 檢查的路徑
4.9 使用函數
4.10 使用CALL呼叫預存程序
4.11 查詢敘述效能分析
4.12 Cypher的使用範圍
4.13 小結
05 使用SDN建模和設計儲存函數庫介面
5.1 SDN簡介
5.2 資料模型設計
5.3 資料建模的錯誤
5.4 Neo4j的資料類型
5.5 在專案中使用SDN
5.6 使用SDN建模
5.7 使用SDN設計儲存函數庫介面
5.8 SDN設定
5.9 小結
06 應用實例一:NBA季後賽預測
6.1 應用背景分析
6.2 實體物件建模
6.3 實體持久化和查詢設計
6.4 預測演算法設計
6.5 SDN設定及資料庫連接
6.6 資料庫設計驗證
6.7 建立Web應用
6.8 Web前後端設計
6.9 比賽結果編輯設計
6.10 勝率排名的Web設計
6.11 輸贏預測的Web設計
6.12 使用GraphGists的測試資料
6.13 範例專案使用
6.14 小結
07 應用實例二:電影社區推薦引擎
7.1 應用背景分析
7.2 資料物件建模
7.3 儲存函數庫介面設計
7.4 Cypher查詢演算法設計
7.5 資料存取服務類別設計
7.6 資料庫連接設定
7.7 資料庫設計驗證
7.8 Web設計
7.9 電影評分的Web設計
7.10 電影排名的Web設計
7.11 電影推薦的Web設計
7.12 管理後台的導覽列設計
7.13 範例專案使用
7.14 小結
08 Neo4j企業版安裝及使用
8.1 分散式伺服器安裝
8.2 使用Haproxy實施負載平衡服務
8.3 實現讀/寫分離的負載平衡服務
8.4 小結
09 Neo4j的資料安全及備份
9.1 資料的備份與恢復
9.2 資料庫安全保障
9.3 資料的匯入與匯出
9.4 故障恢復與交易記錄檔
9.5 資料庫升級
9.6 小結
結束語
附錄A 參考資料
前言
01 Neo4j概述
1.1 Neo4j資料的特點
1.2 Neo4j資料的表現形式
1.3 Neo4j的優勢
1.4 哪些領域更適合使用Neo4j
1.5 哪些領域不適合使用Neo4j
1.6 哪些企業在使用Neo4j
1.7 豐富的學習資源
1.8 小結
02 Neo4j API應用
2.1 建立開發專案
2.2 使用Neo4j API
2.3 使用標籤
2.4 使用索引
2.5 圖的檢查
2.6 使用Cypher查詢語言
2.7 連接Neo4j伺服器
2.8 關於交易
2.9 其他開發語言實例
2.10 小結
03 Neo4j的安裝及使用
3.1 安裝要求及推薦
3.2 安裝Neo4j伺服器
3.3 Neo4j基本設定
3.4 Neo4j設定最佳化
3.5 使用N...