为什么大数据平台要回归sql 一点点思考

http://t.csdn.cn/UcKWP

前几天看了这篇文章,作为一名sqlboy,心里有些想法,想记录下来
也许以后再看 会有不同的感受

先总结一下 此文的描述吧

为什么大数据 要回归sql呢
主要有以下三点原因

1.数据中 结构化的数据计算计算 仍是重中之重
2.数据库的普及 作为数据的基本操作 sql的使用还算很广泛的 更利于移植
3.大数据厂商的支持

作者也说了sql的限制

1.性能低 这是sql执行的底层算法决定的

2.开发效率低 很难实现过程运算 就是一步写不出来,需要多次分步运算计算存在很多过程,特别是与数据次序相关的运算

3.开发效率低导致性能低 复杂SQL的执行效率往往也很低,这就又回到性能的问题了
复杂 SQL 的优化效果很差,在嵌套几层之后,数据库引擎也会晕掉,不知道如何优化。提高这类复杂运算的性能,指望计算平台的自动优化就靠不住了,根本手段还要靠写出高性能的算法

然后介绍了 开源机计算器 SPL…

以下是一些摘抄

SQL 发明之初的计算机硬件能力还比较差,要保证实用性,SQL 的设计必须适应当时的硬件条件,这就导致了 SQL 很难充分利用当代计算机的硬件能力,具体来说就是大内存、并行和集群。SQL 中的 JOIN 是按键值对应的,而大内存情况下其实可以直接用地址对应,不需要计算 HASH 值和比对,性能可以提高很多;

对于集群运算也是这样,SQL 在理论上不区分维表和事实表,JOIN 运算简单地定义为笛卡尔积后过滤,要实现大表 JOIN 就会不可避免地产生占用大量网络资源的 HASH Shuffle 动作,在集群节点数太多时,网络传输造成的延迟会超过节点多带来的好处。

————————————————
版权声明:本文为CSDN博主「慕城南风」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lovedingd/article/details/125179207

抛开作者推广的嫌疑 其实说的还算蛮正确的

但是我觉得 一个技术的诞生 其实是由其存在的场景决定的 那么为什么sql化
其实也是这样

1.数据的管理形式
数据的基本形式 其实就是表 无论是nosql还是sql
首先 离线数仓的基底为hive 就是表结构 处理结构化数据最方便的方式就是sql
数据库的存在 其实也是为了存储和计算一体化 这样做也是为了方便关机

2.数仓建模
如果你看数仓建模这本书 其实通篇都是在讲sql kimball提供了维度分析的概念
其实就是数据的管理形式 借助sql 体系化的构建数仓模型 在技术体系里 数据仓库存在的方式就是以sql为主的

3.sql的移植性和合理性
能不能推广技术 要看其是不是足够低成本的学习 sql很好的做到了这一点
其实 只要不是复杂的计算 sql还是很方便的
毕竟不能查一个数据 写一个代码…
基于这样的数据体系和管理模式 技术的发展也是sql化的 大数据诞生的各个框架
其实都是便于管理 无论是同步还是计算
也不能同步一次写一个代码不是… 功能都是一样的 就会存在框架化

我们可以看到 大数据框架基于sql的发展历程
hadoop–>hive–>sparksql—>atlas

简单的化可以这么说 sql更贴近于数据

再说说sql的限制
其实我的工作场景里 因为是有一个人搭建数仓的 其实在这种环境下
是很清晰的感受到 被框架的限制的

首先sql的计算 是要符合sql的逻辑的 这样就受到了sql的限制
举个栗子
1.你哪怕改一个字段 也要去 select 所有的字段,要么是* 要么是 字段
如果字段多 方便一点就是 select *,字段
[表达形式受限]

2.或者对于数组的替换【1,2,3,4,5】 case when是不可以的 需要炸开合并这个效率很低的
[函数受限]

3.如果一个数 想要求和最大值的差值 就必须要 group by 之后在进行
新的一个sql语句进行处理 那如果是平均值和方差呢 如果在复杂一点呢
没有变量的概念 要么在内存中 要么新建一张表
sql适合表计算 表的合并关联
但是不适合值的计算

大量的数据可不只包括表计算 在我的场景中 (健康度计算)
假如 一个人年龄60 那么他的收缩压和舒张压的值的健康范围就会缩小
同时随着 高血压和糖尿病的病情 所需要的监控也不同 高血压和糖尿病还属于两种情况
根据每次和上一次的时间 来衡量监控是否到位 如果没有监控还会存在其他逻辑算作失访

偏向于值的计算
多个数值依赖 和逻辑过程 出现的结果 这个sql就会乱作一团 而且难以维护和复杂…

写一个还行 通过100个 有40个 这个就及其复杂了 因为就不是一个或者几个sql能出来的

当前正在以sparkRDD代替计算解决这个问题

此文章为长期更新

希望自己解决了当前的问题 以及了解sql的执行 会有所体会

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值