Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

对 SQL 和 NoSQL 的重新审视

  最初开始学编程的时候所有数据存文件就好了,搞 SQL 觉得麻烦。后来在涉及到越来越复杂的数据结构后才渐渐地觉得 SQL 非常方便。再后来听说了 NoSQL 的概念,但总感觉是一个技术倒退,感觉回古老的文件存储时代,所以没有深入。直到现在我才对 NoSQL 有点感觉。
  也许大家会觉得以文件形式来存储数据的做法很低级,但实际上操作系统对文件系统的优化也是数据库级的,所以我从来不反对使用文件来存储数据(文件本来就是用来存储数据的嘛)。文件系统就是一个最基本的非关系数据库,完全满足 NoSQL 的概念。说文件存储慢是因为磁盘 IO 慢,就存储和查询算法而言,文件系统已经非常优秀了。只是碍于它是完全基于磁盘的,所以才遭人嫌弃。
  好了,先不扯文件系统。SQL 又如何呢?其实我非常喜欢 SQL,在以前的项目中我总是把 SQL 服务器的功能发挥到极致,各种存储过程、触发器无所不用。也许是以前做的项目数据量比较低的缘故,把这些事情放在数据库层处理没有任何问题。但最近发现好多公司都在弱化数据库层,大家都在尽可能地避免把数据之间的关系放在数据库层处理。这个想法和我以往的想法是完全相反的,于是我震惊了。
  就我现在看到的项目,基本上就是把数据库层削薄到任何两张表之间没有直接耦合的程度了。比如 SQL 语句中禁止 join,把联合查询的逻辑全部写到业务代码中。我觉得要不是历史原因可能早就干掉了关系数据库了吧?
  虽然我一开始完全不理解这种做法,后来听了一些分享后才渐渐明白。当数据量大到需要集群才能跑动数据库时,关系数据库就会变得难以维护(难以扩容)。而且关系数据库由于各种表之间的关系太强,很难扩展和修改结构。只有把数据库层的关系祛除,数据结构才能更加灵活。
  突然明白为什么大数据组的同学们喜欢用文件来存数据而不是导入数据库统一管理。
  最后,我对于 SQL 和 NoSQL 的看法大概是这样的。NoSQL 最近几年比较火,但它不是用来装逼的,它应该是一个底层的解决方案。SQL 非常好用,如果条件允许我肯定会选择 SQL。只有当 SQL 无法满足需求时才会考虑 NoSQL。
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^