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