【数易轩图数据库】图存储和图数据库是什么?

数易轩致力于图数据库标注技术服务,在本篇文章中,为您介绍存储技术以及构建一个图数据库需要考虑的问题。

Neo4j是一个广泛使用的图数据库;MySQL是一个广泛使用的部分开源关系型数据库;OceanBase 是一个金融级(实现了事务)分布式关系数据库。现在缺什么?一个支持高性能OLTP及OLAP的分布式图数据库。

【数易轩图数据库】图存储和图数据库是什么?_第1张图片

一、图存储和图数据库

把物质存下来就叫做存储。我们这里的图存储 (Graph Storage)就是把图这个数据结构存下来。而数据库是一类计算机软件,是一种“按照数据结构来组织、存储和管理数据的仓库”。我们这里的图存储 (Graph Database)就是把对图进行管理的数据库。他们究竟有什么不同呢?简而言之,数据库不仅包含了存储,还包含了组织和管理。图存储,简而言之就是把图存到磁盘或SSD里,还要求读写快、不出错那么图数据库里除了图存储,组织和管理又有哪些任务呢?理解数据库的组织的关键是理解其中的数据结构和硬件特性。我们都接触过机械硬盘,由于其物理构造通常以页为单位读取写入数据,所以传统数据库在机械硬盘里通常用B-树这样的结构进行组织。图数据依旧可以这样存吗?当然可以,把边以<入点,出点,属性>这个三元组组织起来,这也就是传统数据库里的一个表,自然可以用传统的方式存储。但是如果你了解了更多图计算的算法,你会发现图按照数据结构教材中的邻接表和邻接矩阵存,才有更高效的综合存取效率。先说邻接表,在很多前沿的图存储论文里,都使用高性能KV存储邻接表实现存储图的功能。所以可以把图存储当作一种特殊的KV存储,为什么特殊,因为图的节点度通常分布不均匀,真实世界中图的度通常满足幂律分布。再说邻接矩阵,在很多前沿的图计算论文里,会使用CSR和CSC存储图,这种方式优点主要有模型简单、压缩率较高、适应图机器学习,缺点主要是难适用于变化的图。组织的另一个重要任务是索引,传统数据库中的索引大家应该比较熟悉,但是图数据库中目前没有一个通用的解决多类问题的索引。数据库管理的关键技术其实都在广泛使用的RDBMS中有体现。比如数据库连接,其中科学问题也许涉及到数据库连接池、优化批量进行的数据库查询等;比如增删改查,会涉及到实现数据库事务的ACID特性、优化多表连接查询、优化新的查询任务等;比如数据库备份还原,会涉及到数据库容错、日志等问题。图数据库中,这些问题基本都有涉及,有不少论文考虑多查询优化、实现图数据库事务、数据库容错(主要是分布式环境,下面详谈)。


【数易轩图数据库】图存储和图数据库是什么?_第2张图片

二、分布式图存储

图的组织以上已经谈过了,就是一个KV存储或者CSR之类的线性数组结构。如若在单台机器上研究这样结构的高效读写、不出错,对于非极度专业人士已经几乎没有任何机会了(在非易失性内存上还不断有研究但是一般和图没直接关联)。鉴于现在很多数据都在一台节点上存不下、或者是计算任务要求成百上千核同时工作,所以目前研究的主流是研究分布式环境下的图存储。一种是内存存储,主要需要优化存取时候的CPU消耗;另一种是外存存储,主要是优化分布式容错或者RAID类似技术;还有分布式系统所面临的问题,比如分布式一致性如何实现(理解CAP定理),如raft等等。


【数易轩图数据库】图存储和图数据库是什么?_第3张图片

、分布式图数据库

除了分布式图存储以外,专属于图数据库的任务包括但不仅限于图数据库分布式事务的实现、图划分、分布式图计算查询优化、分布式图流计算、分布式图索引技术(其实单机的都远没实现)等等一系列问题。

综上所述,本文介绍了当前有关于图存储和图数据库的研究热点,其中基本每个研究点都有论文支撑可以单独后台发信讨论。最后一个小tip:现在很多系统和数据库的论文里对于Graph Storage和Graph Database区分度已经不是很明显了,论题方式已经细化到对具体功能的实现和优化上。

【数易轩图数据库】图存储和图数据库是什么?_第4张图片

你可能感兴趣的:(【数易轩图数据库】图存储和图数据库是什么?)