首页 > 编程知识 正文

图数据库应用实例,目前流行的数据库系统有哪些

时间:2023-05-05 21:32:04 阅读:166441 作者:44

越来越热烈的图数据库到底是什么? 随着社交、电子商务、金融、零售、物联网等行业的快速发展,现实社会组织着巨大而复杂的关系网络,传统的数据库难以处理关系运算。 大数据需要处理的数据之间的关系随数据量呈几何级数增长,需要支持大量复杂数据关系运算的数据库,图表数据库应运而生。

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

社交领域:Facebook、Twitter、Linkedin用它管理社交关系,实现好友推荐零售领域:eBay,沃尔玛用它实现商品商品的金融领域:沃尔沃、戴姆勒、丰田等大型汽车制造商利用照片数据库推进创新的制造解决方案。汽车制造领域:Verizon、Orange、ATT等电信公司使用照片数据库管理网络。 顾客360 电信领域:rxdfn和雅高酒店等一流酒店公司使用图数据库管理复杂快速变化的库存。 既然图数据库被广泛使用,很多企业和开发者都开始使用,那有什么好的呢? 试着揭开神秘的面纱吧。

1. Why Graph DB? 上了数据结构这样的课的同学的脑海里,或多或少应该有图的概念。

1.1什么是图? 图由节点和关系两个要素构成。

每个节点表示一个实体(人、地、事物、类别或其他数据),而每个关系表示两个节点之间的关联。 这种典型结构可以对各种场景进行建模,从道路系统到设备网络,再到人口的病史和关系所定义的其他。

1.2什么是图数据库? 图表数据库(Graph database )以这种数据结构存储和查询数据,而不是存储图像的数据库。

图形数据库是一个在线数据库管理系统,用于处理图形数据模型的创建、读取、更新和删除(CRUD )操作。

与其他数据库不同,关系在图数据库中占有最重要的地位。 这意味着APP应用程序不需要使用外键或MapReduce等带外处理来估计数据连接。

与关系数据库和其他NoSQL数据库相比,图数据库的数据模型也更简单、更有表现力。

图形化数据库是为了与事务(OLTP )系统配合使用而构建的,其设计考虑了事务的完整性和操作的可用性。

1 .三个重要属性根据存储和处理模型的不同,市场图数据库也有一些区别。

例如:

Neo4J是本机图形数据库,使用的是专门为类似Neo4J的图形数据库定制和优化的后端存储。 从理论上讲,它可以提高图形数据库的性能。

JanusGraph将数据存储在其他系统(如Hbase )中,而不是存储在本机图表数据库中。

图存储一些图数据库使用本机图存储。 这些存储经过优化,专门为图的存储和管理而设计。 并非所有图数据库都使用本机图存储。 某些图数据库将图数据序列化并存储在关系数据库、面向对象数据库或其他通用数据存储中。

图处理引擎的本机图处理(也称为无索引相邻)是处理图数据的最有效的方法,因为所连接的节点在数据库中物理上彼此酒店领域。 非本机图像处理使用其他方法来处理CRUD操作。

2 .比较2.1与NoSQL数据库进行比较NoSQL数据库大致分为四种。

键值(key/value )数据库列包含数据库文档类型数据库图数据库

分类数据模型的优缺点示例键值数据库哈希表检索速度快的数据是非结构化的,通常假设字符串或二进制数据Redis列存储数据库基于列的数据存储检索速度较快; 支持分布式横向扩展的高数据压缩率功能相对有限的HBase文档类型数据库键值对扩展数据结构要求不苛刻,表结构可变; 不需要事先定义表结构的查询性能不高,缺乏统一查询语法的由MongoDB图数据库节点和关系组成的图,需要利用图结构关联算法(最短路径、节点度关系检索等)计算整个图,图数据分布存储Neo4j 在许多情况下,业务需求完全超出了当前的数据库体系结构。

举个例子吧。 假设关系数据库包含几个用户、订单和商品表。

“用户购买了那些商品吗? ”我问。 或者“有购买这个商品的客人吗? ’开发者JOIN需要几张表,效率非常低。

“购买该产品的客户购买了什么样的商品? ’类似的查询几乎无法实现。

指向

在数据关系中心,无论是深度查询还是复杂查询,图形数据库在查询速度方面都非常高效。 在《Neo4j in Action》这本书里,作者在关系数据库里

与图表数据库(Neo4j )之间进行了实验。

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

深度MySQL执行时间(s)Neo4J执行时间(s)返回记录数20.0160.01~2500330.2670.168~110 00041543.5051.359~600 0005未完成2.132~800 000

在深度为2时(即朋友的朋友),两种数据库性能相差不是很明显;深度为3时(即朋友的朋友的朋友),很明显,关系型数据库的响应时间30s,已经变得不可接受了;深度到4时,关系数据库需要近半个小时才能返回结果,使其无法应用于在线系统;深度到5时,关系型数据库已经无法完成查询。而对于图数据库Neo4J,深度从3到5,其响应时间均在3秒以内。

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

3. Neo4J 和 JanuasGraph

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

Neo4J

Neo4J是由Java实现的开源图数据库。自2003年开始开发,直到2007年正式发布第一版,并托管于GitHub上。

Neo4J支持ACID,集群、备份和故障转移。目前Neo4J最新版本为3.5,分为社区版和企业版,社区版只支持单机部署,功能受限。企业版支持主从复制和读写分离,包含可视化管理工具。

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)支持地理、数字范围和全文搜索。

3.1 标记属性图模型

(1)节点 节点是主要的数据元素节点通过关系连接到其他节点节点可以具有一个或多个属性(即,存储为键/值对的属性)节点有一个或多个标签,用于描述其在图表中的作用示例:人员节点与Car节点 (2)关系 关系连接两个节点关系是方向性的节点可以有多个甚至递归的关系关系可以有一个或多个属性(即存储为键/值对的属性) (3)属性 属性是命名值,其中名称(或键)是字符串属性可以被索引和约束可以从多个属性创建复合索引 (4)标签 标签用于将节点分组一个节点可以具有多个标签对标签进行索引以加速在图中查找节点本机标签索引针对速度进行了优化 4. Cypher图查询语言

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

举例,我们要查找沉静的老虎的所以二度好友:

查询语句如下:

MATCH (person:Person)-[:KNOWS]-(friend:Person)-[:KNOWS]- (foaf:Person)WHERE person.name = "沉静的老虎" AND NOT (person)-[:KNOWS]-(foaf)RETURN foaf

沉静的老虎认识mmdlf,mmdlf认识xndqb。 Bob被排除在结果之外,因为除了通过mmdlf成为二级朋友之外,他还是一级朋友。

5. 小结

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

posted on 2019-02-21 18:33 mantou火星上的大象 阅读(...) 评论(...) 编辑 收藏

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。