文章插图
作者 | dbLenis
【SQL 已死,NoSQL 才是王道?】责编 | 郭芮
出品 | CSDN 博客
当今数据库供应商风头正茂的 , 要数这三家公司:Amazon、google、Microsoft 。没错 , 他们都是云计算提供者 。火热的三款看家产品分别是:Amazon RDS , Google Cloud SQL , Azure Database for PostgreSQL 。
A厂CTO说 , AWS最火的产品是什么呢?是 Aurora 数据库 , 它同时兼容 PostgreSQL 与 MySQL 。他还指出 , Hadoop 也好 , Spark、Kafka 也罢 , 都在极力推动 SQL 接口来让更多的服务 API 暴露给程序员 。
从 A 厂产品的销量来说 , 企业比较青睐于这些有标准 SQL 接口的产品 , 而对于各类只能用编程语言 , 比如JAVA才能正常取数的产品 , 显得声音大 , 却雨点小 , 少有肯买帐的 。
我举个 ElasticSearch 的例子 , 你感受下为什么 ES 的 DSL 会让人望而却步:
POST crm_comment/_search {"size":0,“query":{"term":{"accountName”:"Apple"}},"aggs":{"count_over_time":{"date_histogram":{"field":"CREATED","interval":"month"} , "aggs":{"sum_of_sales":{"sum":{"field":"salesamount"}}}}}}
再比如 , 我们存日志的 MongoDB , 它的官方语言是 JavaScript:文章插图
看上去 , 这比 ElasticSearch 好看一些 , 每个字段都加了一个 $ 符号 , 请问为什么 total 就不用加呢?
原本这些数据(搜索用的 ElasticSearch, 日志用的 MongoDB)都存在 SQL 数据库中 , 使用 SQL 一劳永逸的搞定所有查询 。但现在要花点时间熟悉 ES 和 MongoDB 的古怪语法了 , 还要搞清楚 , 数据在流转过程中是否有丢失——带来的复杂度不仅仅是一点点 。
什么 , 你说程序员不就是应该拼命学的嘛?这是福报 。嗯 , 这样的福报谁爱要 , 谁拿去 , 反正我不!
1.历史
让我们一起回忆下SQL关系型数据库的起源 。这要追溯到IBM发表关系型数据库论文的那个年代 , 1970年 。1970年时 , 关系型数据计算已经非常火热了 。但这种关系运算的查询 , 只掌握在少数天才人的手里 。普通人只能看着眼馋 。
来 , 一起领略下当时的关系运算:
文章插图
事实证明 , 哪里有黑盒 , 哪里就会产生魔法师 , 总有天才领袖为劳苦大众着想 。Donald Chamberlin 和 Raymond Boyce 就是这样的天才!他们发明了 System R(关系型数据库原型) , 又在自然语言的研究方向上 , 发明了结构化英语查询语言(Structured English Query Lanuage, SEQUEL, 这也是为什么大家经常会把SQL读成 see-ku-er的原因) 。后因商标之争 , SEQUEL更名为 SQL 。
那么 SQL 相比上面的数学表达式有啥好处?感受下:
文章插图
前后两个运算都是在找出薪水比自己经理还高的那些员工 。前者是关系数据表达式 , 只有数学大师才懂的符号;后者是 SQL 表达式 , 任何人在一星期绝对可以掌握的技术 。
后来的事情 , 相信只要你不是00后 , 应该都有所耳闻了 。IBM DB2、Oracle、SQL Server、MySQL 都如雨后春笋般地出来了 。有了 System R 这般的磐石 , 有了 SQL 这代新型武器 , 各自造就了兵工厂 , 开疆扩土 。
战争一直打到现在 。
如果不是因为 ARPANET 这位默默在墙角自习的好青年 , 恐怕拉里森这位Oracle家长还要嘚瑟个好多年 。经过多年的沉寂修炼 , ARPANET终于在我们这个时代成长成一个壮实的大小伙了——也就是今天的互联网!
来 , 见识下当年那一小撮默默地在加利福尼亚学习的小伙伴:
文章插图
革命不成功 , 壮士不歇息 。尽管有这么多人兢兢业业的付出 , 但撼动关系型数据库的江山还远不够实力 , 也不到时候——直到这位哥们的出现 。你看 , 任何历史性的转折都要依靠一位伟人来带动 , 说不定下一位就是你 , 努力吧少年!
推荐阅读
- 我常用的免费MySQL图形化管理工具
- Python操作db2数据库时如何防止SQL注入
- SQLServer数据库中截取字符串的常用方法
- Linux安装JDK 以及 tomcat 和mysql
- Redis从入门到精通
- MySQL-分布式架构-MyCAT
- MySQL中七个查询命令的优先级及特点
- 千万级MySQL数据库建立索引,提高性能的秘诀
- Docker下搭建Apache+PHP+Mysql
- 半小时MySQL基础入门,值得收藏