在网上有关Redis相关文章满天飞的时候,这个时候我决定重温一下NoSQL。它是什么,用于解决什么问题,有哪些相相似的技术,与传统的关系型数据库有哪些差异,何时使用?
也正如书中所说的,篇幅短小,内容却很丰富。新技术的诞生,咱们应该以既稳健又前瞻的心态看待它。程序员
其实NoSQL的定义并不许确,初意Not Only SQL,不是表达No,SQL!
它就泛指如今描述的非关系型数据库,帮助主张无模式(schemaless)的数据,能够运行在集群环境,可以牺牲传统数据库所具有的一致性,换取一些新特性。能构建出稳定性更高,扩展性更好的编程系统。
有两个主要解决问题:数据库
大规模数据。快速获取并处理数据。编程
催生NoSQL的主要缘由是:须要一种能勾运行在大集群上的数据库。随着数据量愈来愈多,购买服务器的纵向扩展scale up会变得愈发困难和昂贵,因此催生横向扩展的面向聚合数据库。服务器
宽泛的说,选用NoSQL数据库有两个缘由:less
两种因素可能互补也可能相互冲突,由于很难将数据存储模型的决策过程抽象出来,稍后再要修改,也颇为不易。分布式
在决定适用某个NoSQL技术前,必定要测试其是否如预期般改进了程序员工做效率及数据访问性能。用服务封装数据库,能在需求变动或技术成熟后改换其余数据库技术。性能