No-SQL正淘汰SQL?

全文共1631字,预计学习时长5分钟

No-SQL正淘汰SQL?_第1张图片

来源:Pexels

 

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?_第2张图片

分析数据库平台的示例体系结构:SQL和NoSQL

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

db.sales.aggregate( [
 {
   $group: {
      _id: null,
      count: { $sum: 1 }
   }
 }
] )

将其与等效SQL进行比较。

 

select count(1) from sales

 

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

 

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

 

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

 

No-SQL正淘汰SQL?_第3张图片

 

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

 

感谢阅读!希望对大家有帮助~

留言 点赞 关注

我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”

(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)

你可能感兴趣的:(热点文章,AI,人工智能)