现代程序的大部分功能都需要数据作为支撑,随着科技发展,数据的规模和复杂性逐渐增加,我们仍迫切希望由越发庞大的数据中分析出理想结果。此时传统的关系型数据库已经逐渐难以满足我们的需求,我们当然可以通过大量join的方式得到想要的结果,但由此带来的性能损耗是我们不愿接受的。因此对关联查询更友好的图数据库逐渐成为我们提升程序性能的不二选择。
了解图数据库之前,图的概念是我们必须了解的知识。
在表现形式上,图是点和边的组合;作为专业术语,图是「一些节点」和「关联这些节点的联系」的组合。
图在世界各地广泛存在,人与人、物与物的各种关系形成了大量的关联数据,并由此产生了大量的图。
教师-学生关系图
以上为简单的教师学生关系图,每个人或物作为“点”,人与人或者人与物的联系作为“边”,且节点和边都具有自己的属性,由此形成一张简单的关系图。
基本概念介绍
图数据库是一种数据存储引擎,它将节点和边的联系方式与数据持久化技术和查询语言结合起来,创建出一个用于存储和快速检索高度关联的数据的NoSQL数据库。他认为各数据间的依赖关系同数据本身一样重要,将其以点边的方式保存起来,可以快速高效的进行关联查询,直观的观察互联数据。
图数据库发展历程
图数据库发展历程
①Graph 1.0:单机原生图数据库
以Neo4j的1.0版本为代表, 采用了原生图的底层存储方式, 复杂关联查询性能明显提升。架构设计上只支持单机部署, 在产品性能和业务扩展能力方面收到限制。
②Graph 2.0:分布式非原生图数据库
以JanusGraph为代表,该时期产品的底层基于分布式设计,产品性能和扩展性都有一定提高,但仍然无法做到数据的实时更新和查询。
③Graph 3.0:原生分布式图数据库
为了适应时代需要,该时期产品为图数据实时更新、查询而设计,不但在存储上提升了扩展性,同时增加了并行计算的能力,能够实现实时的图分析,且有向人工智能结合的趋势,代表产品有Galaxybase。
介绍
Neo4j是由Java和Scala实现的图数据库,采用原生图对数据进行存储,结构清晰明确。相对于关系型数据库,其作为图特有的邻节点遍历搜索算法在进行关联查询时效率可提高数10倍且不会因数据量的增大而下降,数据库性能和稳定性都有保证。
Neo4j目前已被大量公司采用,其应用领域涵盖社交分析、网络管理等方方面面,以下是采用Neo4j的部分公司。
官方网站:https://neo4j.com
官方文档:https://neo4j.com/docs/
Github: https://github.com/neo4j/neo4j
Neo4j优势
①查询高效率,高可用
存储原生图,通过邻节点遍历实现关联查询,针对关系明确的目标,可以迅速准确的查找到结果,效率是普通关系型数据库的数倍。邻节点遍历方式只会对有关系的局部数据进行查找,不会遍历整个数据库,因此不会像关系型数据库一样消耗大量性能在无用数据上,查询效率不会因为数据量的增大而降低,数据库可用性极高。
②高扩展性
传统关系型数据库面对需求的变化,往往只能通过修改表结构的方式进行适应,工作量大,修改成本高。使用Neo4j作为数据库,其在功能上的拓展性将会大大提高,对于因需求变化而新增的功能,只需要向图中新增节点与属性,完全不会影响到原来数据的使用,使需求变更的成本下降。
③高开发效率
传统关系型数据库保存抽象表在数据库中,用户不能直观看到开发效果与需求的差别。Neo4j保存原生图,其保存在数据库中的样式与用户描述的样式并无太大差别,大大拉进了需求分析与功能实现之间的距离,用户可以直观看到数据结构,提出不足与改进意见,在迭代中不断促使开发结果朝着需求推进,提高开发效率。
④可与现有业务系统无缝集成,提供多种云部署方案,支持混合、直接迁移或云原生环境需求。
Neo4j集成情况(引用自Neo4j官网)
应用场景
①知识图谱
对海量信息进行智能化处理,形成知识库作为多种应用底层,如电商推荐系统和智能问答系统。
知识图谱示例
②借贷能力分析
建立客户社会关系及消费情况关系图来分析客户借贷能力,评估风险,降低损失几率。
小王社会关系分析示例
③物联网
通过构建人、物、事件和位置关系图,统筹安排道路交通,实现智慧互联。
物联网示例图
④电信诈骗识别
绘制通信频率时间图,分析可能的诈骗号码对用户做出警示。
总的来说,图数据库的应用目前已经深入金融、工业、医疗、电信等多个领域,具有广阔的应用前景。
Neo4j操作示例
①创建一个教师wangwei,如下图所示:
CREATE (wangwei: Teacher {name: \'wangwei\', height: \'1.81m\', nationality: \'China\'})
教师wangwei创建情况
②创建教师libai和喜欢关系
MATCH (wangwei:Teacher{name:\'wangwei\'})
匹配之前创建到的wangwei节点。
MERGE (wangwei)-[:LIKES{since:\'1378\'}]->(libai: Teacher{name:\'libai\', dob:\'1358/2/20\'})
新建libai节点并建立like关系
执行完毕后查看数据库,发现libai和wangwei节点通过like关系进行连接。
节点关系图
③查询所有喜欢libai的关系图节点
MATCH(t:Teacher)-[:LIKES]->(:Teacher{name:\'libai\'})
RETURN t;
执行完毕后展示Teacher中所有喜欢libai的节点信息。
喜欢libai的节点查询结果
结语
图数据库技术经过多年的迭代发展已经非常成熟,拥有众多的成功应用案例,应用范围覆盖医疗、社交、金融、军工等多个领域。启用图数据库来代替关系型数据库能够在不改变系统架构的情况下大幅提高系统吞吐量,从而降低升级成本,同时图数据库的使用也能降低运维需求,减轻运维压力。由此可见,图数据库在如今的大数据时代必将为我们的行业带来全新的面貌,让我们共同期待他的发展。
文章作者:王文元
排版设计:王蔚棋
手绘插画:岳 媛
在看不好意思,那就点个赞吧
原创文章,作者:EBCloud,如若转载,请注明出处:https://www.sudun.com/ask/33589.html