点击▲关注 “爪哇笔记”   给公众号标星置顶

更多摄影技巧 第一时间直达

随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,亟需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。世界上很多著名的公司都在使用图数据库。比如:

  • 社交领域 :Facebook, Twitter,Linkedin用它来管理社交关系,实现好友推荐

  • 零售领域 :eBay,沃尔玛使用它实现商品实时推荐,给买家更好的购物体验

  • 金融领域 :摩根大通,花旗和瑞银等银行在用图数据库做风控处理

  • 汽车制造领域 :沃尔沃,戴姆勒和丰田等顶级汽车制造商依靠图数据库推动创新制造解决方案

  • 电信领域 :Verizon, Orange和AT&T 等电信公司依靠图数据库来管理网络,控制访问并支持客户360

  • 酒店领域 :万豪和雅高酒店等顶级酒店公司依使用图数据库来管理复杂且快速变化的库存

既然图数据库应用这么广泛,越来越多的企业和开发者开始使用它,那它究竟什么过人之处呢,下面我们来揭开它的神秘面纱。

1. Why Graph DB?

学过数据结构这么课程的同学脑海中应该或多或少有 的概念。

1.1 什么是图?

图由两个元素组成:节点和 关系。每个节点代表一个实体(人,地,事物,类别或其他数据),每个关系代表两个节点的关联方式。这种通用结构可以对各种场景进行建模 -
从道路系统到设备网络,到人口的病史或由关系定义的任何其他事物。

1.2 什么是图数据库?

图数据库(Graph database)并非指存储图片的数据库,而是以 这种数据结构存储和查询数据。图形数据库是一种在线数据库管理系统,具有处理图形数据模型的创建,读取,更新和删除(CRUD)操作。与其他数据库不同, 关系在图数据库中占首要地位。这意味着应用程序不必使用外键或带外处理(如MapReduce)来推断数据连接。与关系数据库或其他NoSQL数据库相比,图数据库的数据模型也更加简单,更具表现力。图形数据库是为与事务(OLTP)系统一起使用而构建的,并且在设计时考虑了事务完整性和操作可用性。

1.3 两个重要属性

根据存储和处理模型不同,市面上图数据库也有一些区分。比如: Neo4J就是属于原生图数据库,它使用的后端存储是专门为Neo4J这种图数据库定制和优化的,理论上说能更有利于发挥图数据库的性能。而 JanusGraph不是原生图数据库,而将数据存储在其他系统上,比如Hbase。

① 图存储

一些图数据库使用 原生图存储,这类存储是经过优化的,并且是专门为了存储和管理图而设计的。并不是所有图数据库都是使用原生图存储,也有一些图数据库将图数据序列化,然后保存到关系型数据库或者面向对象数据库,或其他通用数据存储中。

② 图处理引擎

原生图处理(也称为 无索引邻接)是处理图数据的最有效方法,因为连接的节点在数据库中物理地 指向
彼此。非本机图处理使用其他方法来处理CRUD操作。

2. 对比

2.1 与NoSQL数据库对比

NoSQL数据库大致可以分为四类:

  • 键值(key/value)数据库

  • 列存储数据库

  • 文档型数据库

  • 图数据库

NoSQL数据库

2.2 与关系型数据库对比

关系型数据库实际上是不擅长处理关系的。很多场景下,你的业务需求完全超出了当前的数据库架构。举个栗子:假设某关系型数据库中有这么几张用户、订单、商品表:

image

当我们要查询:“用户购买了那些商品?” 或者 “该商品有哪些客户购买过?” 需要开发人员JOIN几张表,效率非常低下。而“购买该产品的客户还购买了哪些商品?”类似的查询几乎不可能实现。关系查询性能对比  在数据关系中心,图形数据库在查询速度方面非常高效,即使对于深度和复杂的查询也是如此。在《Neo4j in Action》这本书中,作者在关系型数据库  
和图数据库(Neo4j)之间进行了实验。

image

他们的实验试图在一个社交网络里找到最大深度为5的朋友的朋友。他们的数据集包括100万人,每人约有50个朋友。实验结果如下:


在深度为2时(即朋友的朋友),两种数据库性能相差不是很明显;深度为3时(即朋友的朋友的朋友),很明显,关系型数据库的响应时间30s,已经变得不可接受了;深度到4时,关系数据库需要近半个小时才能返回结果,使其无法应用于在线系统;深度到5时,关系型数据库已经无法完成查询。而对于图数据库Neo4J,深度从3到5,其响应时间均在3秒以内。可以看出,对于图数据库来说,数据量越大,越复杂的关联查询,约有利于体现其优势。从深度为4/5的查询结果我们可以看出,图数据库返回了整个社交网络一半以上的人数。

3. Neo4J 和 JanuasGraph

根据DB-Engines最新发布的图数据库排名,Neo4J仍然大幅领先排在第一位:

DB-Engines 19年2月图数据库排名

Neo4J

Neo4J

Neo4J是由Java实现的开源图数据库。自2003年开始开发,直到2007年正式发布第一版,并托管于GitHub上。Neo4J支持ACID,集群、备份和故障转移。目前Neo4J最新版本为3.5,分为社区版和企业版,社区版只支持单机部署,功能受限。企业版支持主从复制和读写分离,包含可视化管理工具。

JanusGraph

JanusGraph

JanusGraph是一个Linux基金会下的开源分布式图数据库
。JanusGraph提供Apache2.0软件许可证。该项目由IBM、Google、Hortonworks支持。JanusGraph是由TitanDB
图数据库修改而来,TitanDB从2012年开始开发。目前最新版本为0.3.1。JanusGraph支持多种储存后端(包括Apache Cassandra、Apache HBase、Bigtable、Berkeley
DB)。JanusGraph的可扩展性取决于与JanusGraph一起使用的基础技术。例如,通过使用Apache
Cassandra作为存储后端,可以将JanusGraph简单地扩展到多个数据中心。JanusGraph通过与大数据平台(Apache Spark,Apache Giraph,Apache
Hadoop)集成,支持全局图数据的分析、报告和ETL。JanusGraph通过外部索引存储(Elasticsearch,Solr,Lucene)支持地理、数字范围和全文搜索。

3.1 标记属性图模型

标记属性图模型

(1)节点

  • 节点是主要的数据元素

  • 节点通过 关系 连接到其他节点

  • 节点可以具有一个或多个 属性 (即,存储为键/值对的属性)

  • 节点有一个或多个 标签 ,用于描述其在图表中的作用

  • 示例:人员节点与Car节点

(2)关系

  • 关系连接两个节点

  • 关系是方向性的

  • 节点 可以有多个甚至递归的关系

  • 关系可以有一个或多个属性(即存储为键/值对的属性)

(3)属性

  • 属性是命名值,其中名称(或键)是字符串

  • 属性可以被索引和约束

  • 可以从多个属性创建复合索引

(4)标签

  • 标签用于将 节点 分组

  • 一个节点可以具有多个标签

  • 对标签进行索引以加速在图中查找节点

  • 本机标签索引针对速度进行了优化

4. Cypher图查询语言

Cypher是Neo4j的图形查询语言,允许用户存储和检索图形数据库中的数据。举例,我们要查找Joe的所以二度好友:

image

查询语句如下:

    MATCH       (person:Person)-[:KNOWS]-(friend:Person)-[:KNOWS]-      (foaf:Person)WHERE       person.name = "Joe"AND NOT (person)-[:KNOWS]-(foaf)RETURN      foaf        复制代码

Joe认识Sally,Sally认识Anna。Bob被排除在结果之外,因为除了通过Sally成为二级朋友之外,他还是一级朋友。

5. 小结

图数据库应对的是当今一个宏观的商业世界的大趋势:凭借高度关联、复杂的动态数据,获得洞察力和竞争优势。国内越来越多的公司开始进入图数据库领域,研发自己的图数据库系统。对于任何达到一定规模或价值的数据,图数据库都是呈现和查询这些关系数据的最好方式。而理解和分析这些图的能力将成为企业未来最核心的竞争力。来源:cnblogs.com/mantoudev/p/10414495.html  作者:mantou叔叔肝了一夜,撸了一个请假工作流模块分享六个经典的 SpringBoot 开源项目肝了一夜,撸了一个登录智能人机验证码功能一个基于SpringBoot的文档上传、转换、预览项目一套通用的后台管理系统,赚钱就靠它了!SpringBoot 开发案例之接入腾讯云短信妹子1. 首先扫描下方二维码2. 后台回复「全栈」即可获取你点的每个在看,我都认真当成了喜欢

visio2016 数据库模型图_越来越火的图数据库究竟是什么?相关推荐

  1. 后端返回数据带有标签_越来越火的图数据库究竟是什么?是否在制造企业可以应用...

    随着社交.电商.金融.零售.物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,传统数据库很难处理关系运算.大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,亟需一种支持海量复杂数 ...

  2. python_绘制玫瑰图_南丁格尔图

    python_绘制玫瑰图_南丁格尔图 通过加载execel文件绘制 通过直接造数看这: https://blog.csdn.net/kaikai_sk/article/details/10495430 ...

  3. python画环形图_用Python把图做的好看点:用Matplotlib画个环形图

    P老板:小Lo啊,你觉得这几个图好看吗 我:好看,好看 P老板:我也觉得,这个月的月报,就用这个把,你给我几个,我看看 我:..... 于是乎,我们今天的目标是什么!!! 画个环形图!!! 今天,我们 ...

  4. ui九宫格切图_【九宫切图】什么是九宫绘图,九宫格绘法

    九宫切图在控件美化的时候会经常的用到 比如: 20140630220626_56850.png (3.13 KB, 下载次数: 42) [九宫切图]什么是九宫绘图,九宫格绘法 2014-7-21 11 ...

  5. echarts镭射图_附录:ECharts图类型-统计图

    EChars图属于动态统计图,具有动画效果,并提供工具条,可对统计图进行各种操作:添加辅助线.切换统计图.查看数据视图.保存为图片等. EChars统计图不支持打印导出. 柱图 柱图用来显示各项之间的 ...

  6. arm mali 天梯图_麒麟980天梯图性能排行榜

    在8月31日晚间消息,华为在德国正式发布了全新的移动平台---麒麟980.这款处理器是目前麒麟平台规格最高的一款旗舰Soc,拥有非常强悍的性能,更好的功耗控制和更强的相机模组支持,还有更好的AI性能. ...

  7. 关于主机的思维导图_计算机网络思维导图(零基础--思维导图详细版本及知识点)...

    计算机网络思维导图(零基础--思维导图详细版本及知识点)_gl620321的博客-CSDN博客​blog.csdn.net第一章 计算机网络概述 1.计算机网络向用户提供的最重要的功能分别是(连通性) ...

  8. mysql 11关系图_用实体关系图进行数据库建模(PD11+Visio)

    用实体关系图进行数据库建模 (ccidnet阿良@仙人掌工作室 2001年08月14日) 一.概述 很可能你现在正在规划一个数据库驱动的网站:而且几乎可以肯定的是,你一定已经浏览过数据库驱动的网站.过 ...

  9. 科普| 越来越火的图数据库究竟是什么?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:mantou叔叔 cnblogs.com/mantoudev ...

  10. cad新手必练300图_[CAD]平面练习图,CAD新手练技术练速度的好去处

    作为CAD初学者来讲,要多画图,多画图,唯有画图多了,才能掌握CAD软件的精髓.虽然说多画图,多画图,但是不能一根筋的画图,要掌握一些技巧画图,比如使用快捷键画图,多结合一些实际的CAD技巧画图,这样 ...

最新文章

  1. e - bargain cf_cf诗意情侣名字大全最新_cf诗意情侣名字大全2020
  2. java定时器无法自动注入的问题解析(原来Spring定时器可以这样注入service)
  3. 【完结】总结12大CNN主流模型架构设计思想
  4. MySQL--Delete语句别名+LIMIT
  5. [css] 用css实现一个等腰三角形的小图标
  6. python实现目标识别_Python10行代码实现目标检测
  7. 指定跳转_炸裂!PPT能一键统一色彩,还能一键跳转到指定颜色
  8. QT中QWidget、QDialog及QMainWindow的区别
  9. Ubuntu中zabbix 4.2.6监控postgresql数据库
  10. matlab高数数学报告,高等数学实验报告matlab参考答案
  11. 好用靠谱的人事管理软件推荐?
  12. 为什么mydock会经常崩溃_MyDock
  13. netty 高匿ip检测_检测代理IP匿名程度的方法
  14. linux gz的如何解压缩,linux gz 解压缩
  15. Self-Supervised Gait Encoding with Locality-Aware Attention for Person Re-Identification阅读
  16. 发明专利的权利要求书怎么写?
  17. spring事务管理配置
  18. 原码,反码,补码的深入理解与原理
  19. 雄关漫道真如铁,而今迈步从头越 | 挥别2022,再战2023!
  20. 如何设置使用电脑默认浏览器打开微信中发的链接

热门文章

  1. Python-Django毕业设计老薛男生服装网(程序+LW)
  2. (摘自CSDN的koy0755)一步一步实现数据库到类的自动化映射(二) 类层次的设计 类的实现...
  3. 计算机网络自顶向下 概念填空整理(完整)
  4. 数学建模技巧总结(一)
  5. 如何在 oracle 集群环境下修改私网信息 (文档 ID 2103317.1)
  6. 构建数字高程模型的算法——不规则三角网(TIN, Triangulated Irregular Network)
  7. 新手学习电脑知识的一些方法 oldtimeblog
  8. 数据结构 排序 思考题 3
  9. e盘是否具有读写权限_文件权限管理
  10. 标准88 钢琴键代码 html+css+js