图数据库介绍随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了一张庞大而复杂的关系网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,亟需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。世界上很多著名的公司都在使用图数据库。比如:•社交领域:Facebook,Twitter,Linkedin用它来管理社交关系,实现好友推荐零售领域:eBay,沃尔玛使用它实现商品实时推荐,给买家更好的购物体验金融领域:摩根大通,花旗和瑞银等银行在用图数据库做风控处理汽车制造领域:沃尔沃,戴姆勒和丰田等顶级汽车制造商依靠图数据库推动创新制造解决方案电信领域:Verizon,Orange和AT&T等电信公司依靠图数据库来管理网络,控制访问并支持客户360酒店领域:万豪和雅高酒店等顶级酒店公司依使用图数据库来管理复杂且快速变化的库存•••••既然图数据库应用这么广泛,越来越多的企业和开发者开始使用它,那它究竟什么过人之处呢,下面我们来揭开它的神秘面纱。1.WhyGraphDB?学过数据结构这么课程的同学脑海中应该或多或少有图的概念。1.1什么是图?图由两个元素组成:节点和关系。每个节点代表一个实体(人,地,事物,类别或其他数据),每个关系代表两个节点的关联方式。这种通用结构可以对各种场景进行建模-从道路系统到设备网络,到人口的病史或由关系定义的任何其他事物。1.2什么是图数据库?图数据库(Graphdatabase)并非指存储图片的数据库,而是以图这种数据结构存储和查询数据。图形数据库是一种在线数据库管理系统,具有处理图形数据模型的创建,读取,更新和删除(CRUD)操作。与其他数据库不同,关系在图数据库中占首要地位。这意味着应用程序不必使用外键或带外处理(如MapReduce)来推断数据连接。与关系数据库或其他NoSQL数据库相比,图数据库的数据模型也更加简单,更具表现力。图形数据库是为与事务(OLTP)系统一起使用而构建的,并且在设计时考虑了事务完整性和操作可用性。1.3两个重要属性根据存储和处理模型不同,市面上图数据库也有一些区分。比如:Neo4J就是属于原生图数据库,它使用的后端存储是专门为Neo4J这种图数据库定制和优化的,理论上说能更有利于发挥图数据库的性能。而JanusGraph不是原生图数据库,而将数据存储在其他系统上,比如Hbase。①图存储一些图数据库使用原生图存储,这类存储是经过优化的,并且是专门为了存储和管理图而设计的。并不是所有图数据库都是使用原生图存储,也有一些图数据库将图数据序列化,然后保存到关系型数据库或者面向对象数据库,或其他通用数据存储中。②图处理引擎原生图处理(也称为无索引邻接)是处理图数据的最有效方法,因为连接的节点在数据库中物理地指向彼此。非本机图处理使用其他方法来处理CRUD操作。2.对比2.1与NoSQL数据库对比NoSQL数据库大致可以分为四类:••••键值(key/value)数据库列存储数据库文档型数据库图数据库2.2与关系型数据库对比关系型数据库实际上是不擅长处理关系的。很多场景下,你的业务需求完全超出了当前的数据库架构。举个栗子:假设某关系型数据库中有这么几张用户、订单、商品表:当我们要查询:“用户购买了那些商品?”或者“该商品有哪些客户购买过?”需要开发人员JOIN几张表,效率非常低下。而“购买该产品的客户还购买了哪些商品?”类似的查询几乎不可能实现。关系查询性能对比在数据关系中心,图形数据库在查询速度方面非常高效,即使对于深度和复杂的查询也是如此。在《Neo4jinAction》这本书中,作者在关系型数据库和图数据库(Neo4j)之间进行了实验。他们的实验试图在一个社交网络里找到最大深度为5的朋友的朋友。他们的数据集包括100万人,每人约有50个朋友。实验结果如下:在深度为2时(即朋友的朋友),两种数据库性能相差不是很明显;深度为3时(即朋友的朋友的朋友),很明显,关系型数据库的响应时间30s,已经变得不可接受了;深度到4时,关系数据库需要近半个小时才能返回结果,使其无法应用于在线系统;深度到5时,关系型数据库已经无法完成查询。而对于图数据库Neo4J,深度从3到5,其响应时间均在3秒...