欢迎投稿

今日深度:

No-SQL正淘汰SQL?,

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的分栏存储分析数据库。

www.htsjk.Com true http://www.htsjk.com/shujukunews/41986.html NewsArticle No-SQL正淘汰SQL?, No-SQL正淘汰SQL? 上周,朋友给我转发了某成功企业家的邮件,里面宣称SQL已经过时了。 该企业家声称,MongoDB和Redis 这样受欢迎的 No-SQL 数据库,会慢慢地将基于SQL的数...
评论暂时关闭