转自:https://zhuanlan.zhihu.com/p/100761130

引子
有人在某个专注SQL的公众号留言如下:

对SQL Server的鄙视
这个留言触碰到一个非常敏感的问题:搞关系型数据库还有前途吗?现在都2020年了,区块链正火热,AI人才已经“过剩”,大数据都成了稀松平常的萝卜白菜,你却还在搞SQL Server? 你还在搞SQL?


原因
最近10年,数据管理领域的变化可谓精彩纷呈。什么Hadoop, Spark,MemcacheDB, Redis, Vertica, HANA, Cassandra, MongoDB, InfluxDB,TiDB等等,不一而足。各类高端峰会、论坛确实只见AI, 大数据,很少见传统关系型数据库的身影了。

初步分析下来原因有四:

  • 其一

云计算的兴起跟开源数据库的大规模应用,大大降低了算力以及数据存储的成本。
以传统关系型数据的龙头老大Oracle为例,随着互联网的兴起,海量用户产生了海量数据,但当Oracle大规模部署的时候,不仅Oracle软件本身贵,与之配套的IBM小型机+EMC的存储开支也相当庞大。比如将Oracle的数据集群从一个房间搬到同一个数据中心的另外一个房间,收费都要十几万。软硬件维护成本,包括对管理员的要求也非常高。

另外Oracle本身也有性能的上限,其次是闭源的黑盒子。对于没碰到过的场景,无论再怎么努力,也是无法预测可能出现的问题的。
中国的互联网公司大部分都草莽出身,对于性价比极为看重。当年的互联网老大美国的雅虎公司开始率先使用MySQL数据库,中国的互联网公司随之跟进。

最典型的例子是阿里巴巴。阿里巴巴曾经被称为Oracle的“明星客户“,”黄埔军校“。但随着注册用户数激增,用户产生的数据也越来越多,淘宝启用了全亚洲最大的Oracle RAC集群,阿里巴巴B2B中文站的数据量也因数据量大和业务要求,每年早上08:00—09:30之间CPU保持98%的使用率,服务器负载也超高,即使采用冷热隔离的方式也解决不了大容量数据且大并发的难题,更换存储设备不久又会再次出现这样的状况。

阿里巴巴被迫“攒出”一条去IOE的技术路线:“低成本、线性可控、去中心化(即分布式):去IBM,PC Sever替代小型机;去Oracle,用MySQL替代;去EMC,用中低端存储”。
在之后的爆发式增长中,包括以2014,15,16年双十一为代表的业务高峰,阿里基于开源版本搞出来的MySQL分支很好地支撑了极其严苛的业务要求,最终很方便云化、同时又开源的MySQL在国内的互联网公司逐步开始取代Oracle的江湖地位,成为诸多中国互联网企业的首选。

  • 第二

通用硬件成本的降低。随着摩尔定律的作用,甚至出现了HANA,, Vertica,InfluxDB等等很多内存或者分布式内存数据库。
那么现在云计算跟云存储到底有多便宜呢? 看看今天刚从某网站截取的广告吧:

某网站的云主机广告
这种面向市场大规模销售的产品,因为可以采用廉价的PC Server,可以做到真正的白菜价,这在10年前是根本无法想象的。

  • 第三

另外MySQL代码跟文档都是公开的,这样对数据库开发维护人员的要求相应的也就大大降低了。

  • 最后

从SQL 发展到NoSQL,支持半结构化数据,非结构数据的数据库大放异彩,之前这类无法处理的非结构化数据难题得到了解决,非结构化数据处理成为标准配置,似乎占据了市场热点。而NewSQL尚在发展中。


发展
数据库的发展方向大致包括以下几个方面:
- 由单机、集群向彻底分布式发展,目前Oracle等数据库已经实现
- OLTP跟OLAP的融合,这个特性很早就已经实现了
- 结构化非结构化的融合,目前Oracle, MS SQL Server等也已经实现
- 磁盘跟内存数据库的融合,目前Oracle, MS SQL Server等也已经实现
- 行、列、图、对象、文档、内容、时序、搜索引擎、导航类等等不同类型的数据库的融合,笔者初步研究发现已经小部分实现
- 初略分析来看,数据建模工具对以上特性的支持也在跟进中,但离完美支持还有很大距离
综上来看,今后纵向上数据库个人认为对图片、音视频的存储会继续成为热点,横向上也会进一步融合发展,比如音视频存储跟结构化数据的融合等等。


结论
那么是不是传统的关系型数据库彻底成了昨日黄花呢?如果你这么想,那就大错特错了!让我们看看权威的数据排名:

近年数据流行度趋势

2019年12月份数据库流行度排名

由此可见非结构化数据虽然火热,但是关系型数据库仍然稳坐钓鱼台!

原因在哪里呢?数据库发展绚丽多彩,但最终关键还在其擅长的业务场景。不同类型的数据库适配不同的业务场景。在现实世界大量存在的结构化数据,关系型数据库处理起它们来相对成熟,经过几十年的发展和各种严苛的考验,各方面优势得天独厚。现在大火的大数据重点在于其有效解决了之前一直无法处理的半结构化、非结构化数据这个老大难问题。让非结构化数据库担当关系型数据库的重任,无异于让挖掘机去跟大货车比赛拉货。

之前关系型数据库确实占据了绝对的主流。只是近几年随着3G、4G的发展,图片、音视频内容略有增加。后面随着5G、AR\VR、物联网等等新技术的发展,存储又会变贵,区块链跟量子计算也会给世界带来新的变化……但不管怎么发展,我认为关系型数据库未来十年仍将是主流,再远的将来也会有它重要的地位。因为在可预见的将来,结构化数据仍是人类最重要的数字资产。

大数据才是重点,Oracle、SQL Server成昨日黄花?的更多相关文章

  1. 大数据才是未来,Oracle、SQL Server成昨日黄花?

    1. 引子**** 有人在某个专注SQL的公众号留言如下: 这个留言触碰到一个非常敏感的问题:搞关系型数据库还有前途吗?现在都2020年了,区块链正火热,AI人才已经"过剩",大数 ...

  2. 触发器实现对插入数据的字段更改 Oracle+SQL Server

    最近有个使用触发器实现对插入数据的某个列做更改的需求,因此整理了Oracle和SQL Server对于此类需求的触发器写法,本文仅提到了Insert触发器. 首先我们创建一张表: --创建Test表 ...

  3. 转:不在同一个服务器上的数据库之间的数据操作(oracle/sql server的对比)

    如何操做不在同一个数据库中的数据操作: 一.对于SQL server来讲:  1.采用创建链接服务器的方式:    (1).创建链接服务器       exec sp_addlinkedserver  ...

  4. 实时数据引擎系列(五): 关于 SQL Server 与 SQL Server CDC

      摘要:在企业客户里, SQL Server 在传统的制造业依然散发着持久的生命力,SQL Server 的 CDC 复杂度相比 Oracle 较低, 因此标准的官方派做法就是直接使用这个 CDC ...

  5. 介绍几种大型的Oracle/SQL Server数据库免费版

    我们知道,Oracle和SQL Server等大型数据库也都存在一些免费的版本,这些免费的版本已经能够满足许多中小项目的需求.对于在校大学生来说,从学习的目标上来讲,安装免费版的大型数据库也就足够用了 ...

  6. Oracle,SQL Server 数据库较MySql数据库,Sql语句差异

    原文:Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 1.关系型数据库 百度百科 关系数据库 ...

  7. SQLSERVER:大容量导入数据时保留标识值 (SQL Server)

    从MSDN上看到实现大容量导入数据时保留标识值得方法包含三种: MSDN链接地址为:https://msdn.microsoft.com/zh-cn/library/ms178129.aspx 感觉M ...

  8. mysql,oracle,sql server数据库默认的端口号,端口号可以为负数吗?以及常用协议所对应的缺省端口号

    mysql,oracle,sql server数据库默认的端口号? mysql:3306 Oracle:1521 sql server:1433 端口号可以为负吗? 不可以,端口号都有范围的,0~65 ...

  9. 大数据量高并发访问SQL优化方法

    保证在实现功能的基础上,尽量减少对数据库的访问次数:通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担:能够分开的操作尽量分开处理,提高每次的响应速度:在数据窗口使用SQL时,尽量把 ...

  10. 大数据开发实战:Stream SQL实时开发二

    1.介绍 本节主要利用Stream SQL进行实时开发实战,回顾Beam的API和Hadoop MapReduce的API,会发现Google将实际业务对数据的各种操作进行了抽象,多变的数据需求抽象为 ...

随机推荐

  1. java.io.StreamCorruptedException: invalid stream header: 00013174

    java.io.StreamCorruptedException: invalid stream header: 00013174 at java.io.ObjectInputStream.readS ...

  2. Oracle 的merge into 语法转postgre

    Oracle的merge into 语法 MERGE INTO t1 USING (SELECT id,name FROM t2) t2 ON ( t1.id=t2.id)   //主键 WHEN M ...

  3. Pygame的基本应用(14周)

    制作一个跳跃的小球游戏        创建一个游戏窗口,然后在窗口内创建一个小球.以一定的速度移动小球,当小球碰到游戏窗口的边缘时,小球弹回,继续移动.代码如下: import sysimport p ...

  4. js判断任意数值接近数组中的某个值

    可以是数组,也可以是数组对象,看需求定义 let val = '' for (let i = 0; i < this.allData.length; i++) { if (this.days & ...

  5. vue样式穿透 滚动条隐藏 原生样式修改

    样式穿透:deep,否则可能不能覆盖原有样式,vue2使用/v-deep/或者::v-deep,或者取消scoped,但不推荐,因为会影响到其他页面样式 <style lang="sc ...

  6. 2022-04-27内部群每日三题-清辉PMP

    1.对一个关键项目的要求是产品的持续可追溯性,质量团队建议在制造过程的每个步骤创建检查点.然而,这些检查点耗费了宝贵的时间和资源.项目经理应执行什么类型的分析来确定适当的检查点数量? A.备选方案分析 ...

  7. 创建一个spring项目

  8. 跨域出现:XMLHttpRequest cannot load错误

    1.右击浏览器图标-->属性-->快捷方式-->目标栏添加--> --args --disable-web-security --user-data-dir 2.修改之后重新打 ...

  9. Java_用数组保存并显示杨辉三角

    import java.util.Scanner; public class Yang_Hui_Triangle { public static void main(String[] args) { ...

  10. spring的aop的粗浅理解

    aop有什么用? 假设你写了一本书,写的是一个平民的日常聊天.现在突然你想让这个平民变成一个书生的口气.于是你想在这个平民的每句话之前加上"之乎",后面加上"者也&quo ...