甲圖是一個(gè)構(gòu)成的結(jié)構(gòu)的頂點(diǎn)和邊緣毅哗。頂點(diǎn)和邊都可以有任意數(shù)量的鍵/值對稱為屬性听怕。頂點(diǎn)表示離散對象,例如人虑绵,地點(diǎn)或事件尿瞭。邊緣表示頂點(diǎn)之間的關(guān)系。例如翅睛,一個(gè)人可能認(rèn)識另一個(gè)人声搁,參與過某個(gè)事件,和/或最近在某個(gè)特定的地方宏所。屬性表示關(guān)于頂點(diǎn)和邊的非關(guān)系信息酥艳。示例屬性包括具有名稱,年齡和具有時(shí)間戳和/或權(quán)重的邊的頂點(diǎn)爬骤〕涫總之,上述圖形被稱為屬性圖 它是Apache TinkerPop的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)霞玄。
如果用戶的域由可以以多種方式(邊緣)彼此相關(guān)的異質(zhì)對象集(頂點(diǎn))組成骤铃,則圖形可以是要使用的正確表示。在圖中坷剧,每個(gè)頂點(diǎn)被視為原子實(shí)體(不僅僅是“表中的行”)惰爬,可以鏈接到任何其他頂點(diǎn)或者隨意添加或刪除屬性。這使得數(shù)據(jù)建模者能夠根據(jù)復(fù)雜關(guān)系世界中的參與者進(jìn)行思考惫企,而不是在關(guān)系數(shù)據(jù)庫中撕瞧,聚合加入靜態(tài)類型表。一旦對域建模狞尔,就必須利用該模型以產(chǎn)生新穎的差異化信息丛版。圖形計(jì)算具有豐富的歷史記錄,不僅包括缺乏表連接語義的查詢語言偏序,還有支持復(fù)雜推理的算法:路徑分析页畦,頂點(diǎn)聚類和排序,子圖識別等研儒。應(yīng)用圖形計(jì)算的世界提供了靈活豫缨,直觀的數(shù)據(jù)結(jié)構(gòu)以及能夠有效利用該結(jié)構(gòu)的大量算法。
Apache TinkerPop?是一個(gè)開源的端朵,與供應(yīng)商無關(guān)的圖形計(jì)算框架好芭,以商業(yè)友好的Apache2許可證分發(fā)。當(dāng)數(shù)據(jù)系統(tǒng)啟用TinkerPop時(shí)冲呢,其用戶可以將其域建模為圖形并使用Gremlin圖形遍歷語言分析該圖形栓撞。此外,所有支持TinkerPop的系統(tǒng)都可以相互集成,從而可以輕松擴(kuò)展其產(chǎn)品瓤湘,并允許用戶為其應(yīng)用選擇合適的圖形技術(shù)。有時(shí)恩尾,應(yīng)用程序最好由內(nèi)存中的事務(wù)圖數(shù)據(jù)庫提供服務(wù)弛说。有時(shí),多機(jī)分布式圖形數(shù)據(jù)庫將完成這項(xiàng)工作翰意∧救耍或者,應(yīng)用程序可能需要用于實(shí)時(shí)查詢的分布式圖形數(shù)據(jù)庫冀偶,以及用于批量分析的Big(圖形)數(shù)據(jù)處理器醒第。無論應(yīng)用程序的要求是什么,都有一個(gè)支持TinkerPop的圖形系統(tǒng)來滿足其需求进鸠。為Apache TinkerPop做貢獻(xiàn)
TinkerPop是一個(gè)歡迎貢獻(xiàn)的開源項(xiàng)目稠曼。有很多方法可以參與:
- 加入Gremlin-Users公共郵件列表。
- 通過回答問題和展示您在TinkerPop和圖表方面的專業(yè)知識來幫助用戶客年。
- 加入TinkerPop Developer公共郵件列表霞幅。
- 提供有關(guān)如何更好地制作TinkerPop代碼和文檔庫的想法。
- 向TinkerPop JIRA提交錯(cuò)誤和功能問題量瓜。
- 提供易于重現(xiàn)的錯(cuò)誤報(bào)告和清晰明確的功能請求司恳。
- 克隆TinkerPop Git存儲(chǔ)庫并提供拉取請求。
- 專注于代碼庫的特定區(qū)域绍傲,并對您的貢獻(xiàn)負(fù)責(zé)扔傅。
- 隨著時(shí)間的推移做出重大而持久的貢獻(xiàn)。
- 成為TinkerPop提交者并幫助確定The TinkerPop的演變烫饼。
要從源代碼構(gòu)建TinkerPop猎塞,請查看開發(fā)人員文檔。
社區(qū)貢獻(xiàn)
TinkerPop是一個(gè)更大的開發(fā)生態(tài)系統(tǒng)的核心枫弟,它擴(kuò)展了其核心接口邢享,集成點(diǎn)和想法。下面的圖形系統(tǒng)和庫代表了TinkerPop維護(hù)的參考實(shí)現(xiàn)以及第三方托管項(xiàng)目淡诗。TinkerPop社區(qū)總是有興趣了解這些項(xiàng)目并幫助他們提供支持骇塘。請閱讀我們的提供商列表政策,并隨時(shí)在用戶和開發(fā)人員郵件列表上推廣此類項(xiàng)目韩容。有關(guān)如何構(gòu)建TinkerPop公開的各種接口的實(shí)現(xiàn)的信息款违,請參閱提供程序文檔。
圖形系統(tǒng)
<small style="box-sizing: border-box; font-size: 12px;">[ 了解更多 ]</small>
- Amazon Neptune - 完全托管的圖形數(shù)據(jù)庫服務(wù)群凶。
- Bitsy - 一個(gè)小巧插爹,快速,可嵌入,耐用的內(nèi)存中圖形數(shù)據(jù)庫赠尾。
- Blazegraph - 支持OLTP的RDF圖數(shù)據(jù)庫力穗。
- CosmosDB - Microsoft的分布式OLTP圖數(shù)據(jù)庫。
- ChronoGraph - 版本化圖形數(shù)據(jù)庫气嫁。
- DSEGraph - 支持OLTP和OLAP的DataStax圖數(shù)據(jù)庫当窗。
- GRAKN.AI - 分布式OLTP / OLAP知識圖系統(tǒng)。
- Hadoop(Spark) - 使用Spark的OLAP圖形處理器寸宵。
- HGraphDB - 在Apache HBase上運(yùn)行的OLTP圖數(shù)據(jù)庫崖面。
- 華為圖形引擎服務(wù) - 完全托管,分布式梯影,大規(guī)模圖形查詢和分析服務(wù)巫员,提供可視化的交互式分析平臺(tái)。
- IBM Graph - OLTP圖數(shù)據(jù)庫即服務(wù)甲棍。
- JanusGraph - 分布式OLTP和OLAP圖形數(shù)據(jù)庫简识,支持BerkeleyDB,Apache Cassandra和Apache HBase救军。
- JanusGraph(亞馬遜) - JanusGraph的Amazon DynamoDB存儲(chǔ)后端财异。
- Neo4j - OLTP圖數(shù)據(jù)庫(嵌入式和高可用性)。
- neo4j-gremlin-bolt - OLTP圖數(shù)據(jù)庫(使用Bolt協(xié)議)唱遭。
- OrientDB - OLTP圖數(shù)據(jù)庫
- Apache S2Graph - 在Apache HBase上運(yùn)行的OLTP圖數(shù)據(jù)庫戳寸。
- Sqlg - SQL數(shù)據(jù)庫上的OLTP實(shí)現(xiàn)。
- Stardog - 支持OLTP和OLAP的RDF圖數(shù)據(jù)庫拷泽。
- TinkerGraph - 內(nèi)存中的OLTP和OLAP參考實(shí)現(xiàn)疫鹊。
- Titan - 分布式OLTP和OLAP圖形數(shù)據(jù)庫,支持BerkeleyDB司致,Apache Cassandra和Apache HBase拆吆。
- Titan(亞馬遜) - Titan的Amazon DynamoDB存儲(chǔ)后端。
- 泰坦(Tupl) - 泰坦的Tupl存儲(chǔ)后端脂矫。
- Unipop - OLTP Elasticsearch和JDBC支持的圖形枣耀。
查詢語言
<small style="box-sizing: border-box; font-size: 12px;">[ 了解更多 ]</small>
- cypher-for-gremlin - 一個(gè)Cypher到Gremlin遍歷的轉(zhuǎn)換器。
- Ferma(java / dsl) - Apache TinkerPop的ORM / OGM庭再。
- Goblin(python / dsl) - 用于TinkerPop 3 Gremlin服務(wù)器的Goblin OGM捞奕。
- Gremlin.Net(.NET - C#/ variant) - Gremlin托管在C#中,用于任何基于.NET的VM拄轻。
- gremlin-javascript(js) - 用JavaScript托管的Gremlin用于Node.js.
- gremlin-orm(javascript)Gremlin ORM for Node.js.
- gremlin-python(python / variant) - 用Python托管的Gremlin颅围,用于任何基于Python的VM。
- gremlin-py(python / variant) - 編寫可以發(fā)送到Gremlin Server的純Python Gremlin恨搓。
- gremlin-scala(scala / variant) - 用于TinkerPop3的基于Scala的Gremlin語言變體院促。
- gremlin-objects(java / dsl) - Gremlin的對象圖映射庫筏养。
- gremlin-template-string(js / variant) - 一個(gè)Gremlin語言構(gòu)建器。
- ipython-gremlin(python / variant) - 在IPython和Jupyter中的Gremlin常拓。
- kotlin-gremlin-ogm(kotlin / dsl) - Kotlin和Gremlin的對象圖映射庫渐溶。
- ogre(clojure / variant) - TinkerPop3的Clojure語言包裝器。
- Peapod(java / dsl) - 一個(gè)對象圖包裝器墩邀。
- sparql-gremlin(sparql / distinct) - 一個(gè)SPARQL到Gremlin遍歷編譯器掌猛。
- spring-data-gremlin(java / dsl) - 支持TinkerPop的圖形系統(tǒng)的Spring Data支持。
- sql-gremlin(sql / distinct) - 一個(gè)SQL到Gremlin遍歷編譯器眉睹。
語言驅(qū)動(dòng)
- gremlinclient(python) - Gremlin Server的異步Python 2/3客戶端,允許靈活的協(xié)同語法 - Trollius废膘,Tornado竹海,Asyncio。
- gremlin_client(ruby) - Ruby的Gremlin Server驅(qū)動(dòng)程序丐黄。
- gremlin-driver(java) - 用于Java的Gremlin Server驅(qū)動(dòng)程序斋配。
- gremgo(go) - Go的Gremlin Server驅(qū)動(dòng)程序。
- gremlex(elixir) - Elixir的Gremlin Server驅(qū)動(dòng)程序灌闺。
- Gremlin.Net(.NET - C#) - 用于.NET的Gremlin Server驅(qū)動(dòng)程序艰争。
- gremlin-php(php) - 一個(gè)用于PHP的Gremlin Server驅(qū)動(dòng)程序。
- gremlin-python(python) - 用于Python的Gremlin Server驅(qū)動(dòng)程序桂对。
- gremlinrestclient(python) - 使用HTTP通過REST與Gremlin服務(wù)器通信的Python 2/3庫甩卓。
- Gremlinq(.NET) - 強(qiáng)類型服務(wù)器驅(qū)動(dòng)程序。
- python-gremlin-rest(python) - Gremlin Server的基于REST的客戶端蕉斜。
- reactive-gremlin(scala) - 一個(gè)Akka HTTP Websocket連接器逾柿。
- scalajs-gremlin-client(scala) - 一個(gè)Gremlin-Server客戶端,具有ad-hoc可擴(kuò)展宅此,反應(yīng)式机错,基于類型的API。
- ts-tinkerpop(typescript) - 通過node-java為Typescript應(yīng)用程序提供的輔助庫父腕。
供電
- exakat.io - PHP的靜態(tài)分析引擎弱匪,由Gremlin提供支持。
- Graphexp - 使用D3.js對Gremlin圖數(shù)據(jù)庫進(jìn)行交互式可視化璧亮。
- gremlin-ide - 使用React和Electron的支持Apache TinkerPop的數(shù)據(jù)庫的IDE萧诫。
- KeyLines - 用于構(gòu)建功能強(qiáng)大,自定義和可伸縮的圖形可視化應(yīng)用程序的JavaScript SDK杜顺。
- JUGRI - Jupyter Gremlin界面财搁。
- Linkurious - 一種基于瀏覽器的圖形可視化軟件,用于搜索躬络,探索和可視化連接數(shù)據(jù)尖奔。
- Pitney Bowes Spectrum數(shù)據(jù)中心模塊 - 使用Gremlin OLTP查詢基于Neo4j的主數(shù)據(jù)管理圖形數(shù)據(jù)庫。
- StackState - 監(jiān)控和AIOps,允許用戶使用Gremlin進(jìn)行分析功能提茁。
- Tom Sawyer Perspectives - 基于圖形的高級軟件淹禾,用于構(gòu)建企業(yè)級數(shù)據(jù)關(guān)系可視化和分析應(yīng)用程序。
JanusGraph簡介
JanusGraph是一個(gè)可擴(kuò)展的圖形數(shù)據(jù)庫茴扁,針對存儲(chǔ)和查詢包含分布在多機(jī)群集中的數(shù)千億個(gè)頂點(diǎn)和邊緣的圖形進(jìn)行了優(yōu)化铃岔。JanusGraph是一個(gè)事務(wù)數(shù)據(jù)庫,可以支持?jǐn)?shù)千個(gè)并發(fā)用戶實(shí)時(shí)執(zhí)行復(fù)雜的圖遍歷峭火。
此外毁习,JanusGraph還提供以下功能:
- 彈性和線性可擴(kuò)展性,適用于不斷增長的數(shù)據(jù)和用戶群卖丸。
- 用于性能和容錯(cuò)的數(shù)據(jù)分發(fā)和復(fù)制纺且。
- 多數(shù)據(jù)中心高可用性和熱備份。
- 支持ACID和 最終的一致性稍浆。
- 支持各種存儲(chǔ)后端:
- 通過與大數(shù)據(jù)平臺(tái)集成载碌,支持全球圖形數(shù)據(jù)分析,報(bào)告和ETL:
- 通過以下方式支持地理位置衅枫,數(shù)值范圍和全文搜索:
- 與Apache TinkerPop?圖形堆棧的本機(jī)集成: