图数据库 | 灵活存储复杂关联关系

原文>>>>  他是谁

图数据库并不是存储图片的数据库,参照维基百科的定义,他是“以图数据结构来实现语义查询,并以节点(node)、边(edge)、属性(properties)来表示并存储数据”。是不是听完感到一脸懵?

用大白话来讲,图数据库就是以“图数据结构”来存储并查询数据。

如果你连什么是“图数据结构”都不知道,那你的数据结构一定是体育老师教的,请回去自行复习《数据结构与算法》这本经典教材。

让我们再回到图数据上,看看他的一些关键核心概念,图数据库源于图理论,具有如下几个特征:

节点(node):通常表示实体,例如人员、账户、事件等,相当于RDBMS中的一行记录。

边(edge):又被称为关系(relationships),具有名字和方向,从一个节点指向另一个节点,边是图数据库中最显著的一个特征,在RDBMS中没有对应实现。

属性(properties):类似KV数据库中的键值对,节点和边都可以有属性。

图数据库将数据以属性方式存储在节点或边中,以边来表示节点之间的关系,并用特定查询语言,进行数据检索。

节点、边、属性示意图

>>>>  他从哪儿来

从图数据库的原型出现至今,已经发展超过了半个世纪。图数据库的前身,可以追溯至上世纪60年代的Navigational databases,IBM开发了类似树形结构的数据存储模型。到1969年的网络数据库语言(Network database language),支持图数据结构的展现。

又经过漫长的30年,其间出现过可标记的图形数据库Logic Data Model,直至21世纪初,人们研发出具有ACID特性的里程碑式图数据库产品,例如:Neo4j、Oracle Spatial and Graph。

到2010年后,可支持水平扩展的分布式图数据库开始兴起,例如OrientDB,ArangoDB,MarkLogic。至今,各式各样的图数据库越来越受到重视,在Google、LinkedIn、Facebook这些一流大公司中,已经有了广泛应用,迎来了他最好的时代。

>>>>  他牛在哪儿

在传统关系型数据库RDBMS中,并没有明确的关系概念,或许叫表格数据库更贴切,而图数据库,恰恰是表现实体之间关系的利器。

在表现实体间关系时,RDBMS会将另一个实体的唯一标识,存储到表中的某一列,来与其他实体进行关联,例如典型的主键、外键。当遇到多对多关系时,典型做法会引入中间表,来存储两个实体ID间的关系,例如我们最熟悉的用户角色多对多关系。在查询时,需要多个表进行join连接,依次查询所需信息。

而图数据库,会直接存储两个实体之间的关系。仍以用户角色多对多关系举例,用户实体会有一个指针直接指向对应的角色记录,而这个指针,就是上文所述的“边(edge或relationships)”。而这样存储的好处是,当查询用户和角色时,只查询用户就可顺着“关系”直接取到角色信息,消除了RDBMS表关联所花费的性能开销。

用户角色关系不同存储方式示意图

当然,上述图数据库和RDBMS的对比只是举了一个非常简单的例子。

图数据库真正的价值,是灵活存储复杂关联关系,在深度超过1层以上关系中查找遍历,或是基于复杂算法的实时数据关系挖掘。

电商推荐引擎中,通常需要整合商品、客户、供应商、物流等关键信息,挖掘用户可能感兴趣的商品。而图数据库可以快速记录这些大量复杂关系,实时为用户提供可能所需产品。

社交网络图谱场景中,可记录用户社交关系,查找直接或间接认识的人,查找交际网中最具影响力的人物,这些操作对于图数据库都是易如反掌。

搜索引擎场景中,利用图数据库形成知识网络,当用户输入关键词检索时,和关键词义衍生的其他条目也可展现出来,在大量数据下,可轻松维护这些知识的相互联系。

路径规划场景中,存储各站点之间的关联,并实时计算出最优路径….

电商推荐引擎中,通常需要整合商品、客户、供应商、物流等关键信息,挖掘用户可能感兴趣的商品。而图数据库可以快速记录这些大量复杂关系,实时为用户提供可能所需产品。

社交网络图谱场景中,可记录用户社交关系,查找直接或间接认识的人,查找交际网中最具影响力的人物,这些操作对于图数据库都是易如反掌。

搜索引擎场景中,利用图数据库形成知识网络,当用户输入关键词检索时,和关键词义衍生的其他条目也可展现出来,在大量数据下,可轻松维护这些知识的相互联系。

路径规划场景中,存储各站点之间的关联,并实时计算出最优路径….

图数据库还有其他诸多应用场景,当遇到大数据量的复杂实体关系存储、查询及可视化,都可以考虑使用图数据库。

当然人无完人,他在解决复杂关系存储及查询时有着诸多便利,但当记录大量结构化的数据时,就比不上传统大数据存储工具了,例如ES、HBase等。所以我们建议在实际生产环境中,混合使用传统RDBMS和图数据库

>>>>  谁能站在图数据库的C位

图数据库有如此多的优势,我们团队也尝试在实际项目中落地,调研了若干开源图数据库引擎,下面是简单的横向对比,供各位参考。

ArangoDBNeo4jOrientDBJanusGraph

数据存储模型Document

Graph

KV

GraphDocument

Graph

KV

Graph

开发者ArangoDB GmbHNeo4j Inc OrientDB LTDLinux Foundation

LicenseApache V2GPL V3Apache V2Apache V2

初版发布时间2012200720102017

最新版本时间2018/62018/42018/4

OSLinux

OS X

Raspbian

Solaris

Windows 

Linux info

OS X

Solaris

Windows

具有Java JDK (>= JDK 6)的所有OSLinux

OS X

Unix

Windows

APIHTTP API

JSON style queries 

Cypher query language

Java API

Neo4j-OGM info

RESTful HTTP API

Spring Data Neo4j

TinkerPop 3

Java API

RESTful HTTP/JSON API

Tinkerpop technology stack with Blueprints, Gremlin, Pipes

Java API

TinkerPop Blueprints

TinkerPop Frames

TinkerPop Gremlin

TinkerPop Rexster

分区扩展Sharding企业版支持Sharding取决底层存储引擎(HBase, ES…)

复制(Replication)Master-Slave企业版支持Master-Master支持

事务ACID支持ACID支持ACID支持ACID支持

官网www.arangodb.com neo4j.com orientdb.comjanusgraph.org

通过以上对比可以得知:

Neo4j是最早起家做Graph DBMS,产品非常成熟,但是cluster和replication均需要企业收费版支持,且是GPL V3授权,假如将其用于商业目的,也需要缴纳版权费用。

JanusGraph是基于Titan图数据库延续下来的开源项目,由Linux Foundation进行维护。它并不是原生的图数据库引擎,而是底层使用ES、HBase等传统结构存储,并在上面封装图查询API。

ArangoDBOrientDB均支持Document、Graph及KV存储,分区扩展及备份完善,具有ACID事务支持。

在技术选型时,有几个特性我们需要着重考虑:

授权,是否商业付费;

底层存储,有一些图数据库底层仍使用传统RDBMS存储,仅在上层封装图查询API,所以在大数据量关系查询时,也许性能不如人意;

分布式支持,为了应对大数据量,在生产环境应能够水平拆分及复制备份。

结合以上几点考虑,我们团队目前选择了OrientDB进行下一步落地开发。

>>>>  他怎样助力逆向处置团队

目前,逆向处置团队一些有想法的小伙伴们已经搭上图数据库这趟列车,推动技术创新在实际业务中的应用,进行一些特定场景的数据开发工作。如存储客户关系资料、咨询事件、订单、服务单等信息。在知识库项目中也有尝试,用于开发知识图谱特性,建立知识的深层次联系。

对于互联网公司来说,核心竞争力源于技术,同时对技术的不断创新,或是对创新技术的应用,亦是推动公司和团队发展和进步的重要手段之一。

上述内容为我们团队在近期研发中做出的大胆探索并取得的一些心得,在此与大家分享。如果这篇文章也激发了你对图数据库的兴趣,欢迎与我们一同学习,共同探讨。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,920评论 2 89
  • 需要原文的可以留下邮箱我给你发,这里的文章少了很多图,懒得网上粘啦 1数据库基础 1.1数据库定义 1)数据库(D...
    极简纯粹_阅读 7,417评论 0 46
  • 关于现状和《非暴力沟通》四要素的理解
    后知后觉的持续努力阅读 175评论 0 0
  • 昨天兴冲冲的,满身心的期待,从天津到杭州。可以说很想很想把握住这次的机会,那么便再没有犹豫了。 经历6个多小时的车...
    阿斤a阅读 203评论 0 0
  • 群体遗传学研究的目的是为了揭示群体遗传结构变化的机制。群体遗传结构,是指群体遗传变异的大小、时空分布模式或格局,它...
    WooWoods阅读 1,938评论 0 2