当前位置: 首页 > news >正文

系统分析师-案例分析-数据库系统数据仓库反规范化技术NoSQL内存数据库

目录

一、数据库系统

1.1 不规范化带来的四大问题

1.2 并发控制

1.3 封锁协议

1.4 数据库性能优化、完整性约束、安全性

1.5 分布式数据库

1.6 数据分片

1.7 分布透明性

二、数据仓库集成

三、反规范化技术

四、NoSQL&内存数据库

NoSQL

内存数据库

CAP 理论

相关推荐


一、数据库系统

1.1 不规范化带来的四大问题

不规范化带来的四大问题 设有一个关系模式R(SNAME,CNAME,TNAME TADDRESS),其属性分别表示学生姓名、选修的课程名、任课教师姓名和任课教师地址。仔细分析一下,就会发现这个模式存在下列存储异常的问题:

(1)数据冗余:数据被重复存储,如某门课程有100个学生选修,那么在R的关系中就要出现100个元组,这门课程的任课教师姓名和地址也随之重复出现100次。
(2)修改异常:修改导致数据不一致,如由于上述冗余问题,当需要修改这个教师的地址时,就要修改100个元组中的地址值,否则就会出现地址值不一致的现象。
(3)插入异常:插入时异常,如不知道听课学生名单,这个教师的任课情况和家庭地址就无法进入数据库;否则就要在学生姓名处插入空值。
(4)删除异常:删除了不该删除的数据,如当只有一条记录时,要删除这个学生选课信息,会将课程名、教师名和教师地址都给删除了。 并发控制

1.2 并发控制

事务的 ACID 特性:原子性、一致性、隔离性、持久性。

丢失更新:事务 1 对数据 A 进行了修改并写回,事务 2 也对 A 进行了修改并写回,此时事务 2 写回的数据会覆盖事务 1 写回的数据,就丢失了事务 1 对 A 的更新。即对数据 A 的更新会被覆盖。

不可重复读:事务 2 读 A,而后事务 1 对数据 A 进行了修改并写回,此时若事务 2 再读 A,发现数据不对。即一个事务重复读 A 两次,会发现数据 A 有误。

读脏数据:事务 1 对数据 A 进行了修改后,事务 2 读数据 A,而后事务 1 回滚,数据 A 恢复了原来的值,那么事务 2 对数据 A 做的事是无效的,读到了脏数据。

1.3 封锁协议

X 锁是排它锁(写锁)。若事务 T 对数据对象 A 加上 X 锁,则只允许 T 读取和修改 A,其他事务都不能再对 A 加任何类型的锁,直到 T 释放 A 上的锁。

S 锁是共享锁(读锁)。若事务 T 对数据对象 A 加上 S 锁,则只允许 T 读取 A,但不能修改 A,其他事务只能再对 A 加 S 锁(也即能读不能修改),直到 T 释放 A 上的 S 锁。

丢失更新加锁:一级封锁协议。事务 T 在修改数据 R 之前必须先对其加 X 锁,直到事务结束才释放。

读脏数据加锁:二级封锁协议。一级封锁协议加上事务 T 在读取数据 R 之前先对其加 S 锁,读完后即可释放 S 锁。

不可重复读加锁:三级封锁协议。一级封锁协议加上事务 T 在读取数据 R 之前先对其加 S 锁,直到事务结束才释放。

两段锁协议。所有事务必须分两个阶段对数据项加锁和解锁。其中扩展阶段是在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;收缩阶段是在释放一个封锁之后,事务不能再申请和获得任何其他封锁。若并发执行的所有事务均遵守两段封锁协议,则对这些事务的任何并发调度策略都是可串行化的。遵守两段封锁协议的事务可能发生死锁。

1.4 数据库性能优化、完整性约束、安全性

数据库性能优化:硬件升级、数据库设计、索引优化、查询优化。

数据库的完整性约束:实体完整性、参照完整性、用户定义完整性、触发器。

数据库的安全性

表 5-10 数据库安全性措施表
措施说明
用户标识和鉴别最外层的安全保护措施,可以使用用户账户、口令和随机数检验等方式
存取控制(数据授权)对用户进行授权,包括操作类型(例如,查找、更新或删除等)和数据对象的权限
密码存储和传输对远程终端信息用密码传输
视图的保护通过视图的方式进行授权
审计使用一个专用文件或数据库,自动将用户对数据库的所有操作记录下来

视图(View)是从一个或多个表(或视图)导出的表。视图与表不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。

视图的优点:

1、视图能简化用户的操作2、视图机制可以使用户以不同的方式查询同一数据3、视图对数据库重构提供了一定程度的逻辑独立性4、视图可以对机密的数据提供安全保护

E-R 图,实体,联系,联系的类型。

1.5 分布式数据库

分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力(称为场地自治),它可以执行局部应用,同时,每个节点也能通过网络通信子系统执行全局应用。分布式数据库系统是在集中式数据库系统技术的基础上发展起来的,具有如下特点:

(1)数据独立性。在分布式数据库系统中,数据独立性这一特性更加重要,并具有更多的内容。除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)。
(2)集中与自治共享结合的控制结构。各局部的 DBMS 可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部 DBMS 的工作,执行全局应用。
(3)适当增加数据冗余度。在不同的场地存储同一数据的多个副本,这样,可以提高系统的可靠性和可用性,同时也能提高系统性能。
(4)全局的一致性、可串行性和可恢复性。

分布式数据库的优点:

(1)分布式数据库可以解决企业部门分散而数据需要相互联系的问题。
(2)如果企业需要增加新的相对自主的部门来扩充机构,则分布式数据库系统可以在对当前机构影响最小的情况下进行扩充。
(3)分布式数据库可以满足均衡负载的需要。
(4)当企业已存在几个数据库系统,而且实现全局应用的必要性增加时,就可以由这些数据库自下而上构成分布式数据库系统。
(5)相等规模的分布式数据库系统在出现故障的概率上不会比集中式数据库系统低,但由于其故障的影响仅限于局部数据应用,因此,就整个系统来说,它的可靠性是比较高的。

1.6 数据分片

数据分片将数据库整体逻辑结构分解为合适的逻辑单位(片段),然后由分布模式来定义片段及其副本在各场地的物理分布,其主要目的是提高访问的局部性,有利于按照用户的需求,组织数据的分布和控制数据的冗余度。

(1)水平分片。水平分片将一个全局关系中的元组分裂成多个子集,每个子集为一个片段。分片条件由关系中的属性值表示。对于水平分片,重构全局关系可通过关系的并操作实现。
(2)垂直分片。垂直分片将一个全局关系按属性分裂成多个子集,应满足不相交性(关键字除外)。对于垂直分片,重构全局关系可通过连接运算实现。
(3)导出分片。导出分片又称为导出水平分片,即水平分片的条件不是本关系属性的条件,而是其他关系属性的条件。
(4)混合分片。混合分片是在分片中采用水平分片和垂直分片两种形式的混合。

1.7 分布透明性

分布透明性是指用户不必关心数据的逻辑分片,不必关心数据存储的物理位置分配细节,也不必关心局部场地上数据库的数据模型。

  • 分片透明性:用户或应用程序不需要知道逻辑上访问的表具体是如何分块存储的。
  • 位置透明性:应用程序不关心数据存储物理位置的改变。
  • 逻辑透明性:用户或应用程序无需知道局部使用的是哪种数据模型。
  • 复制透明性:用户或应用程序不关心复制的数据从何而来。

二、数据仓库集成

数据仓库集成是把多种来源的数据集中在一起,建立数据仓库,所有数据都驻留在单个数据库服务器上,配置大型处理器和存储容量。数据仓库主要用于决策支持,在数据处理过程中强调分析。其特点是:(1)集成的数据。(2)面向主题。(3)数据相对稳定。(4)包含历史信息。

数据仓库的结构通常包含四个层次:

  1. 数据源:是数据仓库系统的基础,是整个系统的数据源泉。
  2. 数据的存储与管理:是整个数据仓库系统的核心。
  3. OLAP(联机分析处理)服务器:对分析需要的数据进行有效集成,按多维模型组织,以便进行多角度、多层次的分析,并发现趋势。
  4. 前端工具:主要包括各种报表工具、查询工具、数据分析工具、数据挖掘工具以及各种基于数据仓库或数据集市的应用开发工具。

数据挖掘的分析方法

(1) 关联分析。主要用于发现不同事件之间的关联性,即一个事件发生的同时,另一个事件也经常发生。
(2) 序列分析。主要用于发现一定时间间隔内接连发生的事件,这些事件构成一个序列。
(3) 分类分析。首先为每个记录赋予 一个标记 (一组具有不同特征的类别),即按标记分类记录,然后检查这些标定的记录,描述出这些记录的特征。
(4) 聚类分析。聚类分析是根据 “物以类聚” 的原理,将本身没有类别的样本聚集成不同的组,并且对每个这样的组进行描述的过程。聚类分析是分类分析的逆过程,它的输入集是一组未标定的记录,即输入的记录没有做任何处理,目的是根据一定的规则,合理地划分记录集合。
(5) 预测方法。预测方法与分类分析相似,但预测是根据样本的已知特征估算某个连续类型的变量的取值的过程,而分类分析则只是用于判别样本所属的离散类别而已。
(6) 时间序列分析。时间序列分析是随时间而变化的事件序列,目的是预测未来发展趋势,或者寻找相似发展模式,或者发现周期性的发展规律。

商业智能:BI 系统主要包括数据预处理、建立数据仓库、数据分析和数据展现四个主要阶段。

三、反规范化技术

反规范化技术:规范化设计后,数据库设计者希望牺牲部分规范化来提高性能,这种从规范化设计的回退方法称为反规范化技术。

采用反规范化技术的益处:降低连接操作的需求、降低外码和索引的数目,还可能减少表的数目,能够提高查询效率。

(1)增加冗余列:在多个表中保留相同的列,通过增加数据冗余减少或避免查询时的连接操作。

(2)增加派生列:在表中增加可以由本表或其它表中数据计算生成的列,减少查询时的连接操作并避免计算或使用集合函数。

(3)重新组表:如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。

(4)水平分割表:根据一列或多列数据的值,把数据放到多个独立的表中,主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用。

(5)垂直分割表:对表进行分割,将主键与部分列放到一个表中,主键与其它列放到另一个表中,在查询时减少 I/O 次数。

四、NoSQL&内存数据库

NoSQL

Not-only SQL:是一种非关系型的数据库,其和关系数据库的比较如下:

特征关系数据库模式NoSQL 模式
并发支持支持并发、效率低并发性能高
存储与查询关系表方式存储、SQL 查询海量数据存储、查询效率高
扩展方式向上扩展向外扩展
索引方式B 树、哈希等键值索引
应用领域面向通用领域特定应用领域
数据一致性实时一致性弱一致性
数据类型结构化数据非结构化
事物高事务性弱事务性
水平扩展
数据容量有限数据海量数据

NoSQL 数据库存在的问题是:
(1)成熟度不够,大量关键特性有待实现;
(2)开源数据库产品的支持力度有限;
(3)数据挖掘与商务智能支持不足,现有的产品无法直接使用 NoSQL 数据库;
(4)NoSQL 数据库专家较少,大部分都处于学习阶段。

内存数据库

内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在 10 倍以上。

特点:工作版本常驻内存,活动事务只与实时内存数据库的内存拷贝打交道。

常见的内存数据库:Redis、SQLite、Mircrosoft SQL Server Compact 等。

NoSQL 数据库并没有统一的模型,而且是非关系型的。常见的 NoSQL 数据库通过存储方式划分,可分为文档存储、键值存储、列存储和图存储,其具体分类和特点如下表所示:

分 类典型产品应用场景优 点缺 点
文档存储MongoDB、CouchDBWeb 应用,存储面向文档和半结构化数据结构灵活,可以根据 value 构建索引缺乏统一的查询语法,无事务处理能力
键值存储Memcached、Redis内容缓存,如会话、配置文件、参数等扩展性好,灵活性强,大量操作时性能高数据无结构化,通常被当成字符串或者二进制数据,通过键查询值
列存储BigTable、HBase、Cassandra分布式数据存储和管理可扩展性强,查找速度快,复杂性低功能局限,不支持事务的强一致性
图存储Neo4j、OrientDB社交网络、推荐系统,专注于构建系统图谱支持复杂的图形算法复杂性高,只能支持一定的数据规模

CAP 理论

CAP 理论是对于一个分布式系统,一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)三个特点最多只能三选二。(1)一致性。一致性指系统在执行了某些操作后仍处在一个一致的状态。就是所有的结点在同一时刻有相同的数据。(2)可用性。可用性指对数据的所有操作都应有成功的返回。就是任何请求不管成功或失败都有响应。(3)分区容忍性。这一概念的前提是在网络发生故障的时候。在网络连接上,一些结点出现故障,使得原本连通的网络变成了一块一块的分区,若允许系统继续工作,那么就是分区可容忍的。

由于 CAP 理论的存在,为了提高性能,出现了 ACID 的一种变种 BASE。即是一个弱一致性的理论,只要求最终一致性。

  • Basic Availability:基本可用。
  • Soft State:软状态,可以理解为 “无连接” 的。
  • Eventual Consistency:最终一致性,最终整个系统(时间和系统的要求有关)看到的数据是一致的。

具体地说,如果选择了 CP(一致性和分区容忍性),那么就要考虑 ACID。如果选择了 AP(可用性和分区容忍性),那么就要考虑 BASE。如果选择了 CA (一致性和可用性),那么在网络发生分区的时候,将不能进行完整的操作。

相关推荐

计算机网络与分布式系统-构件与中间件&Web服务&云计算

计算机网络与分布式系统-网络工程&分布式系统

请添加图片描述

http://www.dtcms.com/a/572620.html

相关文章:

  • 用Python来学微积分32-定积分的可积性条件详解
  • 游戏远程操控性能横评:ToDesk、Parsec、UU远程深度对比
  • 【C/C++刷题集】二叉树算法题(二)
  • Django登录注册完整代码(图片、邮箱验证、加密)
  • 基于Optuna 贝叶斯优化的自动化XGBoost 超参数调优器
  • Qt开发初识
  • ReactNative 快速入门手册
  • 【C++:map和set的使用】C++ map/multimap完全指南:从红黑树原理入门到高频算法实战
  • GPT-OSS大模型Attention架构设计
  • 基于Mask R-CNN和TensorRT的高效草莓实例分割
  • RV1126 NO.38:OPENCV查找图形轮廓重要API讲解
  • 腾讯WAIC发布“1+3+N”AI全景图:混元3D世界模型开源,具身智能平台Tairos亮相
  • 各种开源闭源大模型,包括自己本地部署的一些8b 14b模型,支持函数调用(功能调用)function call吗?
  • Spring Boot 深度剖析:从虚拟线程到声明式 HTTP 客户端,再到云原生最优解
  • 创新的商城网站建设网站页面怎么设计
  • 2016年网站建设总结php网站开发工资多少
  • 线程3.1
  • Kubernetes基础概念和命令
  • 技术干货-MYSQL数据类型详解
  • 备份工具:rsync、Tar、Borg、Veeam 备份与恢复方案
  • 深入 Pinia 工作原理:响应式核心、持久化机制与缓存策略
  • 【前端】动态插入并渲染大量数据的方法-时间分片:使用requestAnimationFrame+DocumentFragment
  • 耶鲁大学Hello Robot研究解读:人类反馈策略的多样性与有效性
  • Unity摄像机鼠标右键旋转功能
  • Spring AI Alibaba文生图实战:从零开始编写AI图片生成Demo
  • 文本编辑器做网站国外设计师
  • 网站多久电子信息工程就业方向
  • 大连网站seo顾问企业开发网站公司
  • 南京网站设计搭建公司网站怎么做rss
  • 外包做网站谷歌seo优化