1. 引子****

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

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

2. 原因

最近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,支持半结构化数据,非结构数据的数据库大放异彩,之前这类无法处理的非结构化数据难题得到了解决,非结构化数据处理成为标准配置,似乎占据了市场热点。

3. 现状

那么是不是传统的关系型数据库彻底成了昨日黄花呢?如果你这么想,那就大错特错了!让我们看看权威数据:
我们可以看到2013年到2019年,排名前三的基本上是Oracle, MySQL, Microsoft SQL Server,而且是常年大幅度领先。

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

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

之前关系型数据库确实占据了绝对的主流。只是近几年随着3G、4G的发展,图片、音视频内容略有增加。后面随着5G、AR\VR、物联网等等新技术的发展,存储又会变贵,区块链跟量子计算也会给世界带来新的变化……

4. 发展

  • 由单机、集群向彻底分布式发展,目前Oracle等数据库已经实现
  • OLTP跟OLAP的融合,这个特性很早就已经实现了
  • 结构化非结构化的融合,目前Oracle, MS SQL Server等也已经实现
  • 磁盘跟内存数据库的融合,目前Oracle, MS SQL Server等也已经实现
  • 行、列、图、对象、文档、内容、时序、搜索引擎、导航类等等不同类型的数据库的融合,笔者初步研究发现已经小部分实现
  • 初略分析来看,数据建模工具对以上特性的支持也在跟进中,但离完美支持还有很大距离

综上来看,今后纵向上关系型数据库发展相对成熟,目前其主要在往横向上发展;非关系型数据库主要在纵向上进一步做深做透。

5. 结论
不管世界怎么发展,我认为关系型数据库未来十年仍将是主流,再远的将来也会有它重要的地位。因为在可预见的将来,结构化数据仍是人类最重要的数字资产,关系型数据库也就会占据最重要的位置。

所以实质就是:不是关系型数据库不重要,而是没有太多新东西可以讲;非结构化数据还有很大发展空间,所以大家比较关注。

光看什么热闹学什么,什么火学什么,浮躁的心态会让人技术很难学得深入。相关从业者得搞清楚这个世界到底发生了什么,以后会发生什么。另外关键是得选准方向,坐得下来,钻得进去。

关注我,每周一篇文章学习数据相关的知识。

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. 《决战大数据:驾驭未来商业的利器》【PDF】下载

    内容简介 大数据时代的来临,给当今的商业带来了极大的冲击,多数电商人无不"谈大数据色变",并呈现出一种观望.迷茫.手足无措的状态.车品觉,作为一名经验丰富的电商人,在敬畏大数据的同 ...

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

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

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

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

随机推荐

  1. 【干货】零基础30分钟让你拥有一个完整属于自己的短视频APP系统

      目录 一.附言: 1 二.购买域名和购买服务器: 2 三.搭建服务器环境: 5 四.配置APP前端部分: 8 1.工具以及文件准备: 9 2.配置后端接口地址 11 3.配置APP启动图和启动图标 ...

  2. 实验12: OSPF

    实验9-1:单区域点到点链路的OSPF 实验目的通过本实验可以掌握:(1)在路由器上启动OSPF 路由进程(2)启用参与路由协议的接口,并且通告网络及所在的区域(3)度量值cost 的计算(4)点到点 ...

  3. C++读取MNIST数据集

    MNIST是一个标准的手写字符测试集. Mnist数据集对应四个文件: train-images-idx3-ubyte: training set images  train-labels-idx1- ...

  4. 谷歌翻译API

    http://translate.google.cn/translate_a/t?client=t&text=你好&hl=zh-CN&sl=zh-CN&tl=en&am ...

  5. SPH液面重构过程中的问题

    使用粒子方法进行流体特效模拟需要进行液面重构,构造出流体的自由表面,液面重构方法也是一个独立的研究方向,针对其的研究已经有了很多成果,包括液面的平滑度.精度和并行效率等. 在这里,主要是记录一下我在液 ...

  6. 怎么理解Laravel的核心架构

    使用过larave框架的朋友都知道laravel框架里面除了提供一些基本的功能(如控制器.视图.模型)之外,还有中间件.门面.契约等,这些东西是如何在laravel框架运用起来的呢?今天就和大家详聊一 ...

  7. 2020.2.22 bzoj5336 party

    #include<iostream> #include<cstdio> #include<cstring> #include<cctype> #incl ...

  8. Java TreeSet的使用

    1.TreeSe自带排序的set,没有重复元素. 2.TreeSet 如果构造函数中没有使用比较器,那在装载的对象类中要实现Comparable 接口. 3.TreeSet 使用初始化比较器的方式. ...

  9. ELK 记录 java log4j 类型日志

    ELK 记载  java log4j 时,一个报错会生成很多行,阅读起来很不方便. 类似这样 解决这个问题的方法 1.使用多行合并 合并多行数据(Multiline) 有些时候,应用程序调试日志会包含 ...

  10. 简单ts文件结构

    一.ts文件结构 DEMO{ 1. .vscode:特有文件夹,调试的配置文件,启动浏览器 2. Js:放ts编译后的文件,不管 3. Ts:放ts文件,敲代码 4. tsconfig.json:ts ...