数据库技术

2022-09-15 From 程序之心 By 丁仪

数据库安全

安全措施

用户标识和鉴定:最外层的安全保护措施,可以使用用户帐户、口令及随机数检验等方式。

存取控制:对用户进行授权,包括操作类型(如查找、插入、删除、修改等动作)和数据对象(主要是数据范围)的权限。

密码存储和传输:对远程终端信息用密码传输。

视图的保护:对视图进行授权。

审计:使用一个专用文件或数据库,自动将用户对数据库的所有操作记录下来。

数据故障

故障关系 故障原因 解决方法
事务本身的可预期故障
本身逻辑
在程序中预先设置Rollback语句
事务本身的不可预期故障
算术溢出、违反存储保护
由DBMS的恢复子系统通过日志,撤消事务对数据库的修改,回退到事务初始状态
系统故障
系统停止运转
通常使用检查点法
介质故障
外存被破坏
一般使用日志重做业务

数据备份

静态转储:即冷备份,指在转储期间不允许对数据库进行任何存取、修改操作;优点是非常快速的备份方法、容易归档(直接物理复制操作);缺点是只能提供到某一时间点上的恢复,不能做其他工作,不能按表或按用户恢复。

动态转储:即热备份,在转储期间允许对数据库进行存取、修改操作,因此,转储和用户事务可并发执行;优点是可在表空间或数据库文件级备份,数据库仍可使用,可达到秒级恢复;缺点是不能出错,否则后果严重,若热备份不成功,所得结果几乎全部无效。

完全备份:备份所有数据。

差量备份:仅备份上一次完全备份之后变化的数据。

增量备份:备份上一次备份之后变化的数据。

日志文件:在事务处理过程中,DBMS把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作写入日志文件。一旦发生故障,DBMS的恢复子系统利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。

备份毕竟是有时间节点的,不是实时的,例如:上一次备份到这次备份之间数据库出现了故障,则这期间的数据无法恢复,因此,引入日志文件,可以实时记录针对数据库的任何操作,保证数据库可以实时恢复。

分布式数据库

局部数据库位于不同的物理位置,使用一个全局DBMS将所有局部数据库联网管理,这就是分布式数据库。

分片模式

水平分片:将表中水平的记录分别存放在不同的地方。

垂直分片:将表中的垂直的列值分别存放在不同的地方。

分布透明性

分片透明性:用户或应用程序不需要知道逻辑上访问的表具体是如何分块存储的。

位置透明性:应用程序不关心数据存储物理位置的改变。

逻辑透明性:用户或应用程序无需知道局部使用的是哪种数据模型。

复制透明性:用户或应用程序不关心复制的数据从何而来。

数据仓库与数据挖掘

数据仓库是一种特殊的数据库,也是按数据库形式存储数据的,但是目的不同:数据库经过长时间的运行,里面的数据会保存的越来越多,就会影响系统运行效率,对于某些程序而言,很久之前的数据并非必要的,因此,可以删除掉以减少数据,增加效率,考虑到删除这些数据比较可惜,因此,一般都将这些数据从数据库中提取出来保存到另外一个数据库中,称为数据仓库。

数据仓库四大特点:数据仓库是一个面向主题的、集成的、非易失的、且随时间变化的数据集合,用于支持管理决策。

面向主题:按照一定的主题域进行组织的。

集成的:数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。

相对稳定的:数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。

反映历史变化:数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。

数据仓库的结构通常包含四个层次,如下图所示:

1.数据源:是数据仓库系统的基础,是整个系统的数据源泉。

2.数据的存储与管理:是整个数据仓库系统的核心。

3.0LAP(联机分析处理)服务器:对分析需要的数据进行有效集成,按多维模型组织,以便进行多角度、多层次的分析,并发现趋势。

4.前端工具:主要包括各种报表工具、查询工具、数据分析工具、数据挖掘工具以及各种基于数据仓库或数据集市的应用开发工具。

数据挖掘的分析方法

关联分析:关联分析主要用于发现不同事件之间的关联性,即一个事件发生的同时,另一个事件也经常发生。

序列分析:序列分析主要用于发现一定时间间隔内接连发生的事件,这些事件构成一个序列,发现的序列应该具有普遍意义。

分类分析:分类分析通过分析具有类别的样本特点,得到决定样本属于各种类别的规则或方法。分类分析时首先为每个记录赋予一个标记(一组具有不同特征的类别),即按标记分类记录,然后检查这些标定的记录,描述出这些记录的特征。

聚类分析:聚类分析是根据“物以类聚”的原理,将本身没有类别的样本聚集成不同的组,并且对每个这样的组进行描述的过程。

商业智能 BI

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

数据预处理是整合企业原始数据的第一步,它包括数据的抽取(Extraction)、转换(Transformation)和加载(Load)三个过程(ETL过程);

建立数据仓库则是处理海量数据的基础;

数据分析是体现系统智能的关键,一般采用联机分析处理(OLAP)和数据挖掘两大技术。联机分析处理不仅进行数据汇总/聚集,同时还提供切片、切块、下钻、上卷和旋转等数据分析功能,用户可以方便地对海量数据进行多维分析。数据挖掘的目标则是挖掘数据背后隐藏的知识,通过关联分析、聚类和分类等方法建立分析模型,预测企业未来发展趋势和将要面临的问题;

在海量数据和分析手段增多的情况下,数据展现则主要保障系统分析结果的可视化。

反规范化技术

规范化操作可以防止插入异常、更新、删除异常和数据冗余,一般是通过模式分解,将表拆分,来达到这个目的。但是表拆分后,解决了上述异常,却不利于查询,每次查询时,可能都要关联很多表,严重降低了查询效率,因此,有时候需要使用反规范化技术来提高查询效率。

技术手段包括:增加派生性冗余列、增加冗余列、重新组表、分割表。

  1. 增加冗余列:在多个表中保留相同的列,通过增加数据冗余减少或避免查询时的连接操作。
  2. 增加派生列:在表中增加可以由本表或其它表中数据计算生成的列,减少查询时的连接操作并避免计算或使用集合函数。
  3. 重新组表:如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。
  4. 水平分割表:根据一列或多列数据的值,把数据放到多个独立的表中,主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用。
  5. 垂直分割表:对表进行分割,将主键与部分列放到一个表中,主键与其它列放到另一个表中,在查询时减少I/O次数。

可能带来的问题:数据的重复存储,浪费了磁盘空间;可能出现数据的完整性问题,为了保障数据的一致性,增加了数据维护的复杂性,会降低修改速度。

大数据

特点:大量化、多样化、价值密度低、快速化。

大数据和传统数据的比较如下:

比较维度
传统数据
大数据
数据量
GB或TB级
PB级或以上
数据分析需求
现有数据的分析与检测
深度分析(关联分析、回归分析)
硬件平台
高端服务器
集群平台

要处理大数据,一般使用集成平台,称为大数据处理系统,其特征为:高度可扩展性、高性能、高度容错、支持异构环境、较短的分析延迟、易用且开放的接口、较低成本、向下兼容性。

SQL语言

SQL语言中的语法关键字,不区分大小写:

创建表 create table;

指定主键 primary key();

指定外键 foreign key();

修改表 alter table;

删除表 drop table;

索引index,视图view;

数据库查询 select.….from.….where;

分组查询 group by,分组时要注意select后的列名要适应分组,having为分组查

询附加条件:select sno,avg(score) from student group by sno having(avg(score)>60)

更名运算as:select sno as“学号”from t1

字符串匹配like,%匹配多个字符串,_匹配任意一个字符串:select*from t1

where sname like 'a_'

数据库插入insert into.….values():insert into t1 values('a',66)

数据库删除delete from.….where:delete t1 where sno=4

数据库修改update.….set.….where:update t1 set sname='aa' where sno=3

排序order by,默认为升序,降序要加关键字DESC

DISTINCT:过滤重复的选项,只保留一条记录。

UNION:出现在两个SQL语句之间,将两个SQL语句的查询结果取或运算,即值存在于第一句或第二句都会被选出。

INTERSECT:对两个SQL语句的查询结果做与运算,即值同时存在于两个语句才被选出。

MIN、AVG、MAX:分组查询时的聚合函数

SQL语法原理

SELECT之后的为要查询显示的属性列名;FROM后面是要查询的表名;WHERE后面是查询条件;涉及到平均数、最大值、求和等运算,必须要分组,group by后面是分组的属性列名,分组的条件使用Having关键字,后面跟条件。

在SQL语句中,条件判断时数字无需打引号,字符串要打单引号。

本文来源:程序之心,转载请注明出处!

君子曰:学不可以已。
《深入理解计算机系统(原书第3版)》

主要介绍了计算机系统的基本概念,包括最底层的内存中的数据表示、流水线指令的构成、虚拟存储器、编译系统、动态加载库,以及用户应用等。书中提供了大量实际操作,可以帮助读者更好地理解程序执行的方式,改进程序的执行效率。此书以程序员的视角全面讲解了计算机系统,深入浅出地介绍了处理器、编译器、操作系统和网络环境,是这一领域的权威之作。

发表感想

© 2016 - 2024 chengxuzhixin.com All Rights Reserved.

浙ICP备2021034854号-1    浙公网安备 33011002016107号