NoSQL教程:了解NoSQL的功能,类型,定义,优势

简介: NoSQL的功能,类型,定义,优势

# 什么是NoSQL?
NoSQL是一种非关系型DMS,不需要固定的架构,可以避免joins链接,并且易于扩展。NoSQL数据库用于具有庞大数据存储需求的分布式数据存储。NoSQL用于大数据和实时Web应用程序。例如,像Twitter,Facebook,Google这样的大型公司,每天可能产生TB级的用户数据。
NoSQL数据库代表“不仅仅是SQL”或“不是SQL”。虽然NoRELNoSQL会是一个更好的名词。Carl Strozz在1998年引入了NoSQL概念。
传统的RDBMS使用SQL语法来存储和查询数据。相反,NoSQL数据库系统包含可存储结构化,半结构化,非结构化和多态数据的多种数据库技术。
mongo1_22
通过本节教程,我们将学习如下内容-
• 什么是NoSQL?
• 为什么使用NoSQL?
• NoSQL数据库的简要历史
• NoSQL的功能
• NoSQL数据库的类型
• NoSQL的查询机制工具
• 什么是CAP定理?
• 最终一致性
• NoSQL的优势
# 为什么使用NoSQL?
NoSQL数据库的概念在处理大量数据的互联网巨头(例如Google,Facebook,Amazon等)中变得很流行。使用RDBMS处理海量数据时,系统响应时间变慢。
为了解决此问题,当然可以通过升级现有硬件来“横向扩展”我们的系统。但这个成本很高。
这个问题的替代方案是在负载增加时将数据库负载分配到多个主机上。这种方法称为“横向扩展”。
m1_23
NoSQL数据库是非关系数据库,因此在设计时考虑到Web应用程序,比关系数据库更好地扩展。
# NoSQL数据库的简要历史
• 1998年-Carlo Strozzi在他的轻量级开源关系数据库中使用术语NoSQL
• 2000-图形数据库Neo4j启动
• 2004年-推出Google BigTable
• 2005年-启动CouchDB
• 2007年-发布有关Amazon Dynamo的研究论文
• 2008年-Facebook开源Cassandra项目
• 2009年-重新引入NoSQL术语
# NoSQL的功能
非关系
• NoSQL数据库从不遵循关系模型
• 切勿为tables 提供固定的固定列记录
• 使用自包含的聚合或BLOB
• 不需要对象关系映射和数据规范化
• 没有复杂的功能,例如查询语言,查询计划者,
参照完整性联接,ACID
# 动态架构
• NoSQL数据库是无模式的或具有宽松模式的数据库
• 不需要对数据架构进行任何形式的定义
• 提供同一域中的异构数据结构
m1_24
# 简单的API
• 提供易于使用的界面,用于存储和查询提供的数据
• API允许进行低级数据操作和选择方法
• 基于文本的协议,通常与带有JSON的HTTP REST一起使用
• 多数不使用基于标准的查询语言
• 支持Web的数据库作为面向互联网的服务运行
# 分布式
• 可以以分布式方式执行多个NoSQL数据库
• 提供自动缩放和故障转移功能
• 通常可牺牲ACID概念来实现可伸缩性和吞吐量
• 分布式节点之间几乎没有同步复制,多为异步多主复制,对等,HDFS复制
• 仅提供最终的一致性
• 无共享架构。这样可以减少协调并提高分布。
m1_25
# NoSQL数据库的类型
m1_26
NoSQL数据库主要有四类。这些类别中的每一个都有其独特的属性和局限性。没有特定的数据库可以更好地解决所有问题。您应该根据您的产品需求选择一个数据库。
让我们看看所有这些:
• 基于键值对
• Column-oriented Graph
• Graphs based
• 面向文档
# 基于键值对
数据存储在键/值对中。它以这种方式设计,可以处理大量数据和繁重的工作。
键值对存储数据库将数据存储为哈希表,其中每个键都是唯一的,并且值可以是JSON,BLOB(二进制大对象),字符串等。
例如,键值对可能包含与“ Guru99”的值,相关联到包含“ Website”的键。
m1_27
它是NoSQL数据库的最基本类型之一。这种NoSQL数据库用作集合,dictionaries,关联数组等。键值存储可帮助开发人员存储较少架构的数据。它们最适合购物车中的物品。
Redis,Dynamo,Riak是键值存储数据库的一些示例。它们全部基于亚马逊的Dynamo论文
# 基于列
面向列的数据库在列上工作,基于Google的BigTable论文。每列都单独处理。单列数据库的值连续存储。
m1_28
在聚合查询(例如SUM,COUNT,AVG,MIN等)上提供了高性能,因为数据在列中随时可用。

基于列的NoSQL数据库被广泛用于管理数据仓库,商业智能,CRM,图书馆书籍目录,
Base,Cassandra,HBase,Hypertable是基于列的数据库。
# 面向文档:
面向文档的NoSQL DB将数据存储和检索为键值对,但值部分存储为文档。该文档以JSON或XML格式存储。DB可以理解该值,并且可以查询该值。
m1_29
在上图中的左侧,我们溃疡看到有行和列,而在右侧,我们有一个文档数据库,该数据库的结构与JSON类似。现在,对于关系数据库,必须知道拥有哪些列,依此类推。但是,对于文档数据库,具有JSON对象之类的数据存储。我们不需要定义,以便使其灵活。
文档类型主要用于CMS系统,博客平台,实时分析和电子商务应用程序。它不应用于需要多种操作或针对不同聚合结构进行查询的复杂交易。
Amazon SimpleDB,CouchDB,MongoDB,Riak,Lotus Notes,MongoDB是流行的基于文档的DBMS系统。
# Graph-Based(基于图形)
图类型数据库存储实体以及这些实体之间的关系。实体存储为节点,关系作为边。一条边给出了节点之间的关系。每个节点和边缘都有唯一的标识符。
m1_30
与关系数据库中表的松散连接相比,Graph数据库本质上是多关系的。遍历关系很快,因为它们已被存在于数据库中,因此无需计算它们。
基于图形数据库主要用于社交网络,物流,空间数据。
Neo4J, Infinite Graph, OrientDB, FlockDB是一些比较流行的基于图形的数据库。
NoSQL的查询机制工具
最常见的数据检索机制是基于 REST 的值检索,该值基于其key/ID,获取数据。
文档存储数据库提供了更困难的查询,因为他们了解键值对中的值。例如,CouchDB允许使用MapReduce定义视图
# 什么是CAP定理?
CAP定理也称为Brewer定理。它指出,分布式数据存储不可能同时满足CAP,只能满足CAP其中的两部分。

  1. 一致性
  2. 可用性
  3. 分区容错性
    # 一致性

即在执行操作之后,数据也应保持一致。这意味着一旦写入数据,以后的任何读取请求都应包含该数据。例如,更新订单状态后,所有客户端都应该能够看到相同的数据。
# 可用性:
该数据库应始终可用且响应迅速。它不应有任何宕机时间。
分区容限:
分区容限意味着即使服务器之间的通信不稳定,系统也应继续运行。例如,可以将服务器划分为可能无法相互通信的多个组。在此,如果数据库的一部分不可用,则其他部分始终不受影响。
# 最终一致性
“最终一致性”是指在多台计算机上具有数据副本,以获得高可用性和可伸缩性。因此,必须将在一台计算机上对任何数据项所做的更改复制到其他副本。
数据复制可能不是瞬时的,因为某些副本将在适当的时间范围内立即更新,而另一些副本将在一段时间内更新。这些副本可能是相互的,但随着时间的推移,它们将变得一致。所以,称为最终保持一致。
BASE: Basically Available, Soft state, Eventual consistency

• 基本上,可用性表示根据CAP定理,DB始终可用
• Soft state意味着即使没有输入;系统状态可能会改变
• 最终的一致性意味着系统将随着时间的推移变得一致
m1_31
# NoSQL的优势
• 可用作主要数据库或分析数据源
• 大数据能力
• 没有单点故障
• 轻松复制
• 无需单独的缓存层
• 它提供了快速的性能和水平可伸缩性。
• 可以平等地处理结构化,半结构化和非结构化数据
• 易于使用且灵活的面向对象编程
• NoSQL数据库不需要专用的高性能服务器
• 支持关键的开发语言和平台
• 比使用RDBMS易于实现
• 它可以用作在线应用程序的主要数据源。
• 处理大数据,以管理数据的速度,多样性,数量和复杂性
• 在分布式数据库和多数据中心操作方面表现出色
• 无需使用特定的缓存层来存储数据
• 提供灵活的架构设计,可以轻松进行更改而不会造成停机或服务中断
# NoSQL的缺点
• 没有标准化规则
• 有限的查询功能
• RDBMS数据库和工具相对成熟
• 它不提供任何传统的数据库功能,例如同时执行多个事务时的一致性。
• 当数据量增加时,由于密钥变得困难,很难维护唯一值
• 与关系数据配合使用效果不佳
• 对于新开发者而言,学习曲线是僵硬的
• 开源选项在企业中并不那么受欢迎。
摘要
• NoSQL是非关系DMS,它不需要固定的架构,可以避免联接,并且易于扩展
• NoSQL数据库的概念在处理大量数据的Internet巨头(例如Google,Facebook,Amazon等)中广受欢迎
• 1998年,Carlo Strozzi在他的轻量级开源关系数据库中使用了NoSQL一词。
• NoSQL数据库永远不会遵循关系模型,因为它要么没有架构,要么拥有宽松的架构
• NoSQL数据库的四种类型是1)。基于键值对的2)。面向列的图3)。基于图的4)。面向文档
• NOSQL可以平等地处理结构化,半结构化和非结构化数据
• CAP定理由一致性,可用性和分区容忍度三个词组成
• BASE代表 Basically Available, Soft state, Eventual consistency
• “最终一致性”是指在多台计算机上具有数据副本,以获得高可用性和可伸缩性
• NOSQL提供有限的查询功能
源地址:https://www.guru99.com/nosql-tutorial.html

相关实践学习
使用DAS实现数据库SQL优化
本实验介绍如何通过数据库自治服务DAS对RDS MySQL高可用实例进行SQL优化,包含购买RDS实例并创建数据库、数据导入、生成并优化慢SQL、执行优化后的SQL语句等实验步骤。
目录
相关文章
|
20天前
|
存储 NoSQL 关系型数据库
PolarDB开源数据库进阶课17 集成数据湖功能
本文介绍了如何在PolarDB数据库中接入pg_duckdb、pg_mooncake插件以支持数据湖功能, 可以读写对象存储的远程数据, 支持csv, parquet等格式, 支持delta等框架, 并显著提升OLAP性能。
34 0
|
2月前
|
Cloud Native 关系型数据库 分布式数据库
让PolarDB更了解您--PolarDB云原生数据库核心功能体验馆
让PolarDB更了解您——PolarDB云原生数据库核心功能体验馆,由阿里云数据库产品事业部负责人宋震分享。内容涵盖PolarDB技术布局、开源进展及体验馆三大部分。技术布局包括云计算加速数据库演进、数据处理需求带来的变革、软硬协同优化等;开源部分介绍了兼容MySQL和PostgreSQL的两款产品;体验馆则通过实际操作让用户直观感受Serverless、无感切换、SQL2Map等功能。
136 7
|
2月前
|
存储 NoSQL 关系型数据库
【赵渝强老师】什么是NoSQL数据库?
随着大数据技术的兴起,NoSQL数据库(Not Only SQL)得到广泛应用。它不局限于二维表结构,允许数据冗余。常见的NoSQL数据库包括Redis、MongoDB和HBase。Redis是基于内存的高性能数据库,采用单线程模型和多路复用I/O,支持高效的数据结构。MongoDB使用BSON格式存储文档,查询语言强大,类似关系型数据库。HBase基于HDFS,适合数据分析,采用列式存储,支持灵活的列族设计。视频讲解及更多内容见下文。
250 79
|
6天前
|
数据库连接 PHP 数据库
【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常
|
6天前
|
PHP 数据库
【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用OCI接口使用数据库绑定参数功能异常
|
10天前
|
存储 NoSQL 关系型数据库
Apifox与Apipost数据库连接功能详细对比,让接口管理更高效!
Apipost 更加全面:无论是关系型还是非关系型数据库,它都为开发者提供了一站式解决方案,非常适合数据库架构复杂的大型项目。相对来说,Apifox偏重关系型分析和管理:若项目主要需求在于管理关系型数据库,而对非关系型的依赖较小,Apifox倒是可以应付。
39 2
|
1月前
|
存储 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 8 数据库生态
PolarDB是一款开源的云原生分布式数据库,源自阿里云商业产品。为降低使用门槛,PolarDB携手伙伴打造了完整的开源生态,涵盖操作系统、芯片、存储、集成管控、监控、审计、开发者工具、数据同步、超融合计算、ISV软件、开源插件、人才培养、社区合作及大型用户合作等领域。通过这些合作伙伴,PolarDB提供了丰富的功能和服务,支持多种硬件和软件环境,满足不同用户的需求。更多信息请访问[PolarDB开源官方网站](https://openpolardb.com/home)。
66 4
|
2月前
|
关系型数据库 MySQL API
新手教程:数据库操作(使用PDO或MySQLi扩展)
本文为新手介绍如何使用PDO和MySQLi扩展连接与操作MySQL数据库。PDO更现代灵活,支持多种数据库,适合大多数应用;MySQLi提供面向过程和面向对象两种API,适合直接控制数据库操作。教程涵盖安装配置、创建连接、执行查询(查询、插入、更新、删除)及错误处理等内容。希望这篇教程能帮助你快速上手PHP中的数据库操作!
181 32
|
20天前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课16 接入PostGIS全功能及应用举例
本文介绍了如何在PolarDB数据库中接入PostGIS插件全功能,实现地理空间数据处理。此外,文章还提供了使用PostGIS生成泰森多边形(Voronoi diagram)的具体示例,帮助用户理解其应用场景及操作方法。
39 0
|
2月前
|
存储 Java 数据库连接
时序数据库TDengine 3.3.5.0 发布:高并发支持与增量备份功能引领新升级
TDengine 3.3.5.0 版本正式发布,带来多项更新与优化。新特性包括提升 MQTT 稳定性和高并发性能、新增 taosX 增量备份与恢复、支持 JDBC 和 Rust 连接器 STMT2 接口、灵活配置 Grafana Dashboard 等。性能优化涵盖查询内存管控、多级存储迁移、强密码策略等,全面提升时序数据管理的效率和可靠性。欢迎下载体验并提出宝贵意见。
60 5

热门文章

最新文章