主頁 > 軟體設計 > 圖資料庫JanusGraph入門(一)JanusGraph初識

圖資料庫JanusGraph入門(一)JanusGraph初識

2021-09-27 09:46:42 軟體設計

JanusGraph初識

    • 前言
    • 一、 圖資料庫
      • 圖資料庫是什么?
      • 圖資料庫的作用?
      • 圖資料庫應用背景
    • 二、JanusGraph簡介
      • JanusGraph簡介
      • JanusGraph的發展歷史
      • JanusGraph的架構圖
    • 二、 JanusGraph的優勢及特點
      • JanusGraph的優勢
      • JanusGraph的特點
    • 三、核心概念
    • 四、應用使用JanusGraph的方法
    • 參考【7】

前言

最近開始學習圖資料庫了,圖資料庫JanusGraph(janus讀音類:J+nes, jay 而不是je-nes),JanusGraph是一個分布式圖資料庫引擎,具有以下特性:

  • 支持百億級別的頂點&邊的存盤及查詢
  • 本身不負責存盤,而是借助其他存盤和索引組件配合達到圖形資料的查詢
  • 支持事務,可并發執行復雜圖操作
    在這里插入圖片描述

JanusGraph是一個可擴展的圖資料庫,可以把包含數千億個頂點和邊的圖存盤在多機集群上,它支持事務,支持數千用戶實時、并發訪問存盤在其中的圖,(JanusGraph is a scalable graph database optimized for storing and querying graphs containing hundreds of billions of vertices and edges distributed across a multi-machine cluster. JanusGraph is a transactional database that can support thousands of concurrent users executing complex graph traversals in real time.)
在這里插入圖片描述

一、 圖資料庫

圖資料庫是什么?

💬圖資料庫就是用來存盤圖結構的資料庫,圖資料庫也是屬于NoSQL一種,

-NoSQL資料庫大致可以分為以下幾類:

  • 鍵值對(key-value)資料庫(遵循“鍵——值”模型,是最簡單的資料庫管理系統):如Memcache、Redis、Berkeley DB、SQLite…
  • 列簇式資料庫(按照列(由“鍵——值”對組成的串列)在資料檔案中記錄資料,以獲得更好的請求及遍歷效率,一行中的列數允許動態變化,且列的數目可達數百萬,每條記錄的關鍵碼不同,支持多值列,):如HBase、hive、sybase IQ/SAPIQ、GreenPlum…
  • 檔案型資料庫(無固定結構,不同的記錄允許有不同的列數和列型別,列允許包含多值,記錄允許嵌套):如Mongodb、Couchbase、Amazon DynamoDB、CouchDB、MarkLogic…
  • 圖資料庫(以“點——邊”組成的網路(圖結構)來存盤資料):如Neo4j、JanusGraph、OrientDB、Titan、Virtuoso、ArangoDB …
  • 搜索引擎(存盤的目的是為了搜索,主要功能是搜索):如Elasticsearch、Solr、Splunk、MarkLogic、Sphinx…
  • 物件資料庫(受面向物件編程語言的啟發,把資料定義為物件并存盤在資料庫中,包括物件之問的關系,如繼承):如Caché、db4o、Versant Object Database、ObjcctStore、Matisse …
  • 時序資料庫(存盤時間序列資料,每條記錄都帶有時間戳,如存盤從感應器采集到的資料):如InfluxDB、RRDtool、Graphite、OpcnTSDB、Kdb+ …

圖資料庫的作用?

💬圖資料庫主要處理的是拓撲關系的圖,善于處理大量、復雜、互聯、多變的網狀海量資料,其效率遠遠高于傳統的關系型資料庫,就比如下面的圖:
在這里插入圖片描述

圖資料庫應用背景

💬圖資料庫所提供的關聯分析能力是金融反欺詐、威脅情報、黑產打擊和案件溯源等業務所需要的核心能力,圖資料庫的需求非常多,例如金融安全業務希望使用圖資料庫進行金融反欺詐關聯分析、威脅情報業務希望通過圖資料庫進行黑產研究和情報分析、還有社交關系分析、知識圖譜等需求場景,

二、JanusGraph簡介

JanusGraph簡介

💬JanusGraph是一個圖形資料庫引擎,其本身專注于緊湊圖序列化、豐富圖資料建模、高效的查詢執行,另外,JanusGraph利用Hadoop進行圖分析和批處理圖處理,JanusGraph為資料持久性、資料索引、客戶端訪問實作了強大的模塊化介面,JanusGraph的模塊化體系結構使其可以與多種存盤、索引、客戶端技術進行互操作,它還簡化了擴展JanusGraph以支持新的程序,

JanusGraph可以適配多種資料庫和索引,JanusGraph默認支持以下的適配,但是JanusGraph的模塊化架構使得也支持第三方的配接器,
資料庫

  • Apache Cassandra
  • Apache HBase
  • Oracle Berkeley DB Java版

索引

  • Elasticsearch
  • Apache Solr
  • Apache Lucene

JanusGraph的發展歷史

💬JanusGraph是2016年12月27日從Titan fork出來的一個分支,之后TiTan的開發團隊在2017年陸續發了0.1.0rc1、0.1.0rc2、0.1.1、0.2.0等四個版本,最新的版本是2017年10月12日, titan是從2012年開始開發,到2016年停止維護的一個分布式圖資料庫,最初在2012年啟動titan專案的公司是Aurelius,2015年此公司被 DataStax(DataStax是開發apache Cassandra 的公司)收購,DataStax公司吸收了TiTan的圖存盤能力,形成了自己的商業產品DataStax Enterprise Graph,

TiTan開發者們希望把TitTan放到Apache Software Foundation下,不過,DataStax不愿意這樣做(可能考慮到要保護自己的商業產品DataStax Enterprise Graph的技術優勢吧,其實這點優勢是從Titan來的),而且自從2015年9月DataStax收購了Titan的母公司后,TiTan一直處于停滯狀態(應該是DataStax收購之后,忙于推出自己的商業產品DataStax Enterprise Graph,忙于整合Titan進自己的商業產品吧,可是Titan本身沒有得到發展),鑒于此,2016年6月,TiTan的開發者們fork了一個TiTan的分支(因為Titan已經屬于DataStax了,所以他們必須另外弄一個商標),重命名為JanusGraph,并將其置于Linux Software Foundation下,

2017年4月6日發布了第一個版本0.1.0-rc1,目前最新版本是2017年10月12日發布的0.2.0版,

JanusGraph專案啟動的初衷是“通過為其增加新功能、改善性能和擴展性、增加后端存盤系統來增強分布式圖系統的功能,從而振興分布式圖系統的開發”,JanusGraph從Apahce TinkerPop中吸收了對屬性圖模型(Property Graph Model)的支持和對屬性圖模型進行遍歷的Gremlin遍歷語言,(“reinvigorate development of the distributed graph system to add new functionality, improve performance and scalability, and maintain a variety of storage backends,JanusGraph incorporates support for the property graph model with the open source graph computing framework Apache TinkerPop and its Gremlin graph traversal language”.)

JanusGraph的架構圖

💬它的整體架構,大致分為三部分:

  • 圖計算框架(TinkerPop)
  • 資料存盤(Cassandra,HBase,BerkeleyDB)
  • 索引存盤(Elasticsearch,Solr,Lucene)

JanusGraph從其框架上來說,是起到一個橋梁的作用,將各種開源的軟體連接到一起,形成一個大型圖資料庫
在這里插入圖片描述

二、 JanusGraph的優勢及特點

JanusGraph的優勢

💬來源General JanusGraph Benefits

  • Support for very large graphs. JanusGraph graphs scale with the
    number of machines in the cluster.
  • Support for very many concurrent transactions and operational graph
    processing. JanusGraph’s transactional capacity scales with the
    number of machines in the cluster and answers complex traversal
    queries on huge graphs in milliseconds.
  • Support for global graph analytics and batch graph processing through
    the Hadoop framework.
  • Support for geo, numeric range, and full text search for vertices and
    edges on very large graphs.
  • Native support for the popular property graph data model exposed by
    Apache TinkerPop.
  • Native support for the graph traversal language Gremlin.
  • Numerous graph-level configurations provide knobs for tuning
    performance.
  • Vertex-centric indices provide vertex-level querying to alleviate
    issues with the infamous super node problem.
  • Provides an optimized disk representation to allow for efficient use
    of storage and speed of access.
  • Open source under the liberal Apache 2 license.

百度翻譯版:

  • 支持非常大的圖形,JanusGraph圖隨集群中的機器數量而擴展,
  • 支持很多并發事務和操作圖處理,JanusGraph的事務處理能力隨著集群中機器的數量而擴展,并在毫秒內回答大型圖上的復雜遍歷查詢,
  • 通過Hadoop框架支持全域圖分析和批處理圖處理,
  • 支持對超大圖形上的頂點和邊進行地理、數字范圍和全文搜索,
  • 對Apache TinkerPop公開的流行屬性圖資料模型的本機支持,
  • 對圖遍歷語言Gremlin 的本機支持,
  • 許多圖形級配置提供了用于調整性能的旋鈕,
  • 以頂點為中心的索引提供頂點級查詢,以緩解臭名昭著的超級節點問題,
  • 提供優化的磁盤表示形式,以便高效使用存盤和加快訪問速度,
  • 開放源代碼,使用Apache2許可證,

JanusGraph的特點

  • 后端資料存盤可以由多種選擇:Hbase、Cassandra、Google Bigtable等
  • 滿足實時的復雜圖遍歷、滿足ACID一致性的OLTP
  • 可以利用外部如ElasticSearch、Solr、Lucene軟體,實作全量檔案的搜索功能
  • 基于spark+hadoop的OLAP
  • 使用Gremlin語言查詢;與Apache TinkerPop 專案高度兼容

OLTP

  • OLTP (Online Transactional Processing,聯機事務處理)是專注于面向事務的任務的一類資料處理,通常涉及在資料庫中插入,更新或洗掉少量資料,主要是處理大量用戶下的大量事務,
  • OLTP事務實體: 在線銀行、網上買一本書、預訂一張機票、發送一個文本訊息、電話推銷員輸入電話調查結果、呼叫中心員工查看和更新客戶的詳細資訊

ACID

  • ACID,指資料庫事務正確執行的四個基本要素的縮寫,包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability),一個支持事務的資料庫必須要支持這幾個特性,否則無法保證資料的正確性,

OLAP

  • 聯機實時分析(OnlineAnalytical Processing, OLAP技術是快速回應多維分(Multidimensionalanalysis, MDA)的一種解決方案,它使分析人員能夠迅速、一致、互動地從各個方面觀察資訊,以達到深入理解資料的目的,

三、核心概念

💬JanusGraph有如下核心概念:

  • Vertex:圖中的點
  • Edge:圖中的邊
  • Vertex Label:節點型別,每個節點只能有一個Label(不同于Neo4j)
  • Edge Label:邊型別
  • Property Key:屬性名稱(屬性名稱和邊型別不能重復)
  • Property:屬性,key-value形式,janusgraph中屬性有Cardinality的概念,包括SINGLE、LIST、SET三種,即對于一個屬性key可以有單個值、串列值、集合值

四、應用使用JanusGraph的方法

(1)第一種方式:可以把JanusGraph嵌入到應用程式中去,JanusGraph和應用程式處在同一個JVM中,應用程式中的客戶代碼(相對JanusGraph來說是客戶)直接呼叫Gremlin去查詢JanusGraph中存盤的圖,這種情況下外部存盤系統可以是本地的,也可以處在遠程,

(2)第二種方式:應用程式和JanusGraph處在兩個不同JVM中,應用通過給JanusGraph提交Gremlin查詢給GremlinServer,來使用JanusGraph,因為JanusGraph原生是支持Gremlin Server的,(Gremlin Server是Apache Tinkerpop中的一個組件),

在這里插入圖片描述

參考【7】

常用資料庫有哪些(附帶資料庫排名)?
JanusGraph
JanusGraph(一)–簡介
JanusGraph:圖資料庫系統簡介
JanusGraph學習之路:(1)概述
什么是OLTP?
OLAP基礎

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/303345.html

標籤:其他

上一篇:Python中的字典介紹

下一篇:[資料結構]樹、堆、二叉樹內容的詳解與分析

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more