Nosql-图数据库-图数据库是什么

2022-09-05  本文已影响0人  Viterbi

图数据库是什么

随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,亟需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。

世界上很多著名的公司都在使用图数据库。比如:

什么是图

图由两个元素组成:节点和关系

这种通用结构可以对各种场景进行建模 - 从道路系统到设备网络,到人口的病史或由关系定义的任何其他事物。

什么是图数据库?

图数据库(Graph database)并非指存储图片的数据库,而是以图这种数据结构存储和查询数据。

两个重要属性

根据存储和处理模型不同,市面上图数据库也有一些区分

比如:

对比

与NoSQL数据库对比

NoSQL数据库大致可以分为四类:

分类 数据模型 优势 劣势 举例
键值数据库 哈希表 查找速度快 数据无结构化,通常只被当作字符串或者二进制数据 Redis
列存储数据库 列式数据存储 查找速度快;支持分布横向扩展;数据压缩率高 功能相对受限 HBase
文档型数据库 键值对扩展 数据结构要求不严格;表结构可变;不需要预先定义表结构 查询性能不高,缺乏统一的查询语法 MongoDB
图数据库 节点和关系组成的图 利用图结构相关算法(最短路径、节点度关系查找等) 可能需要对整个图做计算,不利于图数据分布存储 Neo4j、JanusGraph

与关系型数据库对比

关系型数据库实际上是不擅长处理关系的。很多场景下,你的业务需求完全超出了当前的数据库架构。举个栗子:假设某关系型数据库中有这么几张用户、订单、商品表:

当我们要查询:“用户购买了那些商品?” 或者 “该商品有哪些客户购买过?” 需要开发人员JOIN几张表,效率非常低下。而“购买该产品的客户还购买了哪些商品?”类似的查询几乎不可能实现。

他们的实验试图在一个社交网络里找到最大深度为5的朋友的朋友。他们的数据集包括100万人,每人约有50个朋友。实验结果如下:

可以看出,对于图数据库来说,数据量越大,越复杂的关联查询,约有利于体现其优势。从深度为4/5的查询结果我们可以看出,图数据库返回了整个社交网络一半以上的人数。

Neo4J 和 JanuasGraph

根据DB-Engines最新发布的图数据库排名,Neo4J仍然大幅领先排在第一位:

neo4j

Neo4J是由Java实现的开源图数据库。自2003年开始开发,直到2007年正式发布第一版,并托管于GitHub上。Neo4J支持ACID,集群、备份和故障转移。目前Neo4J最新版本为3.5,分为社区版和企业版,社区版只支持单机部署,功能受限。企业版支持主从复制和读写分离,包含可视化管理工具。

Neo4j数据库的优势

JanusGraph

JanusGraph是一个Linux基金会下的开源分布式图数据库 。JanusGraph提供Apache2.0软件许可证。该项目由IBM、Google、Hortonworks支持。JanusGraph是由TitanDB 图数据库修改而来,TitanDB从2012年开始开发。目前最新版本为0.3.1。

JanusGraph支持多种储存后端(包括Apache Cassandra、Apache HBase、Bigtable、Berkeley DB)。JanusGraph的可扩展性取决于与JanusGraph一起使用的基础技术。例如,通过使用Apache Cassandra作为存储后端,可以将JanusGraph简单地扩展到多个数据中心。

JanusGraph通过与大数据平台(Apache Spark,Apache Giraph,Apache Hadoop)集成,支持全局图数据的分析、报告和ETL。

JanusGraph通过外部索引存储(Elasticsearch,Solr,Lucene)支持地理、数字范围和全文搜索。

标记属性图模型

节点

关系

属性

标签

neo4j

neo4j简介

Neo4j优点

Neo4j install

py2neo

pip install py2neo

Node & relationship

from py2neo import Node, Relationshipa = Node('Person', name='Alice')b = Node('Person', name='Bob')r = Relationship(a, 'KNOWS', b)print(a, b, r)

Cypher图查询语言

Cypher是Neo4j的图形查询语言,允许用户存储和检索图形数据库中的数据。举

例,我们要查找Joe的所以二度好友:

查询语句如下:

MATCH   (person:Person)-[:KNOWS]-(friend:Person)-[:KNOWS]-  (foaf:Person)WHERE   person.name = "Joe"  AND NOT (person)-[:KNOWS]-(foaf)RETURN  foaf   

Joe认识Sally,Sally认识Anna。 Bob被排除在结果之外,因为除了通过Sally成为二级朋友之外,他还是一级朋友。

小结

图数据库应对的是当今一个宏观的商业世界的大趋势:凭借高度关联、复杂的动态数据,获得洞察力和竞争优势。国内越来越多的公司开始进入图数据库领域,研发自己的图数据库系统。对于任何达到一定规模或价值的数据,图数据库都是呈现和查询这些关系数据的最好方式。而理解和分析这些图的能力将成为企业未来最核心的竞争力。

本文使用 文章同步助手 同步

上一篇下一篇

猜你喜欢

热点阅读