嬴图Ultipa | 一文了解关于图数据库的一点儿干货

本篇包括以下内容点:
·  数据库主要技术分类
·  图是什么?
·  图的模式
·  图数据库 VS.关系型数据库
· 图数据库VS.其他NOSQL的对比
·  并非所有的图数据库都一样!

根据Gartner预测,“到2025年,使用图技术进行数据和分析创新的比例将由2021年的10%提升至80%,这将大大促进企业进行快速决策。”

图:数据库分类图

上图是笔者将数据库的主要技术轨迹做了个简单的分类,大家还可以结合我上篇的一个整理【嬴图 |一文了解数据库发展的里程碑事件都有哪些? - 知乎 (zhihu.com)】一起看。不难发现,在数据库技术50多年的发展历史中,它蓬勃的生命力以及新型数据库对传统数据库发出的挑战——其背后的推动因素主要是工业界和学术界亟需一种新型的、高效的、灵活的、高维的架构出现,以满足数据量的迅猛增长(Volume)、数据种类的多样性(Volume),数据产生速度的飞速提升(Volume)以及人们对数据价值的关注性(Volume)——也因此能够理解GQL为何成为了自1983年以来唯一一个继SQL后的国际标准,这也有力说明了图数据库技术对未来的影响力和重要性。

图:按数据复杂性排序的数据库引擎类型

表1:5类主流数据库产品分析

分类

性能

可扩展性

灵活性

复杂性

键值存储数据库

文档数据库

可变

列存储数据库

可变

一般

图数据库

可变

关系型数据库

可变

可变

一般

图数据库(Graph Database)是基于图论实现的一种NoSQL数据库,可以存储实体的属性信息和实体之间的关系信息,且建模简单,性能强劲,搜索功能丰富,扩展性强。

图(Graph)由点和连接每对点的边所构成:

点(node):称之为顶点(Vertex)或点(node),也可以称作实体(Entity)。

边(edge):连接两个点(node)的边,在知识图谱范畴内也常被称作关系(relation、relationship)。

举例来说,当你查达芬奇与卢浮宫之间的关系时,你就可以关联出一张非常简单的人与物之间的图谱——“六度分隔理论”就源于图。

文艺复兴(代表人物)——达芬奇——(代表作品) 蒙娜丽莎——(收藏)卢浮宫博物馆——金字塔玻璃入口(建筑师)贝聿铭——弗朗索瓦一世(收藏)——梦娜丽莎(画作)——文艺复兴(影响)】

​再如,我们日常生活中几乎天天都会使用的通勤工具——地铁。如果将车站作为“点”,相邻的两站用“边”相连,那么,这也可以连成一张典型的“图”。

​我们可以随着自己的思考进行无限延展,通过节点和节点相关联,就能信手拈来地通过图数据去直接地构建真实世界中的属性和关系【更多阅读,见文库 | 什么是图?】。

图的模式共分为三种,分别是属性图、超图和三元组,因为图数据是需要存储到具体的图数据库中才能最终落实为具体的数据文件,而这个过程就自然涉及到了要采用什么实现方式来保存图数据。以Ultipa Graph 为例,它跟Nejo4一样,都是属性图(Property Graphs)——属性图模型更易于理解,能描述绝大部分图使用场景。

为什么图数据库的优势越来越突出? 比如在传统关系型数据库中,一旦涉及到多表关联查询时,计算量与表内数据量的笛卡尔乘积等比例增长,数据量越大,表关联越多、越复杂,效率越低。因为它是通过外键在主表中寻找匹配的主键记录来进行搜索、匹配计算操作,如果使用多对多的关系时,则必须还要再添加中间表来保存两个参与表的外键对应关系,这就进一步增加了链接(join)操作的成本。

而图数据库,非常灵活,不仅能能够通过点和边就能简洁地让人们面料数据之间的关系,而且采用的计算逻辑是近邻关联计算(查询)模式,计算复杂度低,效率指数级提升。见下图所示。

图:图数据库与关系型数据库的架构差异

​如用关系型数据库与图数据库做一个深度穿透,从第2—5层,性能的差异其实是指数级上升的。如在做1层穿透的时候,两者可能并没有本质的区别,从2层开始会出现指数级(10倍以上)的变化,直到用传统数据库做4—5层的穿透时,其已经不能返回任何结果了,也就是说,已经超出了机器的运算范畴从而罢工了。(感兴趣的读者可以详细阅读:图数据库与关系型数据库的区别⁴)。

从目前各大类型数据库的市场占有情况来看,关系型数据库仍是主流,但这是处于过去缺乏可替代方案的时代背景下,随着它无法hold住的场景越来越多,图数据库因为其天然的基因优势将成为弯道超车的利器。

表2:主流图数据库对比

Nejo4j

JanusGraph

Ultipa Graph

知名度

最高

一般

开源生态

社区版开源,但限制较多;商业版闭源:

开源;兼容Apache Tinkerpop 生态,主要由AWS和IBM提供云服务

闭源主要由Ultipa Cloud 提供云服务

图查询语言

Cypher

Gremlin

UQL

支持数据规模

社区版十亿级;企业版千亿级以上

百亿级以上

千亿级以上

大规模数据写入性能

在线导入速度慢

较慢

在线导入速度快

大规模数据查询性能

快,较稳定

较快

快,超稳定

功能完善程度

完善

完善

完善

数据导入工具

支持CSV在线导入;支持格式丰富

未提供支持

Ultipa Transporter 支持全平台运行,支持格式丰富,提供文件例如TSV,CSV、Mysql,BigQuery 等数据导入能力以及 CSV 导出能力。

可视化界面

支持,功能丰富,支持可视化的数据建模、导入、分析等

不支持,需用户集成第三方界面

支持,功能丰富,支持2D、3D转换;支持可视化的数据建模、导入、分析等

内置常用图算法

提供安装算法包,提供了丰富的基本图算法

不支持

提供安装算法包,建有丰富的算法库,能以独立算法包的形式提供给用户。

基础功能(属性图的增删查改、持计划鵆、元数据、事务、缓存、查询优化、增量更新图等)

支持

支持

支持

ACID事务

支持

部分支持,根据后端存储而定。

支持

chema约束

商业版支持,同时也支持Schema-Free

支持,同时也支持Schema-Free

支持,同时也支持Schema-Free

图存储类型

支持本地存储,支持分布式存储,支持云托管存储

飞本地存储,支持分布式存储

图分区

支持

支持

支持

高可用HA

商业版支持

未提供支持

支持

从上文我们已知,NoSQL数据库能够流行起来的因素就是因为其能解决多数数据种类、大规模数据集合等等挑战,但是它们之间(简单将键值对、文档展开聊聊)又有哪些对比呢?

文档存储属于层次化结构,可以轻松地将数据存储为树结构,但正因此,它只能表达一种从上到下的从属关系,而树状在图数据库中只是其中的一种而已,其表现更为丰富。此外,树存储结构,会出现多次被嵌入的冗余数据,这就会增加更新数据的难度,也无法确保数据一致性的问题。

键值数据库,更适合少量数据关系的应用,因为它是按照键值对的形式进行组织、索引和存储,在数据量少的情况下,能有效地减少读写磁盘的次数,性能很高,但反之,一旦数据量大时,明显图就更能表现数据之间的复杂关系了。

最后,要说明的是,并非所有的图数据库都是一样的!有的图数据库只有存储能力而缺乏计算能力,有的可以计算,但是因为涉及到数据迁移效率又非常低下。还有一些图数据库采用NoSQL或MapReduce的架构实现,但是没有面对图计算的特点做充分的、深度的优化,最终的效果是越水平分布,效率越低。更有的厂家盲目地把所有数据都搬入内存,造成内存使用暴增,同样会产生频繁出现OOM而导致宕机的负面问题。正确的实现道路是“分布式+存算一体化+多级存储优化+图查询深度优化”,这里涉及到图数据库的知识点与挑战非常多,关于如何设计并实现真正的高性能分布式图数据库,感兴趣的读者可详细参阅高并发图数据库系统如何实现?³。【文/ 哪吒Emma】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/112031.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 生成唯一ID

1.首先通过nuget安装yitter.idgenerator 下面的三行代码搞定

数据结构 day1

1>x.mind 2>间接定义结构体数组,进行4种方式的定义和初始化 3>定义结构体存储10辆车(车的信息:品牌、单价、颜色) 1.定义函数,实现循环输入 2.定义函数,实现排序 3.定义函数,计算红色车…

树莓派3b无屏幕登录

如果要无屏登录,烧写时最好设置,勾选WIFI ,登录密码,和SSH 树莓派操作系统下载地址 树莓派资源下载 | 树莓派实验室 无屏幕无键盘登录:新版中可能要先SSH登录,然后才能在RASPI-CONFIG中打开串口控制台 登录…

【Axure原型分享】能统计中英文字数的多行输入框

今天和大家分享能统计中英文字数的多行输入框的原型模板,在输入框里输入内容后,能够动态根据输入框的内容,统计出字符数量,包括总字数、中文字数、英文字数、数字字数、其他标点符号的字数,具体效果可以观看下方视频或…

2023-08-29 LeetCode(带因子的二叉树)

2023-08-29每日一题 一、题目编号 823. 带因子的二叉树二、题目链接 点击跳转到题目位置 三、题目描述 给出一个含有不重复整数元素的数组 arr ,每个整数 arr[i] 均大于 1。 用这些整数来构建二叉树,每个整数可以使用任意次数。其中:每…

postgresql-字符函数

postgresql-字符函数 字符串连接字符与编码字符串长度大小写转换子串查找与替换截断与填充字符串格式化MD5 值字符串拆分字符串反转 字符串连接 concat(str, …)函数用于连接字符串,并且忽略其中的 NULL 参数;concat_ws(sep, str, …) 函数使用指定分隔…

Python GUI应用程序开发之wxPython使用详解

概要 wxPython是一个强大的跨平台GUI工具包,它使用Python编程语言开发,提供了丰富的控件功能。如果你是一名Python开发者,而且希望创建一个功能齐全的桌面应用程序,那么wxPython是一个值得考虑的选择。 什么是wxPython wxPython…

执行jmeter端口不够用报错(Address not available)

执行jmeter端口不够用报错(Address not available) linux解决方案 // 增加本地端口范围 echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range// 启用快速回收TIME_WAIT套接字 sudo sysctl -w net.ipv4.tcp_tw_recycle1// 启用套接字的重用 sudo sysctl -w net.ipv4.t…

IdentityServer密码长度超长会导致跳转到登录页

应用系统项目的安全要求越来越高,基本都是采取https等加密证书传输,无法使用https的,也是要求不能明文传输内容,因此做一些等保要求,密码需要加密后才能传输给服务端,所以前端会采取一些密码手段&#xff0…

单变量图的类型与直方图绘图基础

文章目录 单变量图的类型1.直方图(histogram plot)2.密度图(density plot)3.Q-Q 图(Quantile- Quantile plot,又称分位图)4.P-P 图(Probability-Probability plot)5.经验…

【力扣】216. 组合总和 III <回溯、回溯剪枝>

【力扣】216. 组合总和 III 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字 1 到 9,每个数字最多使用一次,返回所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回…

2024王道408数据结构P144 T17

2024王道408数据结构P144 T17 思考过程 先看题目,让我们判断两棵二叉树是否相似,相似指的是以下三个方面: T1和T2都是空的二叉树或T1和T2都只有一个结点T1的左子树和T2的左子树是相似的,且T1的右子树和T2的右子树是相似的。 题…

大数据项目实战(Hadoop集群搭建)

一,搭建大数据集群环境 1.2 Hadoop集群搭建 1.2.1 jdk安装 1.下载jdk (1)在根目录下创建三个子目录以备后用。具体如下: mkdir -p /export/data mkdir -p /export/software mkdir -p /export/servers (2)下载路径: 1、官网下载地址http…

APP UI自动化测试思路总结

首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师、高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去。接下来,一…

聊聊工科必备软件MATLAB

1.MATLAB的由来 MATLAB(Matrix Laboratory)最初是由美国的MathWorks公司于1980年代初开发的一种数值计算和科学数据可视化的编程环境。 MATLAB的起源可以追溯到20世纪70年代,在斯坦福大学,科学家Cleve Moler在长期从事数值计算的研…

Java流式编程详细介绍

文章目录 1. 流式编程介绍2. 过滤2.1 filter2.2 distinct2.3 limit2.4 sorted2.5 skip 3. 映射3.1 map3.2 flatmap 4 查找4.1 allMatch4.2 anyMatch4.3 noneMatch4.4 findFirst4.5 findAny 5. 归约6. 收集6.1 counting6.2 maxBy,minBy6.3 summingInt、summingLong、summingDoub…

1+X智慧安防系统实施与运维技能等级证产教融合基地建设方案

一、系统概述 1X智慧安防系统实施与运维技能等级证产教融合体系统融合了产业需求、教育培训和技能认证,通过课程培训、实训基地和实习实训等方式培养学员的技能水平,并通过技能认证来评估其能力,以满足智慧安防行业对人才的需求,并…

iMX6ULL 库移植 | Libgpiod 库的交叉编译及使用指南(linux)

GPIO口的操作,是很常见的功能。传统的GPIO sysfs接口已被弃用。自Linux 4.8起,内核提供了全新的操作gpio的方式libgpiod(C library and tools for interacting with the linux GPIO character device),当然也更高效&am…

Nuxt 菜鸟入门学习笔记三:视图

文章目录 入口文件组件 Components页面 Pages布局 Layouts Nuxt 官网地址: https://nuxt.com/ Nuxt 提供多个组件层来实现应用程序的用户界面。 入口文件 App.vue组件 Components页面 Pages布局 Layouts 下面逐一进行介绍。 入口文件 默认情况下,Nu…

vue3使用Elementplus 动态显示菜单icon不生效

1.问题描述 菜单icon由后端提供&#xff0c;直接用的字符串返回&#xff0c;前端使用遍历显示&#xff0c;发现icon不会显示 {id: 8, path:/userManagement, authName: "用户管理", icon: User, rights:[view]}, <el-menu-item :index"menu.path" v-f…