NoSQL带给了我们什么
借着这个NoSQL的出现,我想延展出来多讲一点,很多人,包括我当初,都认为SQL不挺好的么?为啥还有人研究一个NoSQL出来?这帮人是不是疯了?而且叫做NoSQL,都对SQL说No了,也许你看百度百科把NoSQL叫成not only sql,意思就是它是sql,不仅仅是sql,意思就是说它是SQL的超集了?SQL有的功能它都有咯?我个人认为这个叫法有点欠妥当,NoSQL就是No SQL,它抛弃了SQL的一些特征,比如范式,哇,多么高大上的一个词,我的数据库遵循了范式设计,好像比你的就高级,我的就高人一等,说起来多么的理直气壮,大家别感到疑惑,这样的情况现在还在发生,公司里面有项目组目前的数据库就是严格遵循了范式设计,但是出现了问题,玩家登录比较慢,也许一般人不会将这两件事情联系起来,认为登陆慢应该是其他的什么原因吧,但是我在这里带领大家思考一个问题,范式设计最大的优势是什么?插入、更新速度快,占用磁盘空间少,等等,就这两个优势,劣势呢?怎么没人讲?每人讲那就我来说吧,没提到的都是劣势,比如读取速度慢,因为数据拆分到多个字段、多张表之后,磁盘从顺序io变成了随机io,我们知道对于磁盘,特别是机械磁盘,顺序io远远比随机io的速度快,即使现在出现了ssd,随机io已经有了很大的提升,但还是有数倍的差距。想明白了吧,就是因为这个原因,没什么值得遮遮掩掩的,NoSQL就是对SQL说No,它抛弃了范式,因为如今大家更在意读取速度,写入速度慢可以开设线程慢慢写,多用些内存而已,反正现在内存便宜对吧,范式还有个优势就是省空间,但是现在磁盘已经很便宜了,空间再大一倍又如何?它抛弃了范式,带来的是读取性能的大幅提升,还能把数据分散在多个进程,多个物理机上,这样做成了分布式,一台机器搞不定的事情我10台机器搞定它,还不行我20台,比你那哼哧哼哧的sql优化效果好得多。
话说到这里,你可能会想,是不是以后都是NoSQL的天下了,我们干嘛还要在这里学习SQL呢?这是我将跟大家讨论的第二个事情,我希望我的学员在这里学到了不仅仅是知识技能,不仅仅学会了SQL,NoSQL,还要学会一种心态,一个思维方式,那就是任何技术都有适用场景,场景不存在了这项技术存在的必要性就要打个问号了,也就是说技术都有生命周期,凡事我们多问个为什么,不要想当然的认为别人都是傻瓜,也别以为我什么问题都能回答你,大胆假设,小心求证,这种心态将让你受益终身。此处是不是应该有点掌声呢?谢谢大家~~~~~
