大家好,我是蛋踢球,在開始這一系列的分享之前,先讓大家欣賞一張網頁前端技能關係圖,作為一個開場,這是之前我在研究網頁前端時建立的~
這張圖就是用 Neo4j 儲存,動態網頁的部分採用 D3.js 去呈現,以及 AJAX 去根據使用者選擇,即時取得相關的節點,背景則是一張很可愛的新年賀歲圖,這部分的技術細節,會在鐵人賽後期跟大家分享喔。
(感謝 HPX高雄讀書會最帥的設計師 - 小孫提供)
Graph DB 如你所見,底層儲存的方式就是上圖的模樣,不再是以列、行、資料表來儲存。每個圓圈都是一個 Node - 節點,代表一筆資料,而每個 Node 都可以有很多 Relation - 關係,而每一個關係可以是單向或是雙向,以下是官網的圖,是不是覺得很直觀呢!
為了避免讀者們直接把 GraphDB 和 Neo4j 劃上等號,我就先從 Graph DB 開始介紹囉!
目前 Graph DB 有三大模型如下
進入正題,為何我特別選 Neo4j 呢?一來是過去摸索有一些經驗,想與大家分享,另外一個原因,我發覺 Neo4j 這幾年持續的進步與改善,現在已經是排名第一的 Graph DB!
https://db-engines.com/en/ranking/graph+dbms
Neo4j 是當前最受歡迎的 Graph DBMS,可以做到傳統 RDBMS 很難表達的複雜關係。Adobe 用 Neo4j 取代 Cassandra;eBay 用 Neo4j 取代 MySQL,他們在效能的提升、或資料量的壓縮都取得非常好的成果
官方對 Neo4j 的定義中,就直接強調它是 Native graph database
,這指的是,它底層儲存的不只是資料,也一併儲存了資料彼此的關係,這也是為何 Neo4j 在大量複雜資料中尋找關係時,非常快速有效率,因為關係早就都儲存好了!
Non-Native 的 Graph DB 則是先將資料儲存在我們相對熟悉的 MySQL、Cassandra、HBase 等資料庫,再透過演算法將資料的關係給層層疊疊找出來,模擬成 Graph DB,所以效能會相對較差。
說到查詢效能,我也借花獻佛一下,底下是官網的範例,相同目的的查詢,SQL 卻寫了更多的語法,也花費更多時間。如果您的資料有類似這樣多層次的複雜關係,就可以考慮使用 Neo4j!
Cypher 是 Neo4j 的查詢語言,簡單直覺,將會在日後的文章做介紹喔!
Cypher
SQL
接下來的文章,我會由淺入深,開始介紹 Neo4j 的安裝與使用,懇請大家繼續支持,寫不好的地方請跟我說,或是覺得有看不懂也歡迎留言唷~
今年度 Neo4j 開發者博覽高峰會 NODES 2020 要來囉!
將會在台灣時間 10/20 8:00PM ~ 10/21 5:00AM 舉行 ... zzzzz
大家好好睡吧~ 不要衝動 ^^
之後會有錄影可以看的
如果你仍然想報名看個究竟
也歡迎點我的報名連結,給我個支持(免費)
https://neo4j.com/nodes-2020/?node=4128615
https://neo4j.com
https://neo4j.com/blog/other-graph-database-technologies/
https://www.tpisoftware.com/tpu/articleDetails/1874
https://zh.wikipedia.org/wiki/%E5%9B%BE%E6%95%B0%E6%8D%AE%E5%BA%93