欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

重温《NoSQL精粹》

程序员文章站 2022-12-21 19:52:50
在网上有关Redis相关文章满天飞的时候,这个时候我决定重温一下NoSQL。它是什么,用于解决什么问题,有哪些相类似的技术,与传统的关系型数据库有哪些差别,什么时候使用?也正如书中所说的,篇幅短小,内容却很丰富。新技术的诞生,我们应该以既稳健又前瞻的心态看待它。 1. 它是什么,用于解决什么问题? ......

在网上有关redis相关文章满天飞的时候,这个时候我决定重温一下nosql。它是什么,用于解决什么问题,有哪些相类似的技术,与传统的关系型数据库有哪些差别,什么时候使用?
也正如书中所说的,篇幅短小,内容却很丰富。新技术的诞生,我们应该以既稳健又前瞻的心态看待它。

1. 它是什么,用于解决什么问题?

其实nosql的定义并不准确,初意not only sql,不是表达no,sql!
它就泛指现在描述的非关系型数据库,帮助主张无模式(schemaless)的数据,可以运行在集群环境,能够牺牲传统数据库所具备的一致性,换取一些新特性。能构建出稳定性更高,扩展性更好的编程系统。
有两个主要解决问题:

  • 应用程序的开发效率。更符合应用程序的数据模型,简化交互,减少代码量。
  • 大规模数据。快速获取并处理数据。


     
    重温《NoSQL精粹》
    nosql

2.它的“友邦”

 
重温《NoSQL精粹》
聚合数据模型

分布式模型

催生nosql的主要原因是:需要一种能勾运行在大集群上的数据库。随着数据量越来越多,购买服务器的纵向扩展scale up会变得愈发困难和昂贵,所以催生横向扩展的面向聚合数据库。

3. 选择合适的数据库

宽泛的说,选用nosql数据库有两个原因:

  • 提高程序员的工作效率;
  • 改善数据访问性能;

两种因素可能互补也可能相互冲突,因为很难将数据存储模型的决策过程抽象出来,稍后再要修改,也颇为不易

在决定适用某个nosql技术前,一定要测试其是否如预期般改进了程序员工作效率及数据访问性能。用服务封装数据库,能在需求变更或技术成熟后改换其他数据库技术。