万亿秒查是真地吗?比 ORACLE 快 N 倍是不是吹牛?

简介: 大数据产品常宣称“万亿秒查”,即能在万亿行数据中秒级返回查询结果。这并非全遍历,而是通过建立索引实现高效定点查找,对数级别复杂度使得现代计算机轻松应对。但对于需遍历的运算,如列合计,秒查在万亿行数据上难以实现,但在TB级数据上仍有可能。此外,与Oracle等传统数据库相比,现代AP数据库因列式存储、集群及内存优势,实现N倍速度提升,并非夸大。真正考验大数据技术的是能否提供独特算法降低计算量,而非单纯数据量与速度的宣传。

我们经常听到大数据产品宣传自己性能好,“万亿秒查”是个常见的说法,大概意思就是上万亿行数据中找出查出满足条件的数据,可以秒级返回。

这是真地吗?

看过“1T 数据到底有多大”那期的同学大概都会觉得不可能。万亿行数据,得有几十上百 T 了,想秒级处理,岂不是得要几万几十万块硬盘,这不太现实。

其实不然,秒查并不一定意味着全遍历。如果是用唯一标识号去查找(比如电话号码,不过也没有万亿个),建好索引后的计算量并不是很大,读取和比较次数大概是 40 次左右,现代计算机在 1 秒内完成这个计算量毫无压力,甚至还能有不少并发。这种定点查找任务的计算复杂度是对数级别的,数据量从 100 万行涨到 1 万亿行,查找计算量仅仅涨到 2 倍而已。只要存得下,几乎所有数据库都有这个本事,这毫不稀奇。当然,建索引会很慢,但那是另一回事了。

如果是需要遍历才能完成的运算呢?比如计算某个列的合计,索引在这里没有用了。

嗯,这件事,万亿行上想秒查是不太现实了,但针对 TB 级数据却是可能的。如果这些数据总共有 100 列,统计一列时只要读 1% 的数据量,可能也就只有 10G,这样有 10 块硬盘就能在数秒内扫描一遍了,这点配置对于现代服务器集群而言是个小菜,再大 10 倍也不是问题。

所谓能秒级处理 TB 级数据量的,很可能是这个意思!大家都能做到。

还有些产品喜欢和老牌知名数据库对比,比如 Oracle,经常听到宣称比 Oracle 快 N 倍的,这是不是吹牛吗?毕竟 Oracle 是世界级标杆产品,哪能随随便便就被快了 N 倍。
嗯,倒还真不是。

Oracle 的重点不是分析业务,也就说常说的 AP 业务,它主要是用来做交易的,也就是常说的 TP 业务。TP 数据库要采用行式存储。而 AP 数据库通常会采用列式存储。对于一个 100 列的数据表,某个运算只要用到其中两列。Oracle 采用行式存储时,基本上要把这 100 列都要读一遍,而采用列式存储的 AP 数据库,只要读 2 列就可以,这个读取量就会差了几十倍。这时候,快个 N 倍是很正常的,这也毫不稀奇,如果不能快个 N 倍那才是问题。

除了列存比行存外,还可能发生的是集群比单机,内存比外存等,就是比 Oracle 多用了数倍资源后跑出更快速度。总之,都是胜之不武。

所以,所谓比 Oracle 快 N 倍,很可能是这个意思,这不是假的,但并不值得夸耀。

事实上,Oracle 的优化器很强,如果不占列存和资源的便宜,很多专业 AP 数据库还不见得能跑得过 Oracle,特别基于 Hadoop 的的技术。

前面说了对数级算法的威力,万亿行的规模,对数一下后的计算量就剩几十了。其实还有反过来的情况,看起来不大的数据量,但运算量会大如天文数字。SPL 论坛上有个国家天文台的例子,数据只有 11 个 50 万行的表,总共不到 10G,但某分布式数据库动用了 100 个 CPU 算了 3.8 小时。因为这个运算是个乘法级的复杂度,总计算量是 1050 万 50 万 =2.5 万亿,3.8 小时能跑出来已经算是不错的了。

所以,考察大数据产品的性能,不能只是简单地看宣传语中说多大数据量能跑多快,那些说法都可能是真地,但并没什么意义。有了好算法,100T 可以秒查,没有好算法,10G 也可能 N 小时。

从这个意义上讲,考察大数据技术的性能,关键在于这东西是不是有提供与众不同的好算法,能把计算量降下去。

不过,在 SQL 体系下这些产品的差异,差能差到没边,好却好不到哪里去。因为 SQL 已经发展了几十年,成熟的优化算法全世界都知道,也很难有什么新东西,结果就是,那些不掌握这些算法的厂商真能差到没边,而掌握这些算法的厂商好却好不到哪里去,因为你能会我也能会。

但是,跳出 SQL 体系,就可能搞出新的算法了。上面说的天文台任务,其实也有算法能让乘法的一边对数一下,计算量大概 1050 万 log50 万 *2,能少 1 万倍。采用这个算法,esProc SPL 在 4 核笔记本上用了 2 分钟就跑出来了。

很遗憾,用 SQL 写不出这个算法,仅是正确描述计算逻辑就很费劲,写出代码就以 K 计了,数据库优化器也只能晕掉,老老实实执行就是 N 个小时。

esProc SPL已开源免费,欢迎前往乾学院了解更多!

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
安全 Java
Qt经典面试题:Qt开启线程的几种方式
Qt经典面试题:Qt开启线程的几种方式
369 0
|
网络安全 Nacos 数据安全/隐私保护
nacos常见问题之使用默认用户名密码提示错误如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
|
网络协议 测试技术 网络安全
|
6月前
|
数据采集 Web App开发 人工智能
如何让AI“看懂”网页?拆解 Browser-Use 的三大核心技术模块
Browser-Use 是一种基于大语言模型(LLM)的浏览器自动化技术,通过融合视觉理解、DOM解析和动作预测等模块,实现对复杂网页任务的自主操作。它突破了传统固定选择器和流程编排的限制,具备任务规划与语义理解能力,可完成注册、比价、填报等多步骤操作。其核心功能包括视觉与HTML融合解析、多标签管理、元素追踪、自定义动作、自纠错机制,并支持任意LLM模型。Browser-Use标志着浏览器自动化从“规则驱动”向“认知驱动”的跃迁,大幅降低维护成本,提升复杂任务的处理效率与适应性。
3345 29
|
11月前
|
SQL 运维 关系型数据库
MySQL Binlog 日志查看方法及查看内容解析
本文介绍了 MySQL 的 Binlog(二进制日志)功能及其使用方法。Binlog 记录了数据库的所有数据变更操作,如 INSERT、UPDATE 和 DELETE,对数据恢复、主从复制和审计至关重要。文章详细说明了如何开启 Binlog 功能、查看当前日志文件及内容,并解析了常见的事件类型,包括 Format_desc、Query、Table_map、Write_rows、Update_rows 和 Delete_rows 等,帮助用户掌握数据库变化历史,提升维护和排障能力。
|
人工智能 开发框架 算法
Qwen-Agent:阿里通义开源 AI Agent 应用开发框架,支持构建多智能体,具备自动记忆上下文等能力
Qwen-Agent 是阿里通义开源的一个基于 Qwen 模型的 Agent 应用开发框架,支持指令遵循、工具使用、规划和记忆能力,适用于构建复杂的智能代理应用。
9869 13
Qwen-Agent:阿里通义开源 AI Agent 应用开发框架,支持构建多智能体,具备自动记忆上下文等能力
|
Docker 容器
docker设置国内镜像源
docker设置国内镜像源
42217 5
|
人工智能 自然语言处理 数据安全/隐私保护
扣子(Coze)搭建一个AI智能体
扣子(Coze)搭建一个AI智能体
5136 2
|
SQL 安全 网络安全
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
1837 0