02.OLTP与数据服务(数据科学概论)

前言:基于人大的《数据科学概论》,主要给第二章做个总结。了解什么是数据服务、数据服务的特点、面向OLTP应用的RDBMS数据库技术、面向数据服务的NoSQL数据库技术、NewSQL数据库技术。有些概念还需自己去细抠。

目录:

一、什么是数据服务

数据服务:只要指的是面向各种操作型业务、提供数据的增加、修改、以及简单的查询功能。

数据服务系统:提供数据服务功能的系统。包括支撑操作型业务的关系数据库、NoSQL数据库、以及NewSQL数据库。

二、数据服务的特点

(数据服务与数据分析)

  • 数据服务是相对于数据分析来讲的。两者的主要区别是,数据服务一般在一个事务中,只需要存取少量的数据记录,目的是反映操作型业务对数据的修改。比如新建订单、为订单付款等。
  • 数据分析,则往往需要在大量的数据之上(可以是整个数据集),进行统计汇总以及更深层次的分析操作,目的是从大量数据中获取少量的指标和分析结果,以便从整体上对数据中隐藏的规律有所认识。

三、面向OLTP应用的RDBMS(关系数据库管理系统)数据库技术

什么是OLTP?

OLTP即联机处理事务,也称在线处理事务,指的是用户的业务请求转换成数据库的操作,传送到后台数据库管理系统,数据库管理系统在很短的时间内,把用户的相关数据操作请求当做一个完整的事务来处理,对用户的请求进行响应。

两个主要的特点:

  • 用户请求作为一个事务进行处理
  • 响应时间短

关系数据库技术与SQL查询预语言

  • Codd提出的关系数据模型基于表格(关系)、行、列、属性等基本概念。
  • 关系模型里的表格,可以认为是一张二维表,表格的每一行称为一个元组,或者一个记录,表示一个实体。
  • 表格的每一列表示某个实体的一个属性,每一列也称为一个字段。

关系模型的完整性

  • 实体完整性------主键(数据库表的每一个记录,都是和其他记录不同的唯一记录,通过主键唯一标识一行)

  • 参照完整性------主键和外键(如果某一个数据库表的记录,有字段参考了另外一个数据库表的另外一条记录,那么另外的那个数据库表的记录必须真实存在)

  • 用户自定义完整性(用户对数据赋予的一些完整性规则,比如性别必须为男性或者女性)

关系操作

1、选择Selection

​ 就是把一张表格中符合条件的记录选择出来。

2、投影Projection

​ 是在表格上把各个记录的部分属性列提取出来(比如,只想显示学生的学号、姓名和性别信息)

3、连接Join

​ 把两张数据库表或者多张数据库表,按照一定条件,把他们的各一行记录连接起来,生成结果的一条记录。

​ 实现连接的算法有三个:嵌套循环连接、排序合并连接、哈希连接

哈希连接:是使用一个Hash函数(Hash函数的功能是把数据映射到一个地址,在这个地址里进行记录的连接)

为何需要进行连接操作?

答:为了避免数据的重复存储,浪费空间

4、分组、聚集等

什么是SQL语言

SQL定义:SQL 是用于访问和处理数据库的标准的计算机语言。

  • 通过标准化的SQL语言,用户可以进行模式(即表格的结构)和索引的定义和删除,对数据库表的数据进行增加,删除,修改以及查询等操作。
  • 使用SQL语言只需要告诉系统查询的目的是什么(需要查询什么数据)
  • 一个SQL查询语句,要经过词法分析、语法分析、语义检查,在内存中生成一颗语法树,经过优化器优化后生成一颗优化的语法树,再转换成物理执行计划,最后由操作符构成的一颗语法树。(操作符指的是选择、投影、连接、聚集等操作)

查询优化器

根据用户的查询特点和数据的分布特征,选择合适的查询执行计划,通过过滤、投影、连接、聚集等操作,完成用户的查询,力图达到执行速度快、消耗资源少、尽快获得查询结果等目标。

分类:

  • 基于规则的优化器
  • 基于代价模型的优化器

事务处理

数据库里的事务:指的是一组数据库操作,这些操作是互相关联的操作,目的是完成一定的业务目标。

事务的四个特征ACID

  • 事务的原子性:事务的操作,要么全部执行,要么都没有执行。
  • 事务的一致性:事务把数据库状态,从一个有效状态转化为另一个新的有效状态,在事务失败的情况下,必须把所有数据恢复到事务开始之前的状态。
  • 事务的隔离性:在一个并发的事务处理系统中,多个事务的各个操作步骤可以交替执行,但是必须保证某个未提交的事务和其他事务是相互隔离的,目的是保证未提交的数据,别的事务不能看见。
  • 事务的持久性:提交的数据必须保存起来,当系统失败或者重启,数据能够恢复到最近的正确状态。

并发控制与恢复技术

  • 事务的ACID特性以及整个数据库系统的可靠性,依靠并发控制技术和恢复技术来实现。
  • 数据库的并发技术主要分为两类,包括基于加锁的并发控制技术、以及多版本并发控制技术
  • 数据库恢复技术,保证数据库系统在失败后,能够恢复到最近的一致状态。为了达到这个目的,数据库的所有操作都必须有所记载,这就是数据库日志
  • 数据库检查点(截短日志文件),以及恢复过程。

数据库的安全性

数据库里的数据,如果没有施加任何保护,就可能被窃取或者篡改,数据库的安全性是一个重要的问题。

数据库安全性的办法:

  • 用户认证:是对存取数据库的用户,鉴定其身份。
  • 用户授权:根据用户的角色,授予其存取数据的权限。
  • 审计:是对用户在数据库数据上的操作进行记录,以便出现问题的时候,可以追本溯源。
  • 加密:数据的加密,是把数据进行加密然后保存到数据库表中。加密的数据需要解密,才能进行查看。
  • 视图机制:在数据库表之上,通过查询(选择、投影、连接等)定义视图,然后把视图的存取权限授予部分用户,一定程度上增强了数据库的安全性。

并行数据库和分布式数据库

并行数据库:(为了提高数据库性能)指的是通过高速网络把多个计算节点连接起来,把数据库数据和操作分解到这些节点上并行操作的一类数据库系统。
分布式数据库:指的是这样的数据库系统,它运行在多台计算机上,这些计算机通过网络互联。每台计算机可以放在一个地方,每台计算机安装独立的RDBMS系统,拥有数据的完整拷贝,或者部分拷贝。这些计算机系统共同组成一个完整的、逻辑上集中、但是物理上分布的大型数据库。

分布式数据库的主要特点:数据物理分布在各个场地,但是他们逻辑上是一个整体。各个场地上的数据由本地RDBMS管理,该RDBMS具有自治处理的能力。

分布式数据库的优点

  • 巧妙地把各场地自治管理和集中式数据查询及操作的要求巧妙的结合起来。
  • 具有更高的数据访问速度
  • 更高的并发能力
  • 更高的系统扩展能力

**并行数据库和分布式数据库的主要区别:**并行数据库的每个节点并未安装独立的RDBMS,只是整个RDBMS的一部分,其管理的数据也是整个数据库的一个子集,节点间的连接一般通过高速网络,以便支持高速的数据访问。
在这里插入图片描述

一些概念:

  • LDBMS:(Local Database Management System)是局部场地上的数据库管理系统,其功能是建立和管理局部数据库,提供场地自治能力,执行局部应用以及全局查询的子查询
  • GDBMS(Global Database Management System)是全局数据库管理系统,主要功能是提供分布透明性,协调全局事务的执行,协调格局部DBMS以完成全局应用,保证数据库的全局一致性,执行并发控制,实现更新同步,提供全局恢复功能。
  • 通信管理CM:用于在分布数据库各场地之间传送消息和数据,完成通信功能。

四、面向数据服务的NoSQL数据库技术

NoSQL数据库并不是某个具体的数据库系统,而是一类数据库系统的统称。(No only SQL)

采取了一些新的原则,目的是利用大型的计算机集群,实现大数据处理的有效处理。

原则如下:

  1. 采用横向处理扩展的方式,应对大数据处理的挑战。通过大量节点的并行处理,获得极高的数据处理性能和吞吐能力,包括读写性能。NoSQL数据库需要对数据进行划分,以便进行并行处理。
  2. 放弃严格的ACID一致性约束,采用放松的一致性约束条件,允许数据暂时出现不一致的情况,接收最终一致性。
  3. 对数据的存储进行容错处理,一般对于数据块进行适当备份(比如在不同节点上维护3个副本),以应对节点失败状况,保证在由普通服务器组成额的集群上稳定可持续地运行。

CAP理论

在大型分布式系统中,一致性、系统可用性和网络分区容忍性这3个目标中,只可以获得其中两个特性。追求两个目标将损害另一个目标,3个目标不可兼得。

  • ACID实施了强一致性约束,使得关系数据库系统(SQL数据库)很难部署到大规模的集群系统中(几千个节点规模)。追求一致性和可用性,牺牲了网络分区容忍性
  • NoSQL数据库,则通过放松一致性的约束,把数据和处理任务分布到大量的节点上运行,它追求系统可用性和网络分区容忍性。

在这里插入图片描述

Key-Value数据库

(1)Dynamo数据库

  • Dynamo数据库是Amazon开发的Key Value(键/值对)数据库。Dynamo是一个具有极大影响力的NoSQL数据库系统,成为其他NoSQL数据库模仿的对象。
  • 数据库里面的每个记录包含两个部分,分别是主键key和值value,在value部分可以存放任意数据。
  • 一致性HASH:Dynamo使用一致性Hash技术实现数据的划分和分布。

(2)Quorum机制

  • Dynamo使用Quorum机制(也称NRW方法)实现数据的容错备份,并保证数据的一致性和系统的可用性。N为副本(也称备份)的个数,R为读数据的最小节点数,W为写成功的最小节点数。通过这三个参数的配合,可以灵活调整Dynamo系统的可用性与一致性。

    1. 比如N=3&R=1&W=1

      表示最少只需要从一个节点读取数据即可。读到数据就可以返回,而进行写入的时候,只要在N个副本里,写入其中一个即可返回。这时候系统可用性很高,但是并不能保证数据的一致性,也就是读取的数据可能不是刚刚写入的数据。

    2. 当N=3&R=3&W=3

      每次写操作,都需要保证所有的备份都写成功,读的时候,也需要从所有的备份读取数据,才算读成功。这样读取出来的数据一定保证正确性,但是由于读写过程中,需要涉及3个副本,性能大受影响。数据的一致性得到保证,但是系统可用性和性能降低了。

    3. N=3&R=2&W=2

      既保证了数据的一致性,又保证一定的系统可用性和性能。这种模式的本质是**R+W>N**,能够保证读取得到的数据肯定是已经写入的数据,读取的份数一定要比总的副本数减去确保写成功的副本数的差值还要大。

(3)Dynamo使用向量时钟技术,实现版本冲突处理,比较数据副本的时钟向量,以最新的为准,如果不能判断,交给用户决定。

Column Family数据库

(1)Big Table

  • Big Family是Google基于GFS(Google File System)分布式文件系统、CLS(Chubby Lock Service)分布式加锁服务,开发的大型分布式NoSQL数据库系统、
  • 它支持行、列、时间戳索引、支持PB级海量数据处理,运用于廉价集群,易于扩展,支持动态伸缩。Big Table支持大量并发的读操作,同时支持数据更新。
  • 和dynamo一样,Big Table的设计思路,极大影响了后续各个NoSQL数据库系统的研发。

document数据库

  • Document存储技术仍然以Key Value存储模型作为基础模型
  • 这个模型可以对文档的历史版本进行追踪,每个文档是一个Key Value 的列表,形成循环嵌套的结构。文档格式一般采用JSON
  • MongoDB
    • 本质上Key Value数据库,它是模式自由的,也就是存储在MongoDB数据库中的文件,我们无需定义他的结构定义。
    • 如果需要的话,可以把不同结构,不同类型的文件保存到MongoDB数据库中。
      在这里插入图片描述

graph数据库

Neo4J是一个用Java语言实现的、高性能的NoSQL图数据库,它的基础数据结构是图(graph),而不是二维表。

在一个图中,包含两种基本的数据对象,分别是节点和关系。所有的节点,通过关系连接起来,形成网格结构。节点和关系,可以包含键值(Key Value)形式的属性。

NewSQL数据库技术

NewSQL是一类新式的关系型数据库管理系统的统称

这类系统,一般针对OLTP类的工作负载,提高了扩展能力,具有类似NoSQL系统的扩展性能,但是仍然保持传统数据库的优势,特别是ACID的事务特性,以及对SQL查询语言的支持。

New SQL系统可以分为三类:

  1. 第一类,通过全新的架构技术,保留了ACID特性,同时支持更高的系统扩展性,比如Goole Spanner,VoltDB等。
  2. 第二类,对现有的开源数据库引擎进行了深入的优化(特别是存储、索引、以及查询模块),所研发的新的SQL数据库,比如TokuDB,MemSQL等
  3. 第三类,通过中间软件,支持数据的透明划分,把整个数据库自动分割在多个节点上运行,获得更高性能,比如ScaleBase等。

VoltDB数据库----NewSQL典型代表

VoltDB数据库是数据库原型系统H-Store的商业化版本

  • 把数据保存在集群内存中
  • 每个站点上的数据分区,通过单一的线程进行存取,避免了多线程环境下的加锁和闩锁操作带来的开销。
  • 所有的事务请求,被串行执行
  • 对数据库的存取,通过存储过程来实现,意味着用户不能发起即席查询,只能调用这些存储过程。
  • VoltDB的日志文件,不记录数据改变的情况,而是把对存储过程的调用即其参数,按照调用的串行顺序记录下来,每个节点保留自己的日志信息,这种日志方法称为命令日志。

Google Spanner数据库----NewSQL典型代表

是google开发的跨越数据中心的、提供全局一致性的关系数据库系统,是一个高度扩展的、支持多版本的、支持同步复制的分布式数据库系统。支持丰富SQL查询语言功能,提供极高的查询性能。

发起即席查询,只能调用这些存储过程。

  • VoltDB的日志文件,不记录数据改变的情况,而是把对存储过程的调用即其参数,按照调用的串行顺序记录下来,每个节点保留自己的日志信息,这种日志方法称为命令日志。

Google Spanner数据库----NewSQL典型代表

是google开发的跨越数据中心的、提供全局一致性的关系数据库系统,是一个高度扩展的、支持多版本的、支持同步复制的分布式数据库系统。支持丰富SQL查询语言功能,提供极高的查询性能。

猜你喜欢

转载自blog.csdn.net/weixin_48931875/article/details/111409842