图数据库JanusGraph入门(一)JanusGraph初识-程序员宅基地

技术标签: 图数据库JanusGraph  big data  数据库  

前言

最近开始学习图数据库了,图数据库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基础

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46048515/article/details/120484173

智能推荐

CH340E USB转串口 IC测试电路-程序员宅基地

文章浏览阅读9.9k次,点赞5次,收藏38次。 ▌01 CH340E芯片手边拿到从龙邱公司寄送过来20颗 CH340E 的USB转UART的芯片。下面通过制作测试版验证它的功能。1.管脚功能定义▲ CH340管脚功能定义2.典型应用电路VCC可以使用+5V;VCC可以使用3.3V,此时V3,VCC应该短接在一起。▲ 典型应用电路3.CH340E下面给出 了CH340E的管脚功能定义。它的封装为MSOP-10。![](https://img-blog.csdnimg.cn/20210406103413169.pn._ch340e

Apache Commons CLI 开发工具(CommandLineParser、PosixParser)_apache posixparser-程序员宅基地

文章浏览阅读4.5k次。概念说明Apache Commons CLI 简介 Apache Commons CLI 是 Apache 下面的一个解析命令行输入的工具包,该工具包还提供了自动生成输出帮助文档的功能。 Apache Commons CLI 支持多种输入参数格式,主要支持的格式有以下几种: POSIX(Portable Operating System Interface o..._apache posixparser

关于汉字转拼音的Pinyin4j工具使用_pinyin4j-2.5.1.jar-程序员宅基地

文章浏览阅读1.1k次,点赞3次,收藏11次。关于汉字转拼音的Pinyin4j工具使用1 Pinyin4j的简介2 Pinyin4j的使用1 添加maven依赖2 添加汉字转拼音工具类关于汉字转为拼音的相关实现,通常使用Pinyin4j框架,整理一下Pinyin4j的使用官方文档:http://pinyin4j.sourceforge.net/1 Pinyin4j的简介Pinyin4j 是一个流行的Java开源类库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。支持功能:支持简体中文和繁体中文字符支持转换到汉语拼音,通用拼音_pinyin4j-2.5.1.jar

凌云光技术通过注册:拟募资15亿 税收优惠占利润比例高-程序员宅基地

文章浏览阅读88次。雷递网 雷建平 4月23日报道凌云光技术股份有限公司(简称:“凌云光”)日前通过注册,预计近期在科创板上市。凌云光计划募资15亿元。其中,6亿元用于工业人工智能太湖产业基地,2.9亿元用于工业人工智能算法与软件平台研发项目,2.1亿元用于先进光学与计算成像研发项目,4亿元用于科技与发展储备资金。税收优惠占利润比例高凌云光长期从事机器视觉及光通信业务,服务多个行业,目前战略..._税收优惠占利润总额的比例怎么算

maya表情blendshape_引用 【Maya】角色表情绑定-BlendShape的使用技巧-程序员宅基地

文章浏览阅读998次。WingOfStar☆ 的 【Maya】角色表情绑定-BlendShape的使用技巧角色表情的制作在Maya中,可以理解为模型点的位移。Maya中对于点的控制有多种方式:Springs(弹性约束),Particles(粒子控制),WeightedDeformer(变形权重),RigidSkins(刚直蒙皮),BlendShapeDeformers(融合变形),SmoothSkins(光滑蒙皮)等,..._maya blendshape拆左右

然而Tasking并没有什么用-程序员宅基地

文章浏览阅读1.8k次。在本次tw的训练营中,接触到了Tasking这个新的编程思维框架。于是顺着看完仝键老师《像机器一样思考》几篇文章后,顿时觉得打开了编程世界的新大门。主要的概括大概是这样的:分解问题找到子问题之间的关联(通过输入输出关联起来)找到问题的边界,明确假设与结果。所以我还是忍不住想把其中的一个例子copy过来:question:写一个函数,可以选出一个由数字组成的集合当中所..._tasking section

随便推点

python - 生成器和迭代器有这篇就够了_python中得生成器是每次只能返回一个结果还是可以返回两个结果-程序员宅基地

文章浏览阅读176次。python 生成器和迭代器有这篇就够了转载:https://www.cnblogs.com/wj-1314/p/8490822.html  本节主要记录一下列表生成式,生成器和迭代器的知识点  列表生成器  首先举个例子现在有个需求,看列表 [0,1,2,3,4,5,6,7,8,9],要求你把列表里面的每个值加1,你怎么实现呢?方法一(简单): 1 2..._python中得生成器是每次只能返回一个结果还是可以返回两个结果

23种设计模式之(十九)备忘录模式(python_c++实现)_备忘录模式 python实现-程序员宅基地

文章浏览阅读179次。23种设计模式之(十九)备忘录模式(Memento)本文主要介绍23种设计模式之备忘录模式,附详细python/c++示例代码。概念应用场景注意事项代码示例总结代码链接备忘录模式(Memento)概念备忘录模式,是行为模式之一,它的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。GoF对备忘录模式的定义是:在不破坏封装性的前提下..._备忘录模式 python实现

MPM-B1151T-MJ72AA AB罗克韦尔伺服电机-程序员宅基地

文章浏览阅读627次,点赞25次,收藏15次。具体到MPM-B1151T-MJ72AA这个型号,其中的“MPM”可能代表电机类型或系列,“B1151T”可能是表示电机的规格或参数,“MJ72AA”可能是指特定的配置或编码。MPM-B1151T-MJ72AA 伺服电机通常具有高精度、高响应速度、高可靠性等特点,适用于需要精确控制位置、速度和加速度的工业自动化应用中。如果你正在考虑使用MPM-B1151T-MJ72AA伺服电机,建议根据实际应用需求,结合罗克韦尔自动化的产品资料和技术支持,进行详细的评估和选择。施耐德SCHNEIDER。

2-8 跨平台client【linux下client】_client.linux-1.1.so-程序员宅基地

文章浏览阅读479次。2-8 跨平台client文章目录2-8 跨平台client0-前言1-client代码0-前言【C++百万并发网络通信】系列是跟着【张远东】老师的视频来复现的希望能通过博客的方式不断坚持学习,也希望偶然间看到这篇博客的你也能一起加油!笔记目录:【C++百万并发网络通信-笔记目录】1-client代码#ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #define _WINSOCK_DEPRECATED_NO_WARNINGS #i_client.linux-1.1.so

语音转文字工具哪款好用?助力打工人摆脱会议记录的困扰-程序员宅基地

文章浏览阅读470次,点赞13次,收藏15次。同时,其简洁的界面和流畅的操作流程也给用户带来了良好的体验。该软件界面设计独特且富有创意,同时提供了语音识别和语音合成的双向功能,并且具有多语言支持的特点,为用户带来了一种全新的使用体验。软件支持实时语音转写功能,适合个人用户进行简单的语音记录,其准确性能满足大家的基本转录需求。该软件界面美观大方,同时提供了丰富的转写选项和定制化设置,能够满足人们个性化的需求。软件提供了详细的编辑工具,支持导出多种格式,非常适合在一些较为专业的场景下使用。这款软件的转写准确率较高,尤其是在处理清晰、标准的语音时。

java中自定义封装json以及和对象的转换_@result json javatype java.util.list-程序员宅基地

文章浏览阅读1.2w次,点赞3次,收藏11次。首先创建服务端返回的数据类型对象:package com.studio.pojo.util;import org.codehaus.jackson.map.ObjectMapper;public class PlanResult { //定义jackson对象 private static final ObjectMapper MAPPER = new ObjectM_@result json javatype java.util.list

推荐文章

热门文章

相关标签