图数据库的挑战是什么?

news2024/9/20 1:04:50

无论是什么数据库,如果不突出性能这个第一生产力,那么还有什么继续深入了解它的必要呢?图数据库尤其如此——因为图数据库解决的最主要的挑战就是传统数据库在面对深度数据间的关联关系时指数级性能下降、时耗增长的问题。

这里我们就不去赘述到底为什么需要图数据库—— 简而言之,它的出现与发展和不断向前迭代是企业IT信息化走向智能化的必然,也是从SQL到NoSQL再到Graph & Deep Data的必然。

然而,并非所有的图数据库都是类似的,目前我们已经看到了几个不同的阵营:

如果按照魔力四象限来区分的话,它们会如上图所示分布在各个象限中。显然,第一象限突出了2个特点:

1. 高性能;

2. 原生图支持。

有些厂家认为原生图是个噱头,这个恰恰说明这些厂家的开发人员对于原生图的概念的模糊——原生图隐含的意义是原生图存储,或者说是高性能存储引擎支持,也可以说是近邻无索引存储体系架构的搭建 ——试想,如果一个图计算引擎,它底层的存储还在依赖关系型数据库或者其它NoSQL数据库(例如JanusGraph),那么你可以指望它有高并发、低延迟的能力吗?

回到性能,我们需要明确一点的是,很多系统都号称是毫秒级反应,听起来很快。但是笔者要指出的是现代CPU是在纳秒级工作的,毫秒已经是百万次纳秒操作了。况且,有些图数据库系统所宣称的毫秒级响应指的是最基础的操作(例如对顶点、边的搜索,或者最多1-hop类的路径或K邻操作),这种简单的操作,难道不应该在微妙级响应吗?

我们来看一下在真实的金融场景中,在生产环境下Ultipa实时图数据库与其它系统的性能比较:

例如,1000次的点、边查询:

注意上图中所示的是1000次面向顶点、边的查询操作,Ultipa的平均每次查询的时间在110-140微妙(~0.1毫秒)——约10倍快于Neo4j。

而,上图则展示了在进行1-3-5-10层(度)的K邻、路径查询,以及在带有过滤条件下的Ultipa vs. Neo4j vs. ArangoDB的性能比较。注意在上图右侧在进行深度为5步的路径查询中,Ultipa的平均时延为2ms,而其它系统则数千倍甚至万倍慢于Ultipa!

以上的两个截图中的测试数据集分别为阿里妈妈的公开数据集(1亿边)以及全国工商数据(3亿点边规模及属性)。

下图则是图数据库公司都可能会遇到的Twitter数据集上的测试结果:

Twitter脱敏数据集有个特点是存在一些典型的超级节点,42M顶点,~15亿条边,存在一些出度超过100万的顶点(所谓的KOL大V)。Twitter数据集只是拓扑结构上分布不均匀,但是数据整体间关联度非常高——然而,它并没有任何点、边属性,因此面向Twitter的benchmark测试其实只能算上是一种暴力计算的能力,距离真实的工业化(金融行业)场景中的需求还有很大的差异(差距更为准确 ——大家可以理解为,当你的系统为了能更好的支持真实的业务场景时,例如数据、事物一致性的时候,你的系统可能不得不牺牲掉一些性能因素——这也就是为什么很多系统都是越做越慢——随着你的核心代码越来越臃肿,真正能保持性能极致的系统,少之又少)。

关于高并发系统,还有一个点很多人都没有get到,以为任何分布式系统都是高并发的,这个理解非常不准确。高并发主要有两点:

  1. 在服务器端的高并发;
  2. 在客户端的高并发。

怎么理解上面两句话呢?一个是你的系统可以支持多少用户同时访问你的图数据库(客户端),另外就是每个请求到达你的图数据库的服务器端的时候,你怎么实现的高并发 —— 这个地方最为tricky——比如一个5-hop的计算请求,高并发的服务器端会根据数据特征和请求特征来动态的匹配并行计算资源来以BFS(广度优先搜索)的方式,结合近邻无索引数据结构,以每个原子级操作为O(1)的算法复杂度,从原始顶点出发递归运算5层后返回所有距离出发顶点最短路径为5步的所有unique(去重)顶点集合—— 这个过程中如果实时观测CPU的利用率,可能会达到物理极限(如果不做任何并发规模限制的话)——在Twitter数据集上,这个特征会很容易体现出来,一个请求,例如顶点12的6-hop计算,16-core的单个CPU上可能可以达到3200%.……那么问题来了:除了Ultipa,我们并没有发现任何其它系统可以有这种高密度并发的能力!这种能力不是说你的分布式集群里面有32台实例,然后每个实例只有1个线程跑起来,你就可以完成这个6-hop的操作的!32台机器*1线程每台机器的效率远远(指数级低于)低于1台机器上面32个线程的并发。因为图数据库的数据是高度关联的,当你暴力切割分图后,你在面对深度关联查询的时候的性能一定是极其糟糕的!

能做到单实例的高并发,再开始迭代演进到多实例的分布式系统的超高并发。而很多互联网厂家最喜欢的就是宣称自己的系统是如何水平分布式——然而到今天为止他们的系统既没有怎么高密度并发,也没有做到如何低延迟—— 这个问题的本质是所有高性能系统的底层一定是在存储与计算(还有网络层)做了很多工作,并且面对图数据集的特征做了很多性能优化与功能适配——这个的挑战和做过几年的秒杀抢单完全不是一码事儿。这个挑战是从底层就解决掉传统数据库的存储与计算逻辑—— SQL是面向存储的,而图数据库是面向计算的,把这两者混淆了之后,会走很多弯路。

图数据库还有很多内容值得探讨,希望大家多多交流。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uni-app自定义多环境配置,动态修改appid

背景 在企业级项目开发中,一般都会分为开发、测试、预发布、生产等多个环境,在工程化中使用不同的打包命令改变环境变量解决不同环境各种变量需要手动修改的问题,比如接口请求地址,不同环境的请求路径前缀都是不同的。在使用uni-…

百度王海峰披露飞桨生态最新成果 开发者数量已达800万

8月16日,由深度学习技术及应用国家工程研究中心主办的WAVE SUMMIT深度学习开发者大会2023在北京举行。百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰做了主题演讲。王海峰首次对外表示,大语言模型具备了理解、生成、逻辑、记忆等人工智…

CAN协议

CAN总线特点: 多主机多从机 串行异步通讯、没时钟线 2.只有CAN_HIGH和CAN_LOW两条差分信号 3.连接方式多个节点挂在总线上,比较类似I2C总线,可以再SCL和SDA上挂载多个从 4.每个设备都是一个节点Node,节点直接可以相互通讯&#…

使用PHP实现随机调用图片

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 预览地址:ht…

JavaWeb博客项目--推荐算法--完整代码及思路

基于用户的协同过滤算法(UserCF) 因为我写的是博客项目,博客数量可能比用户数量还多 所以选择基于用户的协同过滤算法 重要思想 当要向用户u进行推荐时,我们先找出与用户u最相似的几个用户,再从这几个用户的喜欢的物…

【NX】NX二次开发中如何绕固定轴旋转矢量

如何让任意矢量绕着任意轴旋转一定角度,得到新的矢量,在NX中,通过矩阵运算,可以直接得到目标向量。 直接上代码: AUTUMOON::AUTUMOONMathVector3d CAMToolPathToolkit::RotateVector(const AUTUMOONMathVector3d &…

版本控制工具Git集成IDEA的使用(超详细)

目录 一、团队内协作和跨团队协作讲述 1、团队内协作 2、跨团队协作 二、Gitee的使用 1、注册网站会员 2、用户中心 3、创建远程仓库 4、配置SSH免密登录 三、集成IDEA,Git项目搭建 1、本地仓库搭建 1)创建一个新项目 2)打开终端&…

windos安装oracle数据库图文教程

首先准备安装包, 链接:https://pan.baidu.com/s/17ltLy9TCwb5fAlaWq3hW4g 提取码:dsmd 这个版本是11.2,如果需要其他版本可以通过官网下载。 下载完成之后,保存路径不要有中文。 右键解压,会多出来个data…

重建与突破,探讨全链游戏的现在与未来

全链游戏(On-Chain Game)是指将游戏内资产通过虚拟货币或 NFT 形式记录上链的游戏类型。除此以外,游戏的状态存储、计算与执行等皆被部署在链上,目的是为用户打造沉浸式、全方位的游戏体验,超越传统游戏玩家被动控制的…

USB2.0与USB3.0接口的PCB布局布线要求

USB是通用串行总线的英文缩写,是连接外部装置的一个串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通迅产品,并扩展到摄影器材,数字电视(机顶盒)、游戏机…

智能仓储管理系统(自动化仓库管理解决方案)

企业实际的仓储管理中,往往会出现那样这样的错误,归根结底,主要是由于没使用合适的仓库管理工具。相反,人工使用合适的仓库管理工具,不仅可以在日常仓库管理方法中根据采集到的产品信息数据,大大地提高管理…

Leangoo领歌免费敏捷看板工具做—用户反馈管理

一个产品在面向市场之后势必会收到来自各个渠道的用户反馈。好的反馈有利于公司品牌的建立,挑剔和负面反馈可以帮助我们了解到用户最真是的需求和使用场景,有利于优化产品提高服务。更加能够提升用户的粘性。 在进行用户反馈管理时,用户反馈…

selenium 选定ul-li下拉选项中某个指定选项

场景:selenium的下拉选项是ul-li模式,选定某个指定的选项。 from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 显示等待def select_li(self, text, *ul_locator):"…

随手笔记——Pose Graph理论以及g2o实现

随手笔记——Pose Graph理论以及g2o实现 说明源代码CMakeLists.txt 说明 源代码 #include <iostream> #include <fstream> #include <string>#include <g2o/types/slam3d/types_slam3d.h> #include <g2o/core/block_solver.h> #include <g2o…

Python实现两个主机的数据库同步

实现两个主机间mysql数据同步 import pymysql import pandas as pd from sqlalchemy import create_engineHOST_SUBOR_SYNCLIST (account_t, measure_system_t) # 需要更新的数据表def syncSqldata(source_db, target_db):for table in HOST_SUBOR_SYNCLIST :query "SE…

小米有品众筹,小米上新3D打印机!米家3D打印机购买前必看的注意事项!

小米推出3D打印机&#xff0c;米家3D打印机购买前必看 3D打印机在人们的生活中发挥着巨大的作用&#xff0c;无论是在科研实验室还是家庭工作室&#xff0c;它们正以惊人的速度改变着我们的世界。最近&#xff0c;科技巨头小米也加入了这一领域&#xff0c;推出了一款全新的&q…

从零实战SLAM-第十课(回环检测与建图)(完)

在七月算法报的班&#xff0c;老师讲的蛮好。好记性不如烂笔头&#xff0c;关键内容还是记录一下吧&#xff0c;课程入口&#xff0c;感兴趣的同学可以学习一下。 --------------------------------------------------------------------------------------------------------…

未来数字银行的样子

对银行长期发展来讲&#xff0c;这意味着将关闭和减少 低效率的实体分行&#xff0c;加速向数字化发展。实现成本节省和 IT 预算提效的需求&#xff0c;将为数字柜台和银行代理点创造新的机遇。 一个崭新的世界&#xff1a;未来数字银行趋势图 现在是银行迎头赶上并为客户提供超…

NFTScan NFT API 在 DID Protocol 开发中的应用

自互联网发展以来&#xff0c;Web2.0 时代产生了网络社会&#xff0c;社会已经不再局限于地理边界&#xff0c;而 Web 3.0 引入了去中心化的理念&#xff0c;强调个体数据隐私和可信互操作性。在这个新的时代中&#xff0c;去中心化身份&#xff08;Decentralized Identifier 即…

百万奖金、大厂offer请你接收!

第三届中国移动“梧桐杯”大数据创新大赛 火热进行中 报名速来~ 今年大学生就业形势格外严峻&#xff1a;全国高校毕业生人数破千万为历年来最多&#xff0c;校招竞争激烈&#xff0c;高薪岗位宁缺毋滥。想弯道超车拿到心仪的offer&#xff1f;仅靠“求神拜佛”对着神明念自己…