数据库系统之NoSQL数据库系统

什么是NoSQL数据库系统?

NoSQL数据库系统是在21世纪初开发出来的,以应对日益增长的互联网使用和移动地理定位技术产生的大量数据处理需求.

传统的解决方案要么太昂贵、不容易扩充,要么需要太多时间来处理数据。

现代NoSQL数据库系统“借用”了早期系统的一些解决方案,并在可伸缩性和不同类型数据(如文本、音频、视频、图像和地理位置)的高效处理方面取得了重大进展。

NoSQL数据库系统包括以下类型的数据库系统,按提供的数据的逻辑视图分类:键值存储、文档存储、图存储和列存储。

NoSQL全程有两种说法:
一种说法是NoSQL“数据库系统不使用SQL(Do not use SQL),在计算机集群上运行,并提供不同的一致性和分布选项。
另一种说法是"Not Only SQL“。
目前人们普遍接受第一种说法。

为什么使用NoSQL?

数据模型:数据的表格视图对于分层和网络数据库领域使用起来不方便。

阻抗不匹配问题:在面向对象的编程语言中,持久数据的(表格视图)与临时数据视图不一致。

数据库系统的应用程序和集成:集成许多应用程序的结构比单个应用程序所需的要复杂得多,例如,一个应用程序所需的索引可能会导致另一个应用程序的性能问题。

小型计算机集群:在共享磁盘子系统上操作的关联数据库在小型计算机集群上不能很好地工作。

分布式和一致性:基于ACID的事务协议对于分布式事务来说过于严格。

NoSQL数据库系统的属性

半结构化的、无模式的数据模型

半结构化数据是一种结构化数据的形式,它不符合与关系数据库或其他形式的数据表相关联的数据模型的正式结构。
半结构化数据包含tags或其他标记,以分离语义元素并强制数据中的记录和字段的层次结构。
无模式数据模型意味着没有特定的数据结构用于在数据库中存储数据。
无模式数据库不需要与严格的模式保持一致。
无模式数据库不会对单个值实施数据类型限制。
无模式数据库可以存储结构化和非结构化数据。

专业分布模型

单服务器:意味着根本没有分发

切分 Sharding:
为了支持水平可伸缩性,我们将数据的不同部分放到不同的服务器(切分)。

主从复制 Mater-slave replication:
数据跨多个节点复制,其中一个节点指定为主节点,其他节点指定为从节点;所有更新都对主节点进行,然后传播到从节点。

对等复制 Peer-to-peer replication:
跨多个节点复制的数据;所有副本具有相同的权重,没有主模式;节点通信其写入;所有节点读取和写入所有数据。

结合分片和复制 Combining sharding and replication:
同时使用主从 replication和sharding。

弱一致性

一个典型的读一致性原则是,对两个或多个数据项执行更新,从而阻止对受更新影响的所有数据项的访问,例如: 2PL协议。
NoSQL数据库系统在一定程度上放宽了事务一致性。

数据项可以在一段时间内保持不一致,这称为不一致窗口(inconsistency window)。

最终一致性的概念用于在分布式和复制的数据项上强制复制一致性。
最终一致性意味着数据项的副本可以在“不一致”窗口中不一致,并且以后所有副本将具有相同的值。
在执行读写一致性的条件下,可以容忍较长的不一致窗口。

这就引出了会话一致性的概念,这意味着在用户会话中,必须实现读写一致性( read-your-write consistency )。

会话一致性可以通过粘性会话( sticky session)来实现,即只连接到集群中一个节点的会话;它也称为(会话亲和性 session affinity)。

实现会话一致性的另一个解决方案是基于版本时间戳,其中与数据项的每次交互都是在具有最高时间戳的数据项上执行的。

设计一个避免不一致的系统总是可能的,但有时我们不得不用一致性来换取系统的其他一些特性。

不同的领域对不一致有不同的容忍度,我们在做决定时必须考虑到这种容忍度。

即使在传统的关系数据库系统中,也可以将一致性从最高隔离级别(serializable)放宽到最低级别(read-committed),以获得更好的性能。

CAP定理:在Consistency, Availability, 和Partition tolerance这三个属性中,您只能得到两个:

一致性:数据库的状态在任何时刻都满足给定的一致性约束。

可用性:如果您可以与群集中的节点通信,那么它就可以读写数据。

分区:集群可以在通信中断的情况下生存,通信中断将集群分成多个无法相互通信的分区(分裂的大脑)

单服务器系统之所以称为CA,是因为它具有一致性和可用性,而不是分区tolerance

如果集群必须tolerance网络分区,那么我们必须用一致性换取可用性。

Relaxing durability

如果SQL系统遵循ACID属性,那么NoSQL系统遵循基本属性为:
Basically Available, Soft state和Eventually consistent。

放松的持久性意味着我们用持久性来换取更高的性能,例如,对数据库的内存表示进行更新,并定期将更改推送到磁盘。

另一类durability tradeoffs伴随着复制的数据,例如。
当一个节点在更新复制到其他节点之前进行处理和更新但失败时。

Versioning

版本是某事物的一种特殊形式,在某些方面不同于同类事物的早期形式或其他形式。

数据库系统中的Versioning 意味着数据项的所有修改都存储在一个数据库中,并在这些修改发生时加上时间戳。

在实践中,Versioning 是按预定义的深度执行的,即在创建数据项时确定数据项的总版本数。

Versioning 允许表示历史信息。

通过时间戳对数据版本进行编号,可以跟踪数据项何时发生更改,如果有新版本,则可以确定哪个版本是最新版本。

References

  1. Harrison G., Next Generation Databases NoSQL NewSQL Big Data, Apress, 2015.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值