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摘要
在这里插入图片描述

实现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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值