当前位置: 首页 > 操作系统&&数据库, 数据库 > 正文

C++自制Redis 数据库 (十八)【重构】数据库学习(四)

前言

这是关系型数据库相关学习的最后一篇小结了,怎么说呢,关系型数据库其实还是一个很大的模块,我学习关系型数据的目的是了解关系型数据库的构成是怎样的,它有什么特性,因为时间关系我也不可能面面俱到。毕竟时间有限,我这次也没有看太多的关于关系型数据库的书和资料,这里不对关系型数据库置评。《深入浅出mysql开发》这是网易的一个团队写的关于mysql的书,听说不错,有志向研究关系型数据库,或数据库的小伙伴一定看看。

最近在补离散数学,范式相关的东西稍后更新。

数据库的安全与体系结构

安全的定义:

计算机领域的安全的定义应当是两方面的,一方面是硬件安全另一方面是软件安全。

数据库的安全模型:

data_safe (1)

安全级别:

美国国防部层制定了一个安全等级。

D   :最低级别包括一切不属于这个标准的所有安全级别的系统,一般这个级别都没有什么安全保障。

C1 : 只提供非常初级的自主安全保护。能实现对用户和数据分离,进行自主控制。保护限制用户权限的传播。

C2 : 安全产品的最低档次,提供受保护的存取操作,深化具体化C1 的行为,展开注册功能,这个级别的产品一般不注重突出“安全”。

B1: 提供标记安全保护,以安全的可信的产品,对系统的数据加以标记,对标记的主体和客体实施强制存取控制,审计等安全机制。

B2: 结构化保护,建立形式化的安全策略模型,并对系统内的所有主体和客体实施DAC MAC

B3:安全域,该级的TBC必须满足访问监控器的要求,审计跟踪能力更强,提供系统恢复过程。

A1: 验证设计,提供B3级保护的同时给出系统的形式化设计说明和验证以确信各安全保护真正实现。

近年来我国也制定了一些关于安全的标准

第一级:  用户自主保护级

第二级:系统审计保护级

第三级:安全标记级

第四级: 结构化保护级

第五级: 访问验证保护级

数据库的安全性保护

用户标识与鉴别

1.身份验证      2.口令认证     3.随机数运算认证

存取权限控制

1.定义用户权限    2.检查存取权限

自主存取控制方法:DAC方法

自主存取控制方法(DAC)方法中,用户对与不同的数据对象有不同的存取权限,不同的用户对同一数据库的存取权限也可以不同,用户可以将自己拥有的权限转授给其它人等。

强制存取控制方法:MAC 方法

强制存取控制方法(MAC) 方法中,是指系统为保证更高程度的安全性,强制存取控制本质上具有分层的特点,对与任意一个对象,只有具体合法许可证的用户才可以存取。

视图机制

视图机制是把保密数据对无权存取这些数据的用户隐藏起来,达到控制访问的目的。

审计

审计功能是把用户对数据库的所有操作自动记录下来放进审计日志中。如发现异常DBA 可以快速发现问题的症结。

数据加密

有很多中加密方法,MD5等

数据库的并发控制

 事务及其定义

事务:用户对与一个数据库的一个操作就可以叫作一个事务,事务都是原子性的,要么做要么都不做,是一个不可分割的工作单位。

事务特性:ACID 属性,原子性,一直性,隔离性,持续性。很好理解这里不再解释。

并发带来的问题

1.丢失更新

当两个或多个事务读写了同一块数据后,最终结果是未知的。

2.不可重复读

当一个事务读取某个数据后,另一个事务执行了对该数据的更新,当前一事务再次读取该数据时,得到的数据与前一次不同。

3.读:“脏数据”

当一个事务修改某个数据后,另一个事务对该数据进行了读取操作,由于前一种原因一事务撤销了对该数据的修改,则后边的读事务与数据库的数据不一致,称为脏数据。

活锁与死锁:

活锁:多个事务并发执行,有的事务会很难被调度上,使某一个事务总处在等待状态的情况被称为活锁。任务队列可以很好的解决这个问题。

死锁:死锁概念已经很熟了这里不多说。

死锁检测:

1.超时法判断

2.等待图法

死锁处理:

1.在循环等待的事务中,选择一个事务强制结束它,释放锁

2.会滚选择的事务,释放其获得的锁及其它资源

3.将释放的锁让给等待它的事务

 

 

 

 

本文固定链接: http://zmrlinux.com/2016/03/04/c%e8%87%aa%e5%88%b6redis-%e6%95%b0%e6%8d%ae%e5%ba%93-%ef%bc%88%e5%8d%81%e4%ba%94%ef%bc%89%e3%80%90%e9%87%8d%e6%9e%84%e3%80%91%e6%95%b0%e6%8d%ae%e5%ba%93%e5%ad%a6%e4%b9%a0%ef%bc%88%e5%9b%9b%ef%bc%89/ | Kernel & Me

该日志由 root 于2016年03月04日发表在 操作系统&&数据库, 数据库 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: C++自制Redis 数据库 (十八)【重构】数据库学习(四) | Kernel & Me