震惊!No-SQL正淘汰SQL?

数据库
No-SQL正淘汰SQL?上周,朋友给我转发了某成功企业家的邮件,里面宣称“SQL已经过时了”。该企业家声称,MongoDB和Redis 这样受欢迎的 No-SQL 数据库,会慢慢地将基于SQL的数据库淘汰。

No-SQL正淘汰SQL?

上周,朋友给我转发了某成功企业家的邮件,里面宣称“SQL已经过时了”。

该企业家声称,MongoDB和Redis 这样受欢迎的 No-SQL 数据库,会慢慢地将基于SQL的数据库淘汰。因此,身为数据科学家,学习SQL是“抱残守缺”

看到他的邮件我非常震惊,他是怎么得出这么离谱的结论的?但这也令我好奇......别人会不会也这样误解了呢?该企业家有大量拥趸,他本人也直言不讳:新的数据科学家收到建议别再学习SQL了吗?

可能其他人也认为SQL正在被淘汰,在此,我想公开向该企业家作出回应。

在从事数据科学的职业生涯里,学习SQL非常有必要。No-SQL无法撼动学习SQL的意义。

基本上,有两个理由可以保证SQL在未来几十年都不会过时。

理由1:No-SQL数据库不会取代Presto、Redshift、BigQuery等分析数据库

不论应用程序使用的是MySQL这样的SQL后端,还是像MongoDB那样的No-SQL后端,该后端中的数据最终都会被加载到专门的分析数据库中,比如Redshift、Snowflake、BigQuery或 Presto。

 

No-SQL正淘汰SQL?
分析数据库平台的示例体系结构:SQL和NoSQL

 

公司为什么把数据转移到Redshift这样的专栏存储中?因为专栏存储能更快地运行分析查询,不论是NoSQL还是像MySQL这样的行存储数据库。事实上,我敢打赌,专栏存储数据库的普及速度与NoSQL数据库一样快。

因此,像NoSQL以及其他数据库还有匹配的应用程序,它们的技术通常与数据科学家无关,因为他们不使用数据库应用程序。当然也有一些例外,将在后文讨论。

理由2:NOSQL数据库的优势并非不支持SQL语言

事实证明,如果支持基于SQL的查询引擎是有意义的,那么No-SQL存储可以实现它。类似地,SQL数据库也可以支持NoSQL查询语言,但是它们选择不支持。

那么,为什么专栏存储数据库有意选择提供SQL接口呢?

他们做出这样的选择,是因为SQL语言在表达数据操作指令上非常强大。

以一个简单的查询为例,它是NoSQL数据库下MongoDB的计算集合中的文档数量。

注意:MongoDB中的文档类似于行,而集合则类似于表。

  1. db.sales.aggregate( [  
  2.  
  3. $group: {  
  4. _id: null 
  5. count: { $sum: 1 }  
  6.  
  7.  
  8. ] ) 

将其与等效SQL进行比较。

  1. select count(1) from sales 

显而易见,对于想要提取数据的人来说,SQL语言是更好的选择。NoSQL数据库支持不同的语言,因为在数据库接口的应用程序库方面,正确构造SQL比较困难。

前文提到过,应用程序数据库的技术与数据科学家无关,但是这一规则有一些例外。我的第一家公司实际上没有像Redshift那样的分析数据库,所以必须直接查询应用程序的数据库。更准确地说,是在查询应用程序数据库的读副本。

该公司的应用程序还使用了No-SQL数据库Redis,而且不止一次我需要直接从Redis提取数据,所以确实需要学习Redis的NoSQL API的一些组件。

No-SQL正淘汰SQL?

因此,在主要应用程序专门使用NoSQL数据库的环境中,学习哪种SQL可能都无关紧要。但在非常罕见情况下,随着公司的成长,他们几乎肯定会投资建立一个支持SQL的分栏存储分析数据库。

 

责任编辑:未丽燕 来源: 今日头条
相关推荐

2023-10-30 08:10:26

Map存储信息

2009-09-08 14:45:24

Linq to SQL支持SQL Serve

2009-09-18 14:33:37

LINQ to SQLSQL命令

2021-03-02 09:15:24

MyBatisSQL数据库

2009-09-07 16:25:14

Linq To SQL

2022-02-25 17:21:05

黑客网络安全网络攻击

2018-11-06 10:37:24

微软操作系统Windows

2018-12-24 18:12:41

SQL ServerMySQL数据库

2011-08-16 09:48:27

SQLPLUS学习笔记SQL Buffer

2023-08-02 10:58:18

SP_WHOSQL Server

2010-07-08 13:26:02

SQL Server

2018-11-05 14:54:18

MySQLSQL语句数据库

2010-07-20 09:53:01

SQL Server

2010-11-04 09:43:46

LINQ to SQL

2010-12-20 16:04:30

2011-03-31 09:30:27

SQL Server数管理SQL

2010-09-25 11:32:20

SQL主键约束

2010-07-08 13:32:22

SQL Server

2010-07-23 12:55:29

SQL Server

2010-09-25 16:00:38

sql存储过程
点赞
收藏

51CTO技术栈公众号