点击上方“方志朋”,选择“设为星标”

回复”666“获取新整理的面试文章

作者:mantou叔叔

cnblogs.com/mantoudev/p/10414495.html

随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,传统数据库很难处理关系运算。

大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,亟需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。

世界上很多著名的公司都在使用图数据库。比如:

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

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

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

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

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

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

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

Why Graph DB?

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

什么是图?

图由两个元素组成:节点 和 关系 。

每个节点代表一个实体(人,地,事物,类别或其他数据),每个关系代表两个节点的关联方式。

这种通用结构可以对各种场景进行建模 - 从道路系统到设备网络,到人口的病史或由关系定义的任何其他事物。

什么是图数据库?

`图数据库(Graph database)`` 并非指存储图片的数据库,而是以图这种数据结构存储和查询数据。

图形数据库是一种在线数据库管理系统,具有处理图形数据模型的创建,读取,更新和删除(CRUD)操作。

与其他数据库不同, 关系在图数据库中占首要地位。这意味着应用程序不必使用外键或带外处理(如MapReduce)来推断数据连接。

与关系数据库或其他NoSQL数据库相比,图数据库的数据模型也更加简单,更具表现力。

图形数据库是为与事务(OLTP)系统一起使用而构建的,并且在设计时考虑了事务完整性和操作可用性。

两个重要属性

根据存储和处理模型不同,市面上图数据库也有一些区分。

比如:

Neo4J 就是属于原生图数据库,它使用的后端存储是专门为Neo4J这种图数据库定制和优化的,理论上说能更有利于发挥图数据库的性能。

而 JanusGraph 不是原生图数据库,而将数据存储在其他系统上,比如Hbase。

① 图存储

一些图数据库使用 原生图存储 ,这类存储是经过优化的,并且是专门为了存储和管理图而设计的。

并不是所有图数据库都是使用原生图存储,也有一些图数据库将图数据序列化,然后保存到关系型数据库或者面向对象数据库,或其他通用数据存储中。

② 图处理引擎

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

对比

与NoSQL数据库对比

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

  • 键值(key/value)数据库

  • 列存储数据库

  • 文档型数据库

  • 图数据库

与关系型数据库对比

关系型数据库实际上是不擅长处理关系的。很多场景下,你的业务需求完全超出了当前的数据库架构。

举个栗子:假设某关系型数据库中有这么几张用户、订单、商品表:

当我们要查询:“用户购买了那些商品?” 或者 “该商品有哪些客户购买过?” 需要开发人员JOIN几张表,效率非常低下。

而“购买该产品的客户还购买了哪些商品?”类似的查询几乎不可能实现。

关系查询性能对比

在数据关系中心,图形数据库在查询速度方面非常高效,即使对于深度和复杂的查询也是如此。在《Neo4j in Action》这本书中,作者在关系型数据库和图数据库(Neo4j)之间进行了实验。

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

实验结果如下:

在深度为2时(即朋友的朋友),两种数据库性能相差不是很明显;深度为3时(即朋友的朋友的朋友),很明显,关系型数据库的响应时间30s,已经变得不可接受了;深度到4时,关系数据库需要近半个小时才能返回结果,使其无法应用于在线系统;深度到5时,关系型数据库已经无法完成查询。

而对于图数据库Neo4J,深度从3到5,其响应时间均在3秒以内。

可以看出,对于图数据库来说,数据量越大,越复杂的关联查询,约有利于体现其优势。从深度为4/5的查询结果我们可以看出,图数据库返回了整个社交网络一半以上的人数。

Neo4J 和 JanuasGraph

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

Neo4J

Neo4J是由Java实现的开源图数据库。自2003年开始开发,直到2007年正式发布第一版,并托管于GitHub上。

Neo4J支持ACID,集群、备份和故障转移。目前Neo4J最新版本为3.5,分为社区版和企业版,社区版只支持单机部署,功能受限。企业版支持主从复制和读写分离,包含可视化管理工具。

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)支持地理、数字范围和全文搜索。

标记属性图模型

(1)节点

节点是主要的数据元素

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

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

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

示例:人员节点与Car节点

(2)关系

关系连接两个节点 关系是方向性的 节点 可以有多个甚至递归的关系 关系可以有一个或多个属性(即存储为键/值对的属性)

(3)属性

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

属性可以被索引和约束

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

(4)标签

标签用于将 节点 分组

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

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

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

Cypher图查询语言

Cypher是Neo4j的图形查询语言,允许用户存储和检索图形数据库中的数据。

举例,我们要查找Joe的所以二度好友:

查询语句如下:

MATCH(person:Person)-[:KNOWS]-(friend:Person)-[:KNOWS]-(foaf:Person)
WHEREperson.name = "Joe"AND NOT (person)-[:KNOWS]-(foaf)
RETURNfoaf

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

小结

图数据库应对的是当今一个宏观的商业世界的大趋势:凭借高度关联、复杂的动态数据,获得洞察力和竞争优势。国内越来越多的公司开始进入图数据库领域,研发自己的图数据库系统。

对于任何达到一定规模或价值的数据,图数据库都是呈现和查询这些关系数据的最好方式。而理解和分析这些图的能力将成为企业未来最核心的竞争力。

热门内容:分布式锁用 Redis 还是 Zookeeper?
写那么多年Java,还不知道啥是Java agent 的必须看一下!
科普|什么是负载均衡(Load balancing)干掉GuavaCache:Caffeine才是本地缓存的王
稳~阿里程序员常用的 15 款开发者工具四连问:API 接口应该如何设计?如何保证安全?如何签名?如何防重?最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ♡

科普| 越来越火的图数据库究竟是什么?相关推荐

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

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

  2. 人人都在谈的图数据库到底是个啥?

    摘要: 图数据库,如果是刚接触的人,可能会被其字面意思所误导.其实,图数据库并不是指存储图片.图像的数据库,而是指存储图这种数据结构的数据库.那么图又是什么呢? 本文分享自华为云社区<图数据库到 ...

  3. 白话大数据 | 关于图数据库,没有比这篇更通俗易懂的啦

    近年来图数据库越来越火,讨论的话题也越来越多,但很多小伙伴还不清楚图数据库到底是个啥?和传统关系型数据库有什么区别?具体又有什么特点?那今天小编将通过有个男人叫小帅的故事来给大家通俗易懂地介绍下什么是 ...

  4. java 连接janusgraph_基于JanusGraph的大数据图数据库

    导读 知识图谱是近来很火的概念,很多领域都希望能用知识图谱解决一些问题.在零售领域其实也有使用知识图谱的场景,比如阿里使用知识图谱进行商品智能导购以及商品"巡检",而我想试验着把知 ...

  5. 欢迎来到图数据库的世界——《图数据库实战》中文版上架了!

    叶伟民和我翻译的<图数据库实战>(Graph Databases In Action)中文版上架了,这本书将带你进入图数据库这个全新的世界. 当年译者叶伟民向美国移民局证明他是美国本土难以 ...

  6. 科普| 什么是图数据库?

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

  7. 究竟什么是图数据库,它有哪些应用场景?

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

  8. 分布式图数据库在贝壳的应用实践

    导读:你想知道百亿级图谱如何实现毫秒级查询吗?社区众多的图数据库中如何才能挑选到一款适合实际应用场景的图数据库呢?贝壳找房的行业图谱480亿量级的三元组究竟是如何存储的呢?本文将带你探索上述问题并从中 ...

  9. 中秋邀请共赏图数据库-蚂蚁集团图数据TuGraph 正式开源

    目录 前言 1.五道口+蚂蚁集团的系统长什么样 2.性能拉满,能抗能打 优点: 缺点: 一.TuGraph,比关系数据库更懂关系 1.更懂关系的图数据TuGraph 2.图数据发展的三个阶段 2.1第 ...

最新文章

  1. 9月8日凌晨,字节跳动全员收到邮件!因为这件事,所有人多发半个月工资!字节沸腾!网友酸了!...
  2. Win8 x64 + Office Word 2013 x64 无法自动加载 Endnote X6 的解决方案
  3. RH124 章1 访问命令行 笔记
  4. mysql 获取刚插入行id汇总
  5. 阿伏法机器人_知识与技能 (1)知道机器人的相关知识. (2)理解模块机器人的构成以及各个模块的作用. (3)知道模块电路及其组合方式. (4)初步学会组装和操作模块机器人....
  6. Php通过gsoap调用c++ websevice
  7. 虚拟机查看cpu型号_CentOS7安装KVM虚拟机
  8. python中浮点型占几个字节_Python基本数据类型
  9. 珠海空号检测的运行原理
  10. Python新手到熟练的百天之路
  11. Word 标题前面的黑点
  12. 愚人节里的巧合与必然:BAT等亮出的AI招牌故事
  13. “New”一个完美对象,再来好好面向对象
  14. Android全面屏最大纵横比适配
  15. vs各个版本的编译器号对应的vs版本号
  16. flutter 获取定位_Flutter 获取定位
  17. 【Reproduced】C language program of MODBUS RTU MASTER
  18. `LINK : fatal error LNK1104: 无法打开文件“***.dll”`的问题解决
  19. 人力资源管理计算机基础,人力资源管理-专-李佑强-计算机应用基础实践报告.doc...
  20. xp系统sc服务器,SC怎么封装xp系统

热门文章

  1. Windbg双机调试环境配置(Windows7/Windows XP+VirtualBox/VMware+WDK7600)
  2. redis.conf配置文件参数说明
  3. java连接mysql以及增删改查操作
  4. bootstrap modal 弹出效果
  5. [记录]calculate age based on date of birth
  6. Cookie注入是怎样产生的
  7. oracle实例由,Oracle数据库和实例
  8. 人脸识别模型的动手实践!
  9. 网友:Java岗,自学一个月跳槽计算机视觉,其实入门很简单
  10. 医疗影像处理:去除医疗影像中背景的影响2D/3D【numpy-code】| CSDN博文精选