- 时序数据库(存储时间序列数据,每条记录都带有时间戳。如存储从感应器采集到的数据):如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】
常用数据库有哪些(附带数据库排名)?
文末有福利领取哦~
👉一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉二、Python必备开发工具
👉三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉 四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
👉五、Python练习题
检查学习结果。
👉六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传