麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
514
2023-05-16
震惊!No-SQL正淘汰SQL?
No-SQL正淘汰SQL?
上周,朋友给我转发了某成功企业家的邮件,里面宣称“SQL已经过时了”。
该企业家声称,***和Redis 这样受欢迎的 No-SQL 数据库,会慢慢地将基于SQL的数据库淘汰。因此,身为数据科学家,学习SQL是“抱残守缺”
看到他的邮件我非常震惊,他是怎么得出这么离谱的结论的?但这也令我好奇......别人会不会也这样误解了呢?该企业家有大量拥趸,他本人也直言不讳:新的数据科学家收到建议别再学习SQL了吗?
可能其他人也认为SQL正在被淘汰,在此,我想公开向该企业家作出回应。
在从事数据科学的职业生涯里,学习SQL非常有必要。No-SQL无法撼动学习SQL的意义。
基本上,有两个理由可以保证SQL在未来几十年都不会过时。
理由1:No-SQL数据库不会取代Presto、Redshift、BigQuery等分析数据库
不论应用程序使用的是MySQL这样的SQL后端,还是像***那样的No-SQL后端,该后端中的数据最终都会被加载到专门的分析数据库中,比如Redshift、Snowflake、BigQuery或 Presto。
分析数据库平台的示例体系结构:SQL和NoSQL
公司为什么把数据转移到Redshift这样的专栏存储中?因为专栏存储能更快地运行分析查询,不论是NoSQL还是像MySQL这样的行存储数据库。事实上,我敢打赌,专栏存储数据库的普及速度与NoSQL数据库一样快。
因此,像NoSQL以及其他数据库还有匹配的应用程序,它们的技术通常与数据科学家无关,因为他们不使用数据库应用程序。当然也有一些例外,将在后文讨论。
理由2:NOSQL数据库的优势并非不支持SQL语言
事实证明,如果支持基于SQL的查询引擎是有意义的,那么No-SQL存储可以实现它。类似地,SQL数据库也可以支持NoSQL查询语言,但是它们选择不支持。
那么,为什么专栏存储数据库有意选择提供SQL接口呢?
他们做出这样的选择,是因为SQL语言在表达数据操作指令上非常强大。
以一个简单的查询为例,它是NoSQL数据库下***的计算集合中的文档数量。
注意:***中的文档类似于行,而集合则类似于表。
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的一些组件。
因此,在主要应用程序专门使用NoSQL数据库的环境中,学习哪种SQL可能都无关紧要。但在非常罕见情况下,随着公司的成长,他们几乎肯定会投资建立一个支持SQL的分栏存储分析数据库。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。