图数据库调研

图数据库是用于存储节点及其关系的非关系型数据库,常用于处理大数据平台的关联关系查询。文章介绍了属性图、RDF和超图三种图存储模型,以及原生和多模图数据库的分类。图查询和图计算是其关键操作,广泛应用在社交网络、风控、知识图谱和物联网等领域。Neo4j作为原生图数据库的例子,采用属性图模型并拥有Cypher查询语言。
摘要由CSDN通过智能技术生成

图数据库

什么是图数据库?

图数据管理系统(Graph DBMS)

又称面向图数据管理系统(Graph-oriented DBMS)或图数据库(Graph database)。图数据库,不是存储图片的数据库,而是存储节点与他们之间关系的数据库,是一种非关系型数据库,构建单元是节点和边。

传统的关系型数据库的劣势

在海量数据的今天,一些问题越来越突出。

  1. 大数据平台的情况下传统数据库查询关联关系太慢。
  2. 传统数据库必须按照固定模式存储数据,不再满足高度关联数据的表达和处理需求。
  3. 传统数据库很难做到在业务场景中去关注关系,从而挖掘和发现数据之间隐藏的联系。

非关系型数据库被更多的应用,伴随 2012 年 google 正式发布知识图谱搜索引擎和 2013 年 facebook 开放知识图谱搜索入口以来,知识图谱迎来了一波发展浪潮,图数据库的运用也持续性快速增长。
数据来源

图数据库介绍

图存储模型

1. 属性图:目前主流图数据库选择的数据模型,更确切的说是带标签的属性图(Labeled-Property Graph)。
2. 资源描述框架(RDF):在一个 RDF 中,增加的信息都以单独的节点表示。RDF由节点和边组成,节点表示实体/资源或者属性,边则表示了实体和实体之间的关系以及实体和属性的关系。相较于属性图,对属性的处理方式不一样。
3. 超图:不同于属性图和 RDF,超图的边可以连接任意数量(不能为 0)的节点,超图的边又称为超边(hyperedges)。

图数据库分类

1. 原生图数据库
指从一开始便为了解决图类数据结构而设计的数据库。考虑了图数据的特性,存储、计算引擎都是基于图的特点做了特别设计和优化。
2. 多模图数据库
是非原生图数据库,将图数据序列化为关系数据存储在表中,或者转化为键值数据存储在相应的数据库中,图服务层所做的操作最终被映射到下面的存储层,成为一系列表和文档的操作。底层是一个表或文档型数据库,在上层增加图的服务。

图查询和图计算

图查询:指支持对图数据模型的增、删、改、查(CRUD)方法,更关注 OLTP。有的图数据库也继承了少量的图计算能力,但真正的大型系统还是需要单独的计算框架。
图计算引擎技术:偏重于全局查询,通常都对与批处理大规模数据做过优化。只有一部分图计算引擎有自己的存储层,其他的都只关注与如果处理外部传入的数据,然后返回结果到其他地方保存。

图数据库关系网络

1. Social Network(社交网路),比如说微信好友关系等。这个网络有几十亿个用户,几千亿到几万亿的连接关系。
2. Business Relation(商业关系),常见的有两种网络:
金融与资金关系网络:一种比如说在支付网络里面,账户和账户之间的支付关系或者转账关系,这个是比较典型的金融与资金关系网络;
公司关系:在 business 里面,比如说公司控股关系,法人关系等等,它也是一个非常庞大的网络。基于工商总局数据,有许多公司耕耘在这一领域。这个网络的节点规模也有亿到十亿的级别,大概几百亿条边,如果算上交易转账数据那就非常庞大了。
3. knowledge graph(知识图谱),也是最近比较热的一个领域。在各个垂直领域会有不同的知识点,且知识点之间有相关性。部分垂直领域知识的网络至少有几百亿条关系,比如银行、公安还有医学领域。
4. Internet of Things(物联网),随着近年智能设备的增长,预计以后 IoT 设备数量会远超过人口数量,现在我们每个人身边佩带的智能设备已不止一个,比如说智能手机、智能手表,它们之间组成一个庞大的关系网络,虽然具体应用有待后续开发,但这个领域在未来会有很大的应用空间。

图数据库的应用场景

第一个应用场景是基于社交关系网络的社交推荐,比如:拼多多的商品推荐,抖音的视频推荐,头条的内容推荐,都可以基于已有的好友关系来推荐。
第二个就是风控领域,风控其实是银行保险业的核心话题。现在风控有个新趋势,就是通过关联关系做拓展,比如交易对手等相关的周边账号,通过这些关系来判断这笔交易或者转账的风险。从规则向基于关联关系的风控演进,这个趋势比较明显。
关于知识图谱这一块,和Google比较有关,谷歌在2003,2004年时候,其实已经在慢慢把它的search engine,从反向索引转向转到了知识图谱。
这几年机器学习和AI领域发展非常快,就机器学习或者模型训练范畴来说,平时用大量数据去训练模型,其实归根结底是对大量数据汇总或者说统计性的结果。最近一两年,开始将基于图的数据关系加入到模型训练,这个就是学术界非常流行的Graph Embedding,把图的结构引入到模型训练里面。
健康和医疗领域,患者的过往病史、服药史、医生的处方还存在纸质文档的情况,一些医疗类公司通过语音和图像将文档数字化,再用NLP把关键信息提取出来。根据关键信息,比如:血压、用药等等构造一棵大的决策树或者医疗知识图谱。
区块链的应用,区块链本身虽然说是链,但有很多分支结构,当分支交织后也就构成一个网络。举个简单例子,A某想通过比特币洗钱,常用方法是通过多个账号,几次转账后,资金通过数字货币形成一个闭环,而这个方法是可以通过图进行洗钱防范。
最后一块是公共安全领域,比如,某些犯罪是团伙作案,那么追踪团伙中某个人的行为轨迹,比如:交通工具、酒店等等就可标识出整个团伙的特征。某个摄像头和某个嫌疑人在某个时间构建起来关联关系,下一个时刻,另外一个摄像头和另外一个嫌疑人也建立了关联。这个图不是静态的,它是时序的。

Neo4j

Neoj图数据库:开源 NoSQL 数据库,原生的图数据库,2003 年开始开发,使用 scala和java 语言,2007年开始发布;世界上最先进的图数据库之一,提供原生的图数据存储,检索和处理;采用属性图模型(Property graph model),极大的完善和丰富图数据模型;专属查询语言 Cypher,直观,高效。基于以上,Neo4j被广泛应用。
在这里插入图片描述

图数据结构的存储

Neo4j图数据库存储在若干不同的存储文件中。每个存储文件包含图的特定部分的数据(节点、联系、标签、属性)。存储职责的划分(特别是图结构与属性数据的分离)促进了高性能的图遍历。
按照我们图论中的一般说法,其实对于一个图数据结构来说,只需要存储节点和关系就可以了,如下面这个图数据一样:

在这里插入图片描述
但是现实生活中,我们的图结构是非常复杂的,而且数据量很大,经常需要做各种各样的分析,甚至还需要做聚类分析(这里的聚类分析不是指机器学习里面的聚类模型,而是指把同一类数据提取出来单独做分析,类似于 groupby 的操作)。所以 Neo4j 里面在文件系统上单独存储了标签和属性,就是为了在做检索和分析的时候保证性能。
Neo4j 的底层数据模型Property Graph Model,这个数据模型推动了工程上按照节点、关系、标签、属性四个方面来实现存储模型。该模型有两个核心要素:
(1)节点:每一个节点都是图中的一个实体;每一个节点可以容纳足够多的属性,以键值对的形式;每一个节点可以被打一个标签。
(2)关系:每一条关系可以是有向的,无向的,命名的,每一条关系必须有两个对应的节点。如下图例子:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值