NoSQL数据库简介

假如必须支持数量极为庞大的Web用户,而不是像原来那样只需要支持一小部分商户。

开发者要求数据库必须能够提供下列几个方面的支持:

  • 对大批量读写操作的处理能力;
  • 较低的延迟时间和较短的响应时间;
  • 较高的数据可用性;
  • 关系型数据库很难满足上述需求。

对于大规模的数据管理任务来说,以下4项特征尤为重要:

  1. 可伸缩性:有效应对负载变化能力。
  2. 成本开销:提供多种计费方案。
  3. 灵活性:不需要固定的表格结构。
  4. 可用性:利用很多台低廉的服务器来搭建一套系统。

数据库管理系统特性表
在这里插入图片描述接下来,我们介绍NoSQL数据库。

NoSQL数据库

数据库系统必须完成两项任务:存储数据和获取数据。为了满足这两项需求,数据库管理系统需要满足三件事:

  1. 持久的存储数据;
  2. 维护数据的一致性;
  3. 确保数据的可用性。

持久地存储数据

必须采用某种存储方式使得数据库服务器在关闭之后,依然能够保留其数据。假如将数据存储在内存RAM中,断电之后,数据也就丢失了。
数据必须可供获取:持久化存储数据可以用不同的方式获取。

在这里插入图片描述闪存:可以直接按照存储位置来读取数据。
磁盘和磁带:必须先把驱动器中的活动部件移动到适当的位置,使得设备的读取磁头位于待读的数据块上,然后在进行读取。

维护数据一致性

数据库中的数据应该处在协调一致的状态。当两位或多位数据库用户在使用同一份数据时,如何正确地实现读取操作和写入操作。

在这里插入图片描述首先,更新客户的待付账款;然后更新本公司的可用资金总额。

确保数据的可用性

如果数据库只运行在一台服务器上面,那么会有很多原因导致用户无法访问。(硬件故障、版本升级等)

在这里插入图片描述
一台用来更新数据并响应用户的查询,另一台作为备份,当前者出现故障,可以使用后者给用户提供服务。

要想在多台服务器中维护同一个数据库管理系统是有一些困难的。如果两台数据库服务器必须保证各自拥有的数据彼此相同,那么数据库系统就要花费更长的时间来执行相关的事务。对于保证一致性及高可用性的应用程序来说,这么做是值得的。比如银行的财务系统。然而对于其他一些应用程序来说,能够迅速执行数据库操作要比随时保持数据一致性更为重要。比如某网站的电子商务网站。

场景分析

在用户按下“添加到购物车”时,需要等待多久才算合适呢?最理想的状态是,客户能立刻得到响应,从而继续进行购物。但如果这个界面用起来很慢,而且不够流畅,那么用户可能就会去改用另一家性能好的网站了。故在这种情况下,快速响应要比随时维持数据一致性更为重要。
在这里插入图片描述
解决方案:

先把新数据写入其中一台服务器,并告诉程序已经保存到这台服务器了。此时,网站界面可以通知用户,该商品已经添加到购物车中。当用户收到购物车已更新消息时,数据库管理系统可以把刚刚修改的数据复制到备份的服务器中。

说明:虽然用户的购物车数据在这两台服务器之间可能出现短暂的不一致现象,但用户依然可以继续购物。这两台服务器中的购物车的数据最终仍然会保持一致,我们允许这种短暂的不一致状态。

在这里插入图片描述

在执行读取操作时,若想判断出各台服务器所返回的响应数据是否正确,解决方案就是同时去查询含有该数据的那些服务器。

NoSQL数据库通常采用最终一致性来满足用户对一致性的需求,即在某一段时间内,多份数据库拷贝中的数据可能不同但它们最终会具备相同的值。

在这里插入图片描述
把购物车数据复制到备份服务器中,但是当主服务出现故障时,备份服务器中的数据仍然可以使用,但是如果主服务器故障之前没有将最新的数据写入备份服务器,那么备份服务器就会与主服务器不同。

在这里插入图片描述
如果NoSQL数据库的数据保存在5台副本服务器中,且数据库的读取阈值为3,那么只要有其中3台服务器的给出相同的应答消息,系统就会把该结果返回用户。
有3台服务器做出相同的应答,另有一台服务器给出的应答与这三者不同。

对于每种响应结果,数据库都会统计出返回这种结果的服务器数量。如果某种结果所对应的服务器数量达到或超过某个预先配置好的临界值(阈值),那么就把该结果返回给用户。

在这里插入图片描述

通过设置读取阈值可以在响应时间和一致性之间求得平衡。同样,通过设置写入阈值可以在响应时间和持久性之间取得平衡。

持久性是一种能够长期维持数据副本无误的性质。执行写操作时,副本服务器会把数据写入到各自的持久化存储空间中,只有当完成写入操作的服务器的数量大于或等于写入阈值时,整个写入操作才算彻底完成。

关系型数据库管理系统支持ACID事务,而NoSQL数据库有时也能提供某种程度的ACID事务,但一般来说,NoSQL数据库主要支持的还是BASE事务。

在这里插入图片描述
BASE:基本可用性、软状态、最终一致性

基本可用性:如果分布式系统中的某些部分出了故障,那么系统中的其余部分依然可以继续运作。
软状态:指那种不刷新就会过期的数据,即一种数据最终会为新值所覆写的现象。
最终一致性:在更新过程中,副本之间可能会暂时出现不一致现象,但最终还是能够更新完所有的副本。

NoSQL数据库可以分为四大类:键值数据库;文档数据库;列族数据库;图数据库。

总结

  • 键值数据库简单而灵活。键的类型可以是整数、字符串、由值所构成的列表,也可以是其他类型。对于键值数据库的键来说,在同一个命名空间内,各键的名字不同相互重复。
  • 键值数据库适合用来实现可缩放式的设计方案,可以采用主从式复制模式或无主式复制模式来配置数据库。主从式复制模式中,通常有一个节点专门接受写入操作,同时多个节点都可以处理读取请求。无主式复制模式中,多个节点都能够执行写入操作及读取操作。
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值