什么是NoSQL?

NoSQL包含各种不同的数据库技术,这些技术是为了响应构建现代应用程序的需求而开发的:

  • 开发人员正在使用能够创建大量新产品的应用程序,快速变化的数据类型-结构化,半结构化,非结构化和多态数据。

  • 12到18个月的瀑布开发周期已经不复存在了。现在小团队在敏捷冲刺中工作,每一两周快速迭代并推送代码,有些甚至每天数次。

  • 曾经服务于有限用户的应用程序现在作为必须始终在线的服务交付,bet way可从许多不同的设备访问,并扩展到全球数百万用户。

  • 组织现在转向使用开源软件的扩展架构,商品服务器和云计算代替了大型的单片服务器和存储基础设施。

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

使用MongoDB Atlas:托管数据库即服务,在几分钟内启动一个NoSQL集群bet waybet way

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

在任何数据库上启动应用程序通常都需要仔细规划以确保性能,高可用性,安全性,以及灾难恢复——只要运行应用程序,这些义务就会继续。使用Monbet waygoDB Atlas,您可以获得MongoDB的所有特性,而不需要任何操作上的繁重工作,bet way让你专注于学习和构建你的应用。功能包括:

  • 随需应变,随你的便

  • 无缝升级和自动修复

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

  • 深度监控和定制警报

  • 默认高度安全

  • 具有时间点恢复的连续备份

bet way官网

NoSQL数据库类型

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

  • 图形存储用于存储有关数据网络的信息,比如社会关系。图形存储包括Neo4j和Giraph。

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

  • 宽列商店例如Cassandra和HBase是为查询大型数据集而优化的,并将数据列存储在一起,而行。

NoSQL的好处

与关系数据库相比,NoSQL数据库是更具可扩展性并提供卓越的性能,他们的数据模型解决了关系模型没有解决的几个问题:

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

  • 敏捷的冲刺,快速迭代开发模式,以及频繁的代码推送

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

  • 地理分布的扩展架构,而不是昂贵的,单片建筑

阅读我们的免费白皮书:评估NoSQL数据库时的5大注意事项,了解:

  • 选择适当的数据模型:文档,键值和宽列,或图模型

  • 一致性和最终一致性系统的优缺点

  • 为什么惯用驱动程序会减少新开发人员的入职时间并简化应用程序开发

动态模式

关系数据库要求在添加数据之前定义模式。例如,您可能想要存储关于客户的数据,例如电话号码,姓和名,地址,城市和州——SQL数据库需要提前知道您存储的是什么。

这个不太适合敏捷开发方法,因为每次你完成新功能,数据库的模式经常需要更改。如果你决定,开发中的几个迭代,除了客户的地址和电话号码之外,您还想存储他们最喜欢的商品,你需要将这一列添加到数据库中,然后将整个数据库迁移到新模式。

如果数据库很大,这是一个非常缓慢的过程,需要大量的停机时间。如果您经常更改应用程序存储的数据(因为您正在快速迭代),那么这种停机也可能很频繁。也没有办法,使用关系数据库,有效地处理完全非结构化或未知的数据。

NoSQL数据库的构建允许在没有预定义模式的情况下插入数据。这使得实时地对应用程序进行重大更改变得很容易,无需担心服务中断——这意味着开发速度更快,bet way代码集成更可靠,并且需要更少的数据库管理员时间。开发人员通常必须添加应用程序端代码来执行数据质量控制,比如要求特定领域的存在,数据类型或允许值。更复杂的NoSQL数据库允许在数据库中应用验证规则,允许用户跨数据实施治理,同时维护动态模式的敏捷性优势。

自动切割

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

“分片”一个数据库在许多服务器实例可以实现与SQL数据库,但通常是通过san和其他复杂的安排来实现的,以便使硬件充当单个服务器。因为数据库本身不提供这种功能,开发团队负责跨多台机器部署多个关系数据库。数据自动存储在每个数据库实例中。开发应用程序代码来分发数据,分发查询,并聚合所有数据库实例的数据结果。必须开发额外的代码来处理资源故障,要跨不同的数据库执行联接,对于数据重新平衡,复制,和其他要求。此外,关系数据库的许多好处,比如事务完整性,在使用手动切碎时被损坏或消除。

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

云计算使这变得非常容易,像Amazon Web Services这样的提供商提供了几乎无限的bet way随需应变能力,并负责所有必要的基础设施管理任务。开发人员不再需要构建复杂的昂贵的平台来支持他们的应用,并能专注于编写应用程序代码。大宗商品服务器可以提供与单个高端服务器相同的处理和存储功能,价格仅为一小部分。

复制

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

集成缓存

许多产品为SQL数据库系统提供缓存层。这些系统可以大大提高读取性能,但它们不能提高写性能,它们还增加了系统部署的操作复杂性。如果您的应用程序由读取控制,那么可以考虑分布式缓存,但是,如果您的应用程序只有一个适度的写入量,那么分布式缓存可能不会改善最终用户的整体体验,这会增加管理缓存失效的复杂性。

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

NoSQL vs。SQL总结

SQL数据库 NoSQL数据库
类型 一种类型(SQL数据库),稍有变化 许多不同的类型,包括键值存储,文档数据库,商店、宽栏和图形数据库
发展历史 20世纪70年代开发的第一批数据存储应用程序 开发于2000年后期,用于解决SQL数据库的局限性,特别是可伸缩性、multi-structured数据,地理分布和敏捷开发冲刺
例子 MySQL,Postgres、Microsoft SQL Server,Oracle数据库 bet wayMongoDB,卡桑德拉HBaseNeo4j
数据存储模型 个人记录(例如,’employees’)作为行存储在表中,每列存储关于该记录的特定数据(例如,“经理”、“受雇日期”等)、很像电子表格。相关数据存储在单独的表中,然后在执行更复杂的查询时连接在一起。例如,“办公室”可能存储在一张表中,另一种是“雇员”。当用户想要查找员工的工作地址时,数据库引擎将“Employee”和“Office”表连接在一起,以获取所有必需的信息。 根据数据库类型而异。例如,键值存储功能类似于SQL数据库,但是只有两列('key'和'value'),更复杂的信息有时以blob形式存储在“值”列中。文档数据库完全摒弃了表和行模型,将所有相关数据存储在JSON中的单个“文档”中,XML或者其他格式,它可以分层嵌套值。
模式 结构和数据类型是预先确定的。要存储有关新数据项的信息,必须更改整个数据库,在此期间数据库必须脱机。 通常的动态,使用一些强制的数据验证规则。应用程序可以动态添加新字段,与SQL表行不同,不同的数据可以根据需要存储在一起。对于某些数据库(例如,宽列存储)动态添加新字段的难度更大。
扩展 垂直,这意味着必须使单个服务器变得越来越强大,以应对不断增长的需求。可以将SQL数据库分布在许多服务器上,但通常需要大量的额外工程,以及核心关系特性,如连接,引用完整性和事务通常会丢失。 水平地,意味着增加容量,数据库管理员可以简单地添加更多的商品服务器或云实例。数据库在必要时自动跨服务器传播数据。
发展模式 开源的混合(例如,Postgres、mysql)和封闭源代码(例如,Oracle数据库) 开源
支持多记录酸性事务 是的 主要是没有。bet wayMongoDB 4.0及以上版本支持多文档ACID事务。了解更多
数据操作 具体语言使用选择,插入,更新语句,如。从表中选择字段,其中… 通过面向对象的api
一致性 可配置为强一致性 取决于产品。有些提供了很强的一致性(例如,bet wayMongoDB,与可调一致性的读取),而其他提供最终一致性(例如,卡桑德拉)。

实现NoSQL数据库

通常,组织将从组织内NoSQL数据库的小规模试验开始,这使得以一种低风险的方式来理解这项技术成为可能。大多数nosql数据库也是开源的,意味着它们可以被下载,以低成本实施和扩展。因为开发周期更快,企业还可以更快地进行创新,以更低的成本提供卓越的客户体验。

在考虑传统基础设施的替代方案时,您可能有几个动机:扩展或执行现有系统功能之外的功能,找出昂贵专有软件的可行替代品,或者提高开发的速度和敏捷性。为您的业务和应用程序选择正确的数据库时,有五个重要的方面需要考虑。

免费白皮书

阅读我们的免费白皮书:评估NoSQL数据库时的五大注意事项和学习:

  • 选择适当的数据模型:文档,键值和宽列,或图模型

  • 一致性和最终一致性系统的优缺点

  • 为什么惯用驱动程序会减少新开发人员的入职时间并简化应用程序开发