社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NoSql

NoSQL数据库使用场景以及架构介绍

马哥Linux运维 • 6 月前 • 115 次点击  



目录

一、什么是NoSQL

二、NoSQL数据库使用场景

三、NoSQL数据库架构

四、NoSQL和关系型数据的区别


一、什么是NoSQL

NoSQL,全称为Not Only SQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

NoSQL用于超大规模数据的存储,针对非结构化数据、半结构化数据具有很好的支持。NoSQL的特点在于其不仅仅是SQL,没有声明性查询语言,没有预定义的模式,采用键-值对存储、列存储、文档存储、图形数据库,最终一致性而非ACID属性,可以支持非结构化和不可预知的数据。

NoSQL的产生是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。其优点在于高可拓展性、分布式计算、低成本和架构的灵活性,而缺点在于没有标准化,查询功能有限,最终一致性可能不直观(CAP定理),以及关联产品的选择可能有限(根据CAP定理衍生)。

二、NoSQL数据库使用场景

NoSQL数据库的使用场景主要针对非结构化数据或半结构化数据的处理。例如,键值(Key-Value)数据库可以用于存储用户信息,如会话、配置文件、参数、购物车等等。此外,对于网页或复杂对象的存储,以及处理复杂的数据结构等场景,NoSQL数据库也可以发挥出其优势。

NoSQL数据库具有高可拓展性、分布式计算、低成本和架构灵活性等优点,但也存在一些挑战。例如,它们通常缺乏标准化的查询语言,查询功能有限,最终一致性可能不直观,以及关联产品的选择可能有限。

因此,在选择使用NoSQL数据库时,需要根据具体的应用场景和需求进行评估和选择。

三、NoSQL数据库架构

NoSQL数据库的架构通常包括数据存储工具、数据管理工具和数据查询工具。

  1. 数据存储工具:用于将数据存储或映射为表格形式,例如键值(Key-Value)数据库和文档(Document)数据库等。

  2. 数据管理工具:对数据“库”、“表”或类似的概念进行管理,对存储的数据进行管理,对数据的性能和可靠性等进行管理,对分布式系统进行管理,对系统的配置方式、运行状态等进行管理。

  3. 数据查询工具:快速查询海量数据,提供易用的客户访问接口,但一般无法进行过于复杂的查询,或查询性能极低。

此外,NoSQL数据库通常可以在分布式系统中存储数据,通过并行处理提高数据查询和处理效率,因此进行数据分片,使用布隆过滤器等。在系统可伸缩方面,NoSQL数据库通常具有横向扩展、移除或更换的功能。

四、NoSQL和关系型数据的区别

NoSQL和关系型数据库的区别主要体现在以下方面:

  1. 存储方式:关系型数据库采用表格式存储数据,而NoSQL数据库则支持多种存储方式,包括文档、键值对、图结构等。

  2. 存储规范:关系型数据库强调数据的规范性,避免重复,而NoSQL数据库则鼓励冗余,以实现数据的灵活性和可扩展性。

  3. 扩展方式:关系型数据库主要通过提升硬件配置等向上扩展方式来提升性能,而NoSQL数据库则采用分布式架构,通过增加数据库节点向外扩展,以实现更好的可伸缩性。

  4. 查询方式:关系型数据库采用结构化查询语言(SQL)进行查询,而NoSQL数据库则支持非结构化查询语言,以适应多样化的数据结构和查询需求。

  5. 事务支持:关系型数据库支持事务处理,以保证数据的一致性和完整性,而NoSQL数据库则一般不支持事务一致性。

  6. 性能:关系型数据库在读写性能上通常优于NoSQL数据库,特别是在处理规范化的数据时。然而,NoSQL数据库在处理大规模数据和高并发请求时,通常具有更好的性能。

  7. 成本:关系型数据库通常具有较高的成本,因为它们需要高端的硬件和专业的技术支持。相比之下,NoSQL数据库具有简单易部署、开源和成本低的优势。

  8. 数据存储位置:关系型数据库的数据主要存储在磁盘中,而NoSQL数据库的数据主要存储在内存中(部分可以持久化到磁盘)。

  9. 建表原则:关系型数据库建立在关系模型基础上的数据库,依靠表、字段等关系模型以列或字段构建关联,而NoSQL数据模型比较简单,用Key-Value的形式来存储数据。

  10. 并发支持:关系型数据库通过事务和锁来支持并发,高并发情况下执行效率较低。相比之下,NoSQL打破了传统关系型数据库范式的约束和事务一致性,因此并发性能高。

综上所述,NoSQL和关系型数据库各有优缺点,需要根据具体的应用场景和需求进行选择。


链接:https://blog.csdn.net/yangyin1998/article/details/134218220?spm=1001.2014.3001.5502

(版权归原作者所有,侵删)


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/164120
 
115 次点击