图数据库知识点9 | 大数据框架与图数据架构异同

开门见山,直奔主题,接续前面的知识点:

【图数据库知识点1|图数据库与关系型数据库的区别?】

【图数据库知识点2 | 图思维方式】

【图数据库知识点3 | 图数据库解决了什么问题?】

【图数据库知识点4 | 图计算与图数据库有什么区别?】

【图数据库知识点5 | 图数据库只存不算?】

【图数据库知识点6 | 如何正确评测图数据库?】

【图数据库知识点7 | 为什么你遇到的图数据库不靠谱?】

我们可以开始讨论一个新的知识点:大数据与图数据之异同。

大数据框架与实践早已深入人心,但是,你对大数据的框架越是熟悉,可能对图数据系统的建设就越为不利!

这个知识点的底层逻辑可能会令(一些)人费解。要搞明白个中原因,先要对大数据的框架、流程、机制有个完整的概念,推荐人民邮电出版社2023年新书《揭秘云计算与大数据》。

图片
嬴图团队2023年新作《揭秘云计算与大数据》

大数据框架有很多流派,在此无需赘述。但是,绝大多数大数据框架都会落入下面几种架构选型上:

  • 存算分离架构:本质上,这就是为批处理、机器学习模式而生的,效率不高,后面再展开分析。

  • 流批一体架构:这个架构新锐的数仓很喜欢用,毕竟流数据听起来就很新奇——不明觉厉。

  • 内存加速架构:本质上是上面两种架构的一个自然延展,带来了一些性能上的提升,但是距离真正的实时架构存在差距。

  • 存算一体架构:这个架构通常在商业化产品中可见,开源的反而不多,这个点也很有趣,后面展开。

因为开源的大数据框架不但多,而且运维体系相对成熟,所以——非常重要的背景知识——这些框架很容易被图数据库创业者或新玩家拿来白嫖。毕竟,大多数人(99%以上)没有能力独立开发一套新的架构。换言之,即便是在中国,没有(至少)1 亿元 RMB + 5 年(含)以上的迭代开发,一款图数据库根本不可能变得成熟+高效。钱与时间,两者相辅相成,缺一不可。那些刚出来 2—3年就已经什么都有、什么都强的产品,想都不用想,100%是白嫖+抄袭的PPT 创业或是大厂KPI项目。

言归正传,上面归纳的几种架构,映射到图数据库上面的时候,就很自然地会出现这么一种情况:无论你是存算分离还是存算一体化,亦或流批图一体化,单一架构能应对所有的场景吗?

答案是明确的:不可能。单一的架构不可能满足所有的应用场景。

图片
图:图场景归纳

参考上图中的各类场景,我们可以略作对号入座。以存算分离的架构而言,它显然很适合偏重对于时效性要求不高的机器学习类、线下类场景——换言之,就是批处理类场景。存算分离在本质上是分布式的存,但是可能会倾向于以集中式的方式进行计算——这也是存算分离架构的本质,GFS (Google File System) 与 MapReduce这2 篇 20 年前的论文开创了这个领域,而Yahoo!开源的 Hadoop 项目则贡献了完整的HDFS + MR 源代码。今天的存算分离系统,如果不是白嫖 Hadoop,那么就是沿着Hadoop 的技术路线迭代出来的。分布式的存储,当然会让存储(IOPS)的效率变高,然而计算的效率如果还继续分布式,就会变得很低——这个原因有两层:

1.  存储的分布式割裂了数据间的关联关系,因此计算的时候要把分散的数据尽可能向一处归拢!而归拢聚集的过程,必然存在网络传输!当文件或数据块很零碎的时候,传输效率会指数级大打折扣!100Gbps 的效率这个时候还没有 1Gbps 的网卡传输一个大文件高效!通俗一点,就好比车辆不断地在5km/hr启停,始终不能跑到120km/hr高速巡航类似的意思,只不过,更加的dramatic(极端)——这个网络延迟+启停效应会让系统应对图查询(或多表关联)的效率极速变低。

2. 因此,最高效的计算就是把数据尽可能压入(映射过程)到一台高配的服务器的内存里,方便低延迟让CPU 获取数据进行计算。如果这个时候,还是多机计算,效率怎么可能会高过单机的高并发?

这里面又涉及到另一个知识,对于一台服务器的计算能力的低估——大数据框架出现普遍在距今15—20年前,那个时候的CPU 的核数(线程数x1或2),比今天的少了N 倍!而 Hadoop 这种系统,理念上就是用一堆烂机器来做分布式存储,然后凑合着能做数据分析,这个过程并不高效,但是凑合能用。这个系统诞生的历史背景是,Yahoo!内部彼时自研了全套的分布式数据分析系统,基于Linux,甚至把众多的Linux 上原生的很多函数都改造为高并发运行,例如sort 的效率改造后提升了100—1000倍之多——前提是这些数据分析服务器都是当时顶配的服务器(比如 8 核 32GB 内存,注意,当年这就是顶配,而今天,这种配置是垃圾!)。而 Doug Cutting 造Hadoop 则是反其道行之的, 首先它是个边缘项目,其次,他使用的都是其他核心项目废置的低配机器(1—2 核,4GB 内存的水平)。注意,这个里面你应该读出话外之音:Hadoop 并不是 Yahoo!内部的高价值、高优先级系统。这也是为什么它最后被捐献给 Apache Foundation了。我们并不是说 Hadoop 不会高并发(它用的是多服务器并行处理,并非单机上高并发),但是它绝不是一个追求高效的系统。这里面要表达的是:单机100 核的并发计算能力,远超10 台服务器 10 核的并行计算能力,更超越100 台 *1 核的能力—— Again,还是网络交换造成的性能落差——这种性能落差还要大于本地硬盘!这也是存算分离的一个自带特点。但是,我们看到今天中国的数仓和图数据库公司,明摆着的存算分离的架构,各项能力与性能指标却已经上了天了,是不是造假亦或有意误导客户,大家应该心里有数。很多厂家甚至根本就没有并发这一说……如果各位看官看到过中科系的图数据库企业能用ClickHouse + JavaScript 来做图数据库,就明白什么叫做本土特色的软件开发模式了(注:Javascript 天然的是单线程运行)。

需要说明的是,并发有两种。第一种是单个查询的并发,比如环路查询或者多层下钻操作,是否能并发(无论是多线程跑还是多机跑);第二种是多个查询的并发,类似于负载均衡的概念,这个一般都会落在多机上,当然单机上也可以多线程并发。笔者见过奇葩的图数据库选型技术要求是:要保证每个查询都会落在多个服务器节点上,以此来证明是“真”分布式。如上文所述,诸位可以想象,这种分布式的实现得多么低效!每个查询都一定会涉及到网络数据传输,这是分布式系统在计算环节最不愿意看到的。二货们难道不知道,如果来了1 万个类似的查询,那么那几台服务器还不得很快跑死?明明可以像兔子一样极速前进,却非要打折腿当乌龟——这就是所谓的互联网水平分布式带来的科技进步?

国内在技术架构选型上面被互联网们忽悠的都瘸了。当美国同行们试图通过硬件和软件的并发能力来提升算力时候,中国同行们,跟在互联网屁股后面就是一招鲜,我是分布式,我是皇帝数据库,我遥遥领先……尽管很多场景下,所需的数据量并没有很大(千万到亿级的点、边的水平,却一副要处理千亿点边plus的阵仗,很魔幻)。

图数据库里在技术层面上还有个挑战就是如何做数据分片(sharding),这个问题有很多解决方案,但是无论哪种方案,都会降低计算效率。再重申一遍,可能会提升存储(落盘)效率,但是计算效率在很多情况下一定会降低。除非你的查询根本就无关图(离散的查询),那又是另一码事儿了。

图数据的分片方法论:

  1. 点切:所谓点切就是把一个点与其关联的边分散在多个物理节点上,然后再通过某种 proxy/nameserver 的方式来关联起来,这个过程本质上就引入了更复杂的 lookup/notification/synchronization 机制,所以效率呢?不言而喻。

  2. 边切:边是一个比顶点复杂得多的数据结构(边天然的就有方向、起点、终点这些必要 meta 数据),因此切边实际上相当于让一条边至少分布在两个服务器节点上……点切与边切都会有各自的特点,前者的践行者(开源者)多一些。无论哪种,遇到的挑战依然是网络延迟、数据交换带来的效率问题!

  3. 应用决定如何分图:这个相当于按业务场景来构图,然后再决定如何与源数据(数仓比如)对接获取数据——这个和上面两种模式相比,可能是既切点又切边。本质上,所谓分图,就是多图集,一个业务可能对应到多图,多个业务则对应更多的图,基本上是个 M-to-N的对照关系。在多数业务场景中,这种按照业务逻辑与边界来设计图数据建模的方式所获得的效果会优于前两种模式。然而,这种模式遇到喜欢大而全的IT与科技运维部门,就会受到阻挠,again,很魔幻。科技部门就是喜欢一体化运维,全局一张图,妥妥地数仓思维,本质上是懒、怠,阻挠业务发展。

  4. 虚拟化内外存,但是不分片:国内几乎没有这个领域的尝试,但是海外有从软件或硬件角度来解决这个问题,相当于把多机的内、外存全盘虚拟化,图数据就不再需要考虑分片、分图的问题了——实现了全局一张图。至于效率,提升有限,成本却保证会加倍上涨,这个模式在国内几乎不会看到,不再展开。等经济上行了再说。

还有个知识点,全局一张图:我们知道在数仓时代,有些(金融)机构喊出了全行一张表的概念,实际上这是不可能的。没有人蠢到会用一张大表来表达一切,这是典型的一刀切思维方式。表结构的低维性,注定了一张表的局限性很大很大。这些事为什么数仓不但要分出来好几层(4—5 层),还要无数的中间表、临时表,不一而足。而多表关联,在遇到大数据集时,那真是屋漏偏逢连夜雨,good luck,buddy……那么,图时代,是否全行一张图就能搞定呢?笔者认为,这个也是大忽悠。一张图是不可能放之四海而皆准的。一张图思维是典型的数仓思维。而数仓思维绝对不可能应对比如像在线实时、交互式查询(计算)场景。而且,不同的场景可能会用不同的构图方式,这是由业务特点所导致的需要用不同的数据建模(graph data modeling)所决定的。具体而言,就是点、边、属性都可能会产生转化,以及不同的场景下,还有简单图 vs. 多边图等多种模式,怎么可能能“一张图”完事儿?这也太能忽悠了。读者需要擦亮眼睛,凡是鼓吹全行、全司一张大图的,都是不求甚解的——而且大概率都是从图谱入手来忽悠的,图谱有算力吗?图谱能深度下钻吗?图谱能实时计算不预计算、不缓存、不批处理吗?

前段时间,某国内一线的金融机构采购图数据库系统,6 个存储节点,25 个计算节点,数据规模宣称很大,然而,这个里面我们但凡稍动脑子分析一下:基本上能看出架构上采用了内存映射模式,从6 个存储节点往25 个计算节点映射。这里面6 个节点存200 亿点边,效果那可真是一言难尽。

1. 6个节点对200亿这种存储配置,连高可用都算不上吧——反正就是能分片存下那就是不太可能还有空间做HA高可用? 

2. 映射的逻辑,数据就是静态的,更谈不上什么HTAP(TP+AP混搭)。这套架构在本质上和Apache Spark还是一个套路,十几年的老架构了。当然,如果采购方就是要在老路上走,就是 T+1 甚至 T+N的高延迟数据分析,那咱也无话可说。

在后面的知识点中我们会分享为什么映射这个逻辑在有些场景下会非常有问题……稍安勿躁。

最后还有个知识点,普及一下。图数据和大数据的规模一样吗?

答案是:不一样。

我们先假设图数据库和大数据的规模一样,那么,不好意思,您的图系统妥妥得是万亿规模的。很好,这就是目前国内普遍对待图系统的态度。要做系统就是万亿级别的,项目总成本还不能过100 万RMB(甚至 50 万以下)。最好用很多很多低配的机器(反正国内也买不到高配的机器,怎么 low 怎么来)——但是性能指标各项必须顶呱呱。就这,国内的厂家还能在竞标的时候做出:图数据库白送,卖XX 的行为……

现实比小说还魔幻。

言归正传,我们举个例子,数仓或大数据系统里面的数据,99%都是冗余类型的,比如 IOT 数据,都已经到每毫秒采样多少组数据的水平了,每天每组设备都上亿的水平,一年采集的数据百亿规模起,还要存 3 年,多组传感器就是万亿规模。俗话说:Data is new oil, Data is gold... 这些数据难道不得都入图?那不就是万亿规模图吗?

你要是这么用图来分析,那么,很遗憾的告诉你,你这个系统就是 100%的 GIGO 系统。英语补习时间: GIGO = Garbage In, Garbage Out. 中文直译:垃圾进,垃圾出。

以上面的 IOT 场景为例,在图分析里面,你要入图的数据,对于单个传感器而言,无非是平均值、最大、最小值,或者一些其他数学统计值(例如Standard Deviation),这些才更有价值,你的万亿规模纯属障眼法,根本就是心魔。这么压缩后,你的数据恐怕只有百万规模。你是怕规模太小,不好立项吗?你把图系统软件单价提上去不就好了?内卷有意思吗?

所有追求大而全、追求图数仓规模的图数据库系统建设目标的,都违背了实事求是的原则。

写到这里,总觉得应该再说点啥,算了,不说了,都不容易。

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

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

相关文章

基于Echarts的大数据可视化模板:智慧交通管理

目录 引言智慧交通管理的重要性ECharts在智慧交通中的作用智慧交通管理系统架构系统总体架构数据收集与处理Echarts与大数据可视化Echarts库以及其在大数据可视化领域的应用优势开发过程和所选设计方案模板如何满足管理的特定需求模板功能与特性深入解析模板提供的各项功能模板…

2023美图创造力大会开幕,美图发布AI视觉大模型4.0

12月5-6日,主题为“未来AI设计”的美图创造力大会(Meitu Creativity Conference,简称MCC)在厦门举行。 本届大会由美图公司与站酷联合举办,聚焦于设计师生态和AI设计趋势。大会现场发布《2023年度AI设计实践报告》&am…

JSON 语法详解:轻松掌握数据结构(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息

文章目录 摘要1. 查询CPU使用率命令:top -bn1 | grep \"Cpu(s)\" | awk {split($0,arr,\" \");print 100-arr[8]}2. 查询内存命令(单位:G):top -bn1 | grep \"KiB Mem\" | awk {split($…

学生档案管理系统设计

摘要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生档案信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量…

CoreDNS实战(四)-编译安装External Plugins

1 External Plugins概述 coredns官方对于插件的分类基本可以分为三种:Plugins、External Plugins和其他。其中Plugins一般都会被默认编译到coredns的预编译版本中,而External Plugins则不会。官方的文档对外部插件的定义有着明确的解释,主要…

使用 javascript 模拟 git diff 命令实现文本文件差异比较

diff.html&#xff1a; <!DOCTYPE html> <html> <head><title>文件比较</title><meta charset"UTF-8"> </head> <body> <h1>文件比较</h1> <form><label for"file1">版本1&…

第十五届蓝桥杯模拟赛B组(第二期)C++

前言&#xff1a; 第一次做蓝桥模拟赛的博客记录&#xff0c;可能有很多不足的地方&#xff0c;现在将第十五届蓝桥杯模拟赛B组&#xff08;第二期&#xff09;的题目与代码与大家进行分享&#xff0c;我是用C做的&#xff0c;有好几道算法题当时自己做的也是一脸懵&#xff0c…

一键抠图1:Python实现人像抠图 (Portrait Matting)

一键抠图1&#xff1a;Python实现人像抠图 (Portrait Matting) 目录 一键抠图1&#xff1a;Python实现人像抠图 (Portrait Matting) 1. 项目介绍 2. 抠图算法 3. Matting数据集 4. MODNet模型 (1) 项目安装 (2) 数据集说明 (3) MODNet模型 5. Demo测试效果 6. 源码下载…

初级数据结构(一)——顺序表

文中代码源文件已上传&#xff1a;数据结构源码 1、顺序表的特点 1.1、数组 现实中数据记录一般都记录在表格中&#xff0c;如进货单、菜单等&#xff0c;它们的最大特点就是有序。表述中可以用第一项、第二项、第 n 项来描述表格中某个数据或者某串数据。在 C 语言中&#…

开启三层交换机DHCP服务

二层交换机上不需要配置任何东西&#xff0c;只需要在pc机上开启dhcp服务&#xff0c;配置好LSW1后就可以自动获取到IP地址。 sys Enter system view, return user view with CtrlZ. [Huawei]sys sw1 [sw1]dhcp enable Info: The operation may take a few seconds. Please wai…

BUU UPLOAD COURSE 1

传一个cmd.php木马文件 访问一下这个图片地址 发现什么都没有&#xff0c;在hackbar里面连接一下我们的木马 然后看到了一些目录 然后直接查看flag就出来了 这里也可以用蚁剑去连接 直接访问地址&#xff0c;拿着地址去连接就行了。

大数据:sql,数据挖掘刷题

大数据&#xff1a;sql 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&#xff0c;尤其sql要学&…

22款奔驰C260L升级小柏林音响 无损音质效果

奔驰新款C级号称奔驰轿车的小“S”&#xff0c;在配置方面上肯定也不能低的&#xff0c;提了一台低配的车型&#xff0c;通过后期升级加装件配置提升更高档次&#xff0c;打造独一无二的奔驰C级&#xff0c;此次来安排一套小柏林之声音响&#xff0c;效果怎么样&#xff0c;我们…

剪刀石头布游戏

csdn问答社区的一道题目&#xff0c;题目描述都像一篇论文了&#xff0c;界面设置不敢恭维&#xff0c;不过也算是可练手工程。 (笔记模板由python脚本于2023年12月05日 22:15:03创建&#xff0c;本篇笔记适合熟悉Python字典、列表、字符串的coder翻阅) 【学习的细节是欢悦的历…

[JavaScript前端开发及实例教程]计算器井字棋游戏的实现

计算器&#xff08;网页内实现效果&#xff09; HTML部分 <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>My Calculator&l…

微信小程序基础

1.小程序发展史 微信小程序之前&#xff0c;是使用weixin-sdk进行开发&#xff0c;调用视频&#xff0c;摄像头等。 微信小程序weixin up端&#xff0c;所以PC端的window这些没有&#xff0c;运行环境是IOS&#xff0c;安卓等&#xff0c;有一些特殊的调用录音功能&#xff0…

JavaScript 安全的《加/解密处理》的实战--案例(二)

前言: 在Web开发中&#xff0c;安全性一直是一个重要而复杂的议题&#xff0c;尤其是与敏感数据操作有关时。数据传输地过程中需要保证信息绝对的安全性&#xff0c;包括了诸如用户名、密码、个人信息等&#xff0c;这就需要对这类信息进行加密与解密。本案例&#xff08;二&a…

在AWS Lambda中使用FFmpeg处理m3u8视频流

大纲 1 部署有FFmpeg功能的Lambda环境1.1 部署层1.2 部署代码1.2.1 FFmpeg指令1.2.2 代码 2 配置Lambda角色权限2.1 选择角色类型2.2 设置权限2.3 保存角色2.4 绑定角色 参考文献 在直播里领域&#xff0c;我们经常需要对视频流进行处理。FFmpeg则是该领域中处理的利器。这篇文…

根文件系统的开机自启动测试

一. 简介 本文在之前制作的根文件系统可以正常运行的基础上进行的&#xff0c;继上一篇文章地址如下&#xff1a; 完善根文件系统-CSDN博客 在前面测试软件hello 运行时&#xff0c;都是等 Linux 启动进入根文件系统以后手动输入 “./hello” 命令 来完成的。 我们一般做好产…