開(kāi)始學(xué)習(xí)JanusGraph鼻听,第一入手資源 官網(wǎng)
JanusGraph是分布式,開(kāi)源,可大規(guī)模擴(kuò)展的圖形數(shù)據(jù)庫(kù)蛉抓。
概述
1. 什么是圖
圖 大學(xué)的《數(shù)據(jù)結(jié)構(gòu)》課程中介紹:它是一種用來(lái)描述現(xiàn)實(shí)世界中個(gè)體和個(gè)體之間網(wǎng)絡(luò)關(guān)系的數(shù)據(jù)結(jié)構(gòu)。是一個(gè)抽象的數(shù)據(jù)結(jié)構(gòu)概念剃诅。
在計(jì)算機(jī)科學(xué)中巷送,圖的組成結(jié)構(gòu)可以描述為:一個(gè)圖(G)就是一些頂點(diǎn)(V)的集合,這些頂點(diǎn)之間的關(guān)系通過(guò)一系列邊(E)連接起來(lái)矛辕。頂點(diǎn)用圈表示笑跛,關(guān)系邊使用線條表示,形成如下結(jié)構(gòu)拓?fù)鋱D:
2. 什么是圖形數(shù)據(jù)庫(kù)
圖數(shù)據(jù)庫(kù)就是用來(lái)存儲(chǔ)圖結(jié)構(gòu)的數(shù)據(jù)庫(kù)聊品。大多數(shù)人接觸最多飞蹂,并且容易理解的是關(guān)系型數(shù)據(jù)庫(kù)(RDB)。一般的關(guān)系型數(shù)據(jù)庫(kù)都可以存儲(chǔ)圖結(jié)構(gòu)翻屈,但對(duì)于復(fù)雜的關(guān)系模型陈哑,比如微信用戶關(guān)系網(wǎng)模型構(gòu)建分析,關(guān)系型數(shù)據(jù)庫(kù)就顯的力不從心。圖數(shù)據(jù)庫(kù)就是為了解決這類復(fù)雜的關(guān)系問(wèn)題而產(chǎn)生的惊窖。
圖庫(kù)也是屬于NoSQL一種刽宪。
NoSQL數(shù)據(jù)庫(kù)大致可以分為以下幾類:
- 鍵值對(duì)(key-value)數(shù)據(jù)庫(kù):如Memcache,Redis
- 列簇式數(shù)據(jù)庫(kù):如HBase
- 文檔型數(shù)據(jù)庫(kù):如Mongodb
- 圖數(shù)據(jù)庫(kù):如Neo4j界酒,JanusGraph
3. 常見(jiàn)圖庫(kù)對(duì)比
目前主流數(shù)據(jù)庫(kù)分為兩個(gè)派系:Neo4j派 和 Tinkerpop派
有興趣可以看下這里 https://blog.csdn.net/wjandy0211/article/details/102707202
4. JanusGraph 與 Tinkerpop 與 Gremlin
Tinkerpop 是Apache基金會(huì)下的一個(gè)開(kāi)源的圖數(shù)據(jù)庫(kù)與圖計(jì)算框架(OLTP與OLAP)圣拄。
Gremlin 是Tinkerpop的一個(gè)組件,它是一門(mén)路徑導(dǎo)向語(yǔ)言毁欣,用于圖操作和圖遍歷(也稱查詢語(yǔ)言)庇谆。Gremlin Console 和 Gremlin Server 分別提供了控制臺(tái)和遠(yuǎn)程執(zhí)行Gremlin查詢語(yǔ)言的方式。Gremlin Server 在 JanusGraph 中被成為 JanusGraph Server署辉。
JanusGraph是基于Tinkerpop這個(gè)框架來(lái)開(kāi)發(fā)的族铆,使用的查詢語(yǔ)言也是Gremlin。
JanusGraph
1. 概述
JanusGraph是一個(gè)圖形數(shù)據(jù)庫(kù)引擎哭尝。其本身專注于緊湊圖序列化哥攘、豐富圖數(shù)據(jù)建模、高效的查詢執(zhí)行材鹦。另外逝淹,JanusGraph利用Hadoop進(jìn)行圖分析和批處理圖處理。JanusGraph為數(shù)據(jù)持久性桶唐、數(shù)據(jù)索引栅葡、客戶端訪問(wèn)實(shí)現(xiàn)了強(qiáng)大的模塊化接口。JanusGraph的模塊化體系結(jié)構(gòu)使其可以與多種存儲(chǔ)尤泽、索引欣簇、客戶端技術(shù)進(jìn)行互操作。它還簡(jiǎn)化了擴(kuò)展JanusGraph以支持新的過(guò)程坯约。
2. 交互
應(yīng)用程序可以通過(guò)兩種方式與JanusGraph交互:
-
嵌入式: 將JanusGraph嵌入到自己的圖Gremlin查詢應(yīng)用中熊咽,與自己的應(yīng)用公用同一JVM。
查詢執(zhí)行時(shí)闹丐,JanusGraph的緩存和事務(wù)處理都在與應(yīng)用程序相同的JVM中進(jìn)行横殴,當(dāng)數(shù)據(jù)模型大時(shí),很容易OOM卿拴,并且耦合性太高衫仑,生產(chǎn)上一般不這么搞。 -
服務(wù)式: JanusGraph單獨(dú)運(yùn)行在一個(gè)或一組服務(wù)器上堕花,對(duì)外提供服務(wù)文狱。(推薦的模式)
客戶端通過(guò)向服務(wù)器提交Gremlin查詢,與遠(yuǎn)程JanusGraph實(shí)例進(jìn)行交互缘挽。
3. 架構(gòu)
4. JanusGraph特點(diǎn)
1. 可擴(kuò)展
- 彈性和線性可擴(kuò)展性如贷,可用于不斷增長(zhǎng)的數(shù)據(jù)和用戶群
- 數(shù)據(jù)分發(fā)和復(fù)制以提高性能和容錯(cuò)能力
- 多數(shù)據(jù)中心高可用性和熱備份
2. 開(kāi)源
所有功能 都是完全免費(fèi)的陷虎。無(wú)需購(gòu)買(mǎi)商業(yè)許可證到踏。JanusGraph在Apache 2許可下完全開(kāi)放源代碼杠袱。
3. 事務(wù)
JanusGraph是一個(gè)事務(wù)數(shù)據(jù)庫(kù),可以支持?jǐn)?shù)千個(gè)并發(fā)用戶實(shí)時(shí)執(zhí)行復(fù)雜的圖遍歷窝稿。支持ACID和最終的一致性楣富。
4. 數(shù)據(jù)存儲(chǔ)
圖數(shù)據(jù)可以存儲(chǔ)在:
- Apache Cassandra - 注重在AP上
- Apache HBase - 注重在CP上
- Google Cloud Bigtable
- Oracle BerkeleyDB - 一般用于單機(jī)本地驗(yàn)證
- ScyllaDB
生產(chǎn)中使用最多的是 Cassandra 和 HBase,根據(jù)業(yè)務(wù)特性選型伴榔。
5. 檢索
全文搜索等高級(jí)搜索功能可以通過(guò)以下方式支持:
6. 分析
除了在線事務(wù)處理(OLTP)之外纹蝴,JanusGraph的Apache Spark集成還支持全局圖分析(OLAP)。
7. TinkerPop
與 Apache TinkerPop 圖棧的本地集成:
8. 適配器
JanusGraph有不同的第三方存儲(chǔ)適配器:
9. 可視化
JanusGraph支持各種可視化工具踪少,例如Arcade Analytics塘安、Cytoscape、Apache TinkerPop的Gephi插件援奢、Graphexp兼犯、Cambridge Intelligence的Key Lines、Linkurious集漾、Tom Sawyer切黔。