什么是NoSQL?

什么是NoSQL?

NoSQL包含多种不同的数据库技术,这些技术是针对构建现代应用程序时提出的需求而开发的:

  • 开发人员正在开发大量新的、快速变化的数据类型-结构化、半结构化、非结构化和多态数据。

  • 12到18个月的瀑布开发周期早已逝去。现在,小型团队在敏捷冲刺中工作,快速迭代,每周或两周推送代码,有些甚至每天多次。

  • 曾经为有限受众提供服务的应用程序现在作为服务提供,这些服务必须始终处于打开状态,可以从许多不同的设备上访问,并在全球范围内扩展到数百万用户。

  • 各组织现在转向使用开源软件、商品服务器和云计算的扩展体系结构,而不是大型单块服务器和存储基础设施。

关系数据库的设计并不是为了应对现代应用程序所面临的规模和敏捷性挑战,也不是为了利用当今的商品存储和处理能力而构建的。

用MongoDB Atlas:宿主数据库作为服务在几分钟内拆分一个NoSQL集群

在领先的非关系数据库MongoDB上尝试最简单的方法开始学习和原型化应用程序。

在任何数据库上启动应用程序通常都需要仔细规划,以确保性能、高可用性、安全性和灾难恢复-只要运行应用程序,这些义务就会继续存在。使用MongoDB地图集,您可以接收MongoDB的所有功能,而无需任何操作上的负担,这样您就可以专注于学习和构建应用程序。其特点包括:

  • 按需付款,做模特

  • 无缝升级和自动修复

  • 完全弹性。轻松地上下缩放

  • 深度监视和可定制警报

  • 默认情况下高度安全

  • 具有实时恢复的连续备份

开始

NoSQL数据库类型

  • 文档数据库将每个键与称为文档的复杂数据结构配对。文档可以包含许多不同的键值对,或者键数组对,甚至嵌套文档.

  • 图存储用于存储有关数据网络(如社会连接)的信息。图形存储包括Neo4J和Gi相图。

  • 键值存储是最简单的NoSQL数据库。数据库中的每一项都存储为属性名(或“key”)及其值。关键值存储的例子有Riak和Berkeley DB。一些键值存储,比如Redis,允许每个值都有一个类型,比如“INTEGER”,它增加了功能。

  • 宽栏商店如Cassandra和HBASE对大型数据集上的查询进行了优化,并将数据列存储在一起,而不是存储行。

NoSQL的好处

与关系数据库相比,NoSQL数据库是更可扩展并提供更好的性能,它们的数据模型解决了几个关系模型设计不能解决的问题:

  • 大量快速变化的结构化、半结构化和非结构化数据

  • 敏捷冲刺、快速模式迭代和频繁的代码推送

  • 易于使用和灵活的面向对象编程

  • 地理分布的扩展架构,而不是昂贵的整体架构。

 

动态图式

关系数据库要求在添加数据之前定义架构。例如,您可能希望存储有关客户的数据,如电话号码、姓名、地址、城市和州-SQL数据库需要事先知道存储的内容。

这与敏捷开发方法,因为每次完成新功能时,数据库的架构通常都需要更改。因此,如果您决定,在开发中进行几次迭代,除了存储客户的地址和电话号码之外,还要存储客户最喜欢的项目,那么您需要将该列添加到数据库中,然后将整个数据库迁移到新的模式中。

如果数据库很大,这是一个非常缓慢的过程,涉及到大量的停机时间。如果您经常更改应用程序存储的数据-因为您正在快速迭代-此停机时间可能也会频繁。也没有办法,使用关系数据库,有效地解决数据是完全非结构化的或未知的提前。

构建NoSQL数据库是为了允许在没有预定义架构的情况下插入数据。这使得在不担心服务中断的情况下,实时地进行重要的应用程序更改变得容易-这意味着开发速度更快,代码集成更可靠,数据库管理员所需的时间也更少。开发人员通常需要添加应用程序端代码来执行数据质量控制,例如强制指定特定字段、数据类型或允许值的存在。更复杂的NoSQL数据库允许在数据库中应用验证规则,允许用户执行跨数据的治理,同时保持动态模式的灵活性。

自动切分

由于关系数据库的结构方式,它们通常垂直扩展-单个服务器必须承载整个数据库,以确保跨表连接和事务的可接受性能。这很快就会变得昂贵,限制了规模,并为数据库基础结构创建了数量相对较少的故障点。支持快速增长的应用程序的解决方案是通过添加服务器来横向扩展,而不是将更多的容量集中在单个服务器上。

跨许多服务器实例的“共享”数据库可以通过SQL数据库来实现,但通常是通过SAN和其他复杂的安排来实现的,这些安排可以使硬件充当单个服务器。由于数据库本身并不提供这种能力,所以开发团队承担着在多台机器上部署多个关系数据库的工作。数据自动存储在每个数据库实例中。应用程序代码用于在所有数据库实例之间分发数据、分发查询和聚合数据结果。必须开发额外的代码来处理资源故障、跨不同数据库执行联接、数据重新平衡、复制和其他要求。此外,在使用手动切分时,关系数据库的许多好处(例如事务完整性)会受到损害或消除。

另一方面,NoSQL数据库通常支持自动分片,这意味着它们在任意数量的服务器上自动地传播数据,甚至不要求应用程序知道服务器池的组成。数据和查询负载在服务器之间自动平衡,当服务器发生故障时,可以快速透明地替换它,不会中断应用程序。

云计算这大大简化了这一点,亚马逊Web服务(AmazonWebServices)等提供商提供了几乎无限的按需容量,并负责所有必要的基础设施管理任务。开发人员不再需要构建复杂、昂贵的平台来支持他们的应用程序,可以集中精力编写应用程序代码。商品服务器可以提供与单个高端服务器相同的处理和存储能力,价格仅为价格的一小部分。

复制

大多数NoSQL数据库还支持自动数据库复制,以便在发生停机或计划维护事件时保持可用性。更复杂的NoSQL数据库完全自愈,提供自动故障转移和恢复,以及跨多个地理区域分发数据库以抵御区域故障和启用数据本地化的能力。与关系数据库不同,NoSQL数据库通常不需要单独的应用程序,也不需要昂贵的插件来实现复制。

集成缓存

许多产品为SQL数据库系统提供了缓存层。这些系统可以大大提高读取性能,但它们没有提高写入性能,而且增加了系统部署的操作复杂性。如果应用程序以读取为主,则可以考虑分布式缓存,但如果应用程序的写入量不大,则分布式缓存可能不会改善最终用户的总体体验,并会增加管理缓存失效的复杂性。

许多NoSQL数据库技术具有出色的集成缓存功能,尽可能地将频繁使用的数据保存在系统内存中,并消除了对单独缓存层的需求。一些NoSQL数据库还为需要最高吞吐量和最低延迟的工作负载提供了完全管理、集成在内存中的数据库管理层。

NoSQL与SQL摘要

  SQL数据库 NoSQL数据库
类型 一种类型(SQL数据库),变化很小 很多不同的类型,包括键值商店,文档数据库、宽列存储和图形数据库。
发展历史 开发于20世纪70年代,用于处理第一波数据存储应用程序。 于2000年代后期开发,以解决sql数据库的局限性,特别是可伸缩性、多结构数据、地理分布和敏捷开发sprint。
实例 MySQL、Postgres、Microsoft SQL Server、Oracle数据库 MongoDB,Cassandra,HBASE,Neo4j
数据存储模型 单个记录(例如,“员工”)存储在表中,每一列存储关于该记录的特定数据(例如,“经理”、“雇用日期”等),就像电子表格一样。相关数据存储在单独的表中,然后在执行更复杂的查询时连接在一起。例如,“office”可能存储在一个表中,“Employees”存储在另一个表中。当用户希望找到员工的工作地址时,数据库引擎将“Employee”和“office”表连接在一起,以获取所有必要的信息。 根据数据库类型而有所不同。例如,键值存储的功能类似于SQL数据库,但只有两个列(‘key’和‘value’),更复杂的信息有时存储在‘value’列中。文档数据库完全取消了表和行模型,将所有相关数据以JSON、XML或其他格式以单独的“文档”形式存储在一起,可以分层嵌套值。
图式 结构和数据类型是预先固定的。若要存储有关新数据项的信息,必须更改整个数据库,在此期间数据库必须脱机。 通常是动态的,有一些强制的数据验证规则。应用程序可以动态添加新字段,与SQL表行不同的是,可以根据需要将不同的数据存储在一起。对于某些数据库(例如宽列存储),动态添加新字段有些困难。
结垢 垂直而言,这意味着必须使单个服务器变得越来越强大,以应对日益增长的需求。可以在许多服务器上扩展SQL数据库,但通常需要大量的额外工程,并且通常会丢失连接、引用完整性和事务等核心关系功能。 横向而言,这意味着为了增加容量,数据库管理员可以简单地添加更多的普通服务器或云实例。必要时,数据库会自动在服务器之间传播数据。
发展模式 开源(如Postgres、MySQL)和封闭源(例如Oracle数据库)的混合 开源
支持多记录ACID事务 基本上没有。MongoDB4.0及以上版本支持多文档ACID事务。了解更多
数据操纵 使用SELECT、INSERT和Update语句的特定语言,例如从表中选择…中的字段 通过面向对象的api
一致性 可以配置为强一致性。 取决于产品。有些提供了很强的一致性(例如MongoDB,可调一致性用于读取),而另一些则提供最终的一致性(例如Cassandra)。

实现NoSQL数据库

通常,组织将从其组织中的nosql数据库的小规模试验开始,这使得以低风险的方式发展对该技术的理解成为可能。大多数NoSQL数据库也是开源的,这意味着它们可以很低的成本下载、实现和扩展。由于开发周期更快,组织也可以更快地创新,以更低的成本提供卓越的客户体验。

 

当您考虑传统基础结构的替代方案时,您可能有几个动机:扩展或执行超出现有系统能力的范围,确定昂贵的专有软件的可行替代方案,或提高开发的速度和灵活性。在为您的业务和应用程序选择合适的数据库时,需要考虑五个重要方面。

如果你对《评估NoSQL数据库时的前5项注意事项》文档感兴趣点击下面链接获取PDF文档(英文版)

https://pan.baidu.com/s/1SQOBamocmPkws-6ThE_a1g

原文:引自MongoDB官网:https://www.mongodb.com/nosql-explained?jmp=footer

推荐MongoDB官方在线学习教程:https://university.mongodb.com/courses/catalog

你可能感兴趣的:(技术优化)