1、对于一个分布式服务,不可能同时满足一致性(Consistency,节点间数据一致性)、可用性(Avaliability,满足一定性能)和分区容忍性(Partition Tolerance,节点间通讯失效时仍提供服务)这三个需求,最多只能同时满足其中两个。(关系型CA、非关系型AP)(2) 最终一致性:过程松,结果紧,最终结果必须保持一致性。(3) BASE模型:基本可用、软状态/柔性事务、最终一致性(牺牲高一致性,获得可用性和可靠性)优点:1)灵活的数据模型2)弹性扩展3)经济性(高并发读写;对海量数据的高效率读写;高扩展性和高可用性)缺点:1)数据完整性不够2)缺乏商业支持(NoSQL很难实
2、现数据的完整性。缺乏强有力的技术支持。开源数据库从出现到用户接受需要一个漫长的过程。关系型数据库在设计时更能够体现实际。)产品:Cassandra,Dynamo,BigTable,MongoDB现状、前景:NoSQL现在有很多成熟的产品被广泛应用在社交网站和电子商务上;NoSQL在某些应用上绝对是趋势,但是就目前来看肯定还有点问题,毕竟走向成熟总有过程。【一致性】强一致性:A 先写入新值,系统保证后续A 、B的读操作获取最新值。最终一致性:A 先写入新值,在一定时间内系统不能保证后续A 、B 的读内系统不能保证后续A 、B 的读操作获取最新值,但是它们最终能获取到最新值。【信息集成】研究的主要
3、集成对象是传统的异构数据库系统,可分为:1)数据仓库方法:(什么是数据仓库)数据仓库就是面向主题的、集成的、稳定的、时变的数据集合,用来支持经营管理的决策制定过程。困难:缺乏组织、效率低。要求:面向主题、集成、稳定以及随时间变化。2)包装器/中介器方法:是目前比较流行的建立信息集成系统的方法。方法的核心是中介模式。【数据库技术研究热点及适用场合】(1) 信息集成:研究的主要集成对象是传统的异构数据库系统(2) 数据流管理:研究连续的、近似无限的、时变的、有序的且快速流动的数据元素组成的无限序列,测量和监控复杂的动态的现象, 如大气情况等(3) 微小型数据库:一个只需很小的内存来支持的数据库系统
4、内核(4) DBMS的自适应管理:数据库的最终目标是所有的调整均由DBMS自动完成(5) 移动数据库:移动数据库是能够支持移动式计算环境的数据库,其数据在物理上分散而逻辑上集中【NoSQL优点】(1) 数据单元间一般没有模型的限制(2) 允许弹性扩展(3) 采用分布式和集群技术,通过廉价的服务器组合实现系统整体的高性能Ch2.【RDBMS 的层次结构】(1) 应用层:处理各种各样的数据库应用,是RDBMS与用户/应用程序的界面层。(2) 语言翻译处理层:处理数据库语言,如SQL;向上提供的数据接口是元组的集合。(3) 数据存取层:处理单个元组,把集合操作化为单记录操作并执行。(4) 数据存储层
5、:处理数据页和系统缓冲区【语言处理层】任务:把用户在各种方式下提交给RDBMS的数据库语句转换成对RDBMS内层可执行的基本存取模块的调用序列。DDL、DCL语句处理过程:1)把它翻译成内部表示 2)存储在系统的数据字典中【数据库查询一般过程】(1) 首先是对数据操作语言DML语句进行查询分析,包括语法,词法和语义分析,看语法是否符合规范,是否存在(2) 进行查询检查,通过数字字典查看要操作的表定义和项是否存在,是否具有操作该命令的权限等,进行相应的视图转换;(3) 查询分析,对查询语句进行查询优化,包括代数优化和存取路径选择优化(4) 生成相应的查询计划,并执行之。【DML语句处理过程】转换
6、成一串可执行的存取动作,称为一个逐步绑定(bind) 的过程。绑定时间:(1) 编程时:已淘汰(2) 执行时:解释方法,系统效率高,数据独立性差(3) 执行前:预编译方法,数据独立性高,执行效率差【解释方法】特点:执行前,DML语句都以原始字符串的形式保存;执行时,解释程序完成束缚过程,然后予以执行数据独立性好、灵活、应变性好效率比较低适用:交互式SQL【预编译方法】用户提交DML语句后,运行前对它进行翻译处理;保存产生的执行代码;运行时取出执行代码加以执行效率比较高应用规划失效【重编译方法】某些成分改变而使某些程序失效时,再对其执行一次编译。将受影响的编译结果置“无效”标志,在其被执行时才进
7、行自动重编译。既拥有了编译时进行束缚所带来的高效率,又具备了执行时束缚带来的数据独立性【数据存取层】数据存取层介于语言处理层和数据存储层之间,它向上提供单元组接口,向下则以系统缓冲区的存储器接口作为实现基础。(1) 提供一次一个元组的查找插入删除修改提供次个元组的查找、插入、删除、修改等基本操作(2) 提供元组查找所循的存取路径以及对存取路径提供元组查找所循的存取路径以及对存取路径的维护操作,如对索引记录的查找、插入、删除修改若索引是采用B+树则应提供B+ 除、修改。若索引是采用B+树,则应提供B+树的建立、查找、删除、修改等功能(3) 对记录和存取路径的封锁解锁操作对记录和存取路径的封锁、解
8、锁操作日志文件的登记和读取操作(4) 其他辅助操作,如扫描、合并/排序,其操作对象有关系、有序表、索引等【数据存储层】功能-存储管理:缓冲区管理、内外存交换、外存管理【缓冲区】作用:提供DBMS的设备独立性,使得外存设备的变更不会对DBMS造成影响;通过异步读写,包括预先读和延迟写来提高数据存取效率组成:内存、许虚存大小管理:一定要适当,太大会占据内存空间,太小需要频繁缺页掉页,造成“抖动”,影响效率查找算法:顺序查找算法、折半查找算法、hash查找算法淘汰算法:LRU最近最少使用算法、FIFO先进先出算法、时钟算法、系统控制法、混合算法【数据库物理组织】数据组织优劣标准:存储效率高,节省存储
9、空间;存取效率高,速度快,代价小存储数据:数据描述、数据本身、数据之间的联系、存取路径数据字典(DD)的组织:1)数据量比较小2)使用频繁数据及数据联系的组织:1)网状、层次数据库:邻接法和链接法2)关系数据库:表存取路径的组织:数据之间的联系2)关系数据库:B树类文件结构和Hash文件结构【Oracle体系结构】组成部分:(1) 存储结构:由逻辑存储、物理存储组成(2) 内存结构:由SGA、PGA组成(3) 进程结构:由用户进程和Oracle进程组成 Oracle数据库服务器由实例、数据库组成。实例包括:1)内存结构 2)进程结构。数据库(存储部分)包括:1)控制文件2)数据文件3)重做日志
10、文件 实例只能打开一个数据库,一个数据库可以有多个实例【启动数据库三个步骤】(1) 创建并启动与数据库对应的实例。(2) 为实例加载数据库。(3) 将数据库置为打开状态。 启动数据库必须先用管理员权限连接【存储结构逻辑结构】逻辑结构包括:模式对象、表空间段区数据块表空间是最大逻辑单位,块是最小逻辑单位。【数据块】对应一个或多个操作系统物理块,由块头(标题、表目录、行目录)和存储区(空闲区、行数据区)组成。 管理方式:(1) 自动段空间管理(2) 手工管理:PCTFREE:可用空间小于该值时,不允许插入。PCTUSED: 可用空间小于PCTUSED,当已用空间小于PCTUSED之后才能恢复插入。
11、【表空间】 一个表空间只属于一个数据库 每个表空间由一个或多个数据文件组成 每个数据库至少有一个表空间系统表空间。创建表的条件:1)用户在表空间有配额2)用户有创建表的权限【模式对象】包括表、视图、索引、序列、同义词。序列:自动产生唯一的数字,是一个共享对象,主要用于创建主键值。同义词:是一个对象的另一个名字,用于简化对对象的访问。【物理存储结构】(1) 控制文件每个orcale数据库都有一个控制文件,是一个较小的二进制文件,用于描述数据库结构。包括名称和建立时间、数据文件和重做日志文件的名称及其位置、日志记录序列码。(2) 数据文件物理存储Oracle数据库数据的文件,特点:1) 每一个数据
12、文件只与一个数据库相联系2) 一个表空间可包含一个或多个数据文件3) 一个数据文件只能属于一个表空间(3) 重做日志文件记录用户对数据库的所进行的修改操作, 当数据库中的数据遭到破坏时, 可以用这些日志修复数据库。由重做条目构成,主要功能是记录对数据的操作,在恢复操作中恢复重做日志信息的过程叫做前滚。每个数据库至少需要两个重做日志文件,Oracle 以循环方式向重做日志文件写入【内存结构】由两种内存区域组成:系统全局区(SGA):在实例启动时分配是实例基本组件可由所有服务进程和后台进程共享程序全局区(PGA):在服务进程启动时分配,此区域是每个服务进程和后台进程所私有的;即每个进程都有一个属于
13、自己的PGA【SGA】由几个内存结构组成: 共享池:库缓存用于存储最近使用的SQL 语句;数据字典缓存用于存储最近使用数据定义。 数据高速缓存用于存储从数据文件读出的数据块副本。通过两个列表管理:待写列表(Write list): 记录脏缓冲区最近最少使用列表(LRU list) : 记录可用缓冲区、锁定缓冲区以及还没被转入待写列表的脏缓冲区(包含MRU和LRU端,执行全表扫描时,数据加入到LRU而非MRU,因为数据只是暂时需要的) 重做日志缓存SGA内一块被循环使用的缓冲区,用来保存还没有写到磁盘的redo 日志内容。主要用于恢复,以重做条目(redo entry)的形式进行存储。 大型池(
14、可选)供一次性大量的内存分配使用。主要用于Ol备份与恢复操作I/O 服务进程及并行执行缓存所需的存储空间.减少这些操作给共享池带来的负担。 Java池(可选)供各会话内运行的Java 代码及JVM内的数据使用的【进程结构】可以被分为两大类:用户进程:当用户运行一个应用程序或Oracle 工具时启动。用户通过用户进程与Oracle 实例建立的连接,用户进程通过服务进程和DB server通信。Oracle进程:包括1) 服务进程:处理连接到实例的用户进程提交的请求2) 后台进程:用于实现为多用户提供服务且保证系统性能.【Oracle工作方式】(1) 在运行Oracle的计算机上启动一个实例(主机
15、或数据库服务器)。(2) 运行应用程序的计算机(本地计算机或客户端工作站)中启动用户进程。客户端应用程序使用与所在网络环境相匹配的Oracle网络服务驱动与服务器建立连接。(3) 数据库服务器也运行与网络环境相匹配的Oracle网络服务驱动。当服务器监听到应用程序的请求后就建立专用服务器进程为对应的用户进程提供服务。(4) 用户执行SQL 语句、提交事务(5) 服务进程收到用户提交的语句后,先在共享池中查找是否存在与此语句相同的共享SQL 区。如果存在,服务进程就检查用户是否有访问所请求数据的权限,满足权限要求的话,就使用已有的享SQL 区来处理SQL 语句。如共享SQL 区不存在服务进程要为
16、用户提交的SQL 语句创建新的共享SQL区,用来解析、处理此语句。(6) 服务进程从数据文件(逻辑上看就是数据表)或SGA中获得所需的数据。(7) 服务进程修改SGA 中的数据。由于事务已经提交,LGWR 进程立即在重做日志文件中记录此事务。而DBWn进程则在适当的时机将修改过的数据块写入磁盘。(8) 如事务成功,服务进程通过网络通知应用程序。如不成功,则向应用程序提交错误信息。(9) 在整个过程中,还有一些未提到的后台进程在运行,她们对整个过程进行监控,在需要时参与进来。此外数据库服务器还要管理其它用户的事务,防止请求相同数据的事务之间产生竞争Ch3.【数据库安全性要求】(1) 完整性:防止
17、对信息进行不恰当的修改(2) 可用性:合法权限用户或程序可以使用这些数据库对象(3) 机密性:防止未授权的数据泄露【数据库安全性机制】(1) 自主安全性机制:用于向用户授予特权,包括以指定的方式访问指定的数据文件、记录、或字段的能力。(2) 强制安全性机制:用于对多及安全性进行控制,现将用户和数据分为多个安全类别,随后执行组织中适当的安全性策略。【数据库安全性措施】(1) 访问控制:明确说明谁可以访问及怎么样访问;(2) 推理控制:防止通过统计数据推导出机密性数据(统计数据库的安全性);(3) 流控制:防止信息向未授权的用户流通;(4) 加密控制:保护放在不安全介质中的数据;【数据库审计】记录
18、应用到数据库的所有更新操作和实施每个更新操作的饿特定用户,一边找出非法的或是未经过授权的操作并确定执行该操作的账号;【访问控制策略】(1) DAC自主存取控制:仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记(yuan),可能在在数据的无意泄露。解决方法是对系统控制下的所有主客体实施强制存取控制策略。(2) MAC强制存取控制规则:当主体权限小于客体,主体不可读取客体;当主体权限大于客体,主体不能写客体。(3) RBAC基于角色的访问控制:角色是权限的集合、可以为一组具有相同权限的用户创建一个角色、简化授权的过程【访问矩阵】对象 -拥有数据的实体主体 -能够访问和处理对象的实体
19、对象的属主账号为第一次创建关系的用户账号,拥有该关系上所有权限。【视图机制】假设需要限制对元组子集的访问, 创建包含这些子集的视图,然后授予对视图的操作权(可限制属性子集、或者where筛选等)【权限管理】回收权限:REVOKE传播权限:带有GRANT OPTION权限,则被授予者可以在授予者不知情的情况下传播权限限定传播:1)水平传播,参数i,被授予者只能把权限授予给i个用户 2)垂直传播,深度0表明不带GRANT,深度j表明被授予者只能以带有GRANT的方式传播给j个用户【多级安全性的强制访问控制】Class(S)Class(O)时,S可读O(简单安全性质)Class(S)Class(O)
20、时,S可写O(*性质)安全级别:绝密(TS)、机密(S)、秘密(C)、无分类(U)每个元组的主码称为显码,在多重实例中,允许对个元组对应一个显码。【推理控制】统计数据库安全性:允许访问综合性数据而禁止访问单个记录的详细机密性信息查询控制规则:(1) 任何查询至少要涉及N(N足够大)个以上的记(2) 任意两个查询的相交数据项不能超过M(3) 任一用户的查询次数不能超过1+(N-2)/M条目控制(1) 抑制: 包含敏感数据的查询被拒绝.(2) 隐藏: 提供的答案是接近的但不是准确的.【流控制】防止信息向未授权的用户流通。仅当程序安全等级与内存段一样高时,才允许程序访问;仅当程序安全等级与内存段一样
21、低时,才允许写入。【数据加密】使用一些编码算法可以对数据进行编码,分为:对称加密:加密和解密使用同一密钥(密钥需同时传输,可能被窃听)不对称加密:分为公钥和密钥。甲用乙的公钥加密数据,乙收到后用自己的私钥解密。【oracle的数据库安全】(1) 控制对数据的访问(授权)(2) 限于合法用户访问(认证)(3) 保证责任明确(审计)(4) 保护数据库中的关键数据(加密)【用户管理】新创建的用户通过管理员授权才能获得数据库的使用权限。创建用户:修改: ALTER USER user_name(参数与创建一致)删除:DROP USER user_nameCASCADE(CASECADE删除该用户模式中
22、的所有对象)【概要文件】概要文件(profile )是密码管理和资源限制的集合,多个用户共享一个概要文件。其中资源参数仅用于限制资源的使用,密码参数用于强制措施与密码有关的安全策略。创建:指派:更改:DROP PROFILE test CASCADE (CASCADE使删除完后,过去指派test的用户现在自动指派给默认概要文件)【权限】分为系统权限和对象权限。系统权限一般授予给数据库管理员和应用程序开发人员。系统权限授予:GRANT system_privilege to PUBLIC|role_name|uer_name.nWITH ADMIN OPTIONWITH ADMIN规定被授予权限
23、的用户可以传递权限。系统权限收回: REVOKE system_privilege FROM .(一样)不具有联级收回功能,注意全面性对象权限授予:对象权限收回:【角色】预定义一系列的角色,从而简化权限管理。 CREATE ROLE role_name (+用户参数。空权限) ALTER ROLE role_name (+用户参数)给角色授予权限:GRANTE privilege.b TO role_name取消权限:ROVOKE privilege.b FROM role_name角色授予给用户: GRANT role_namen TO 参数收回角色: REVOKE role_name.n
24、FROM 参数启用/禁用角色: SET ROLE 参数【细粒度访问控制】 有两种主要机制:(1) 应用环境(行级安全):使用虚拟专用数据库(PVD)控制度数据库对象的行级访问。(使用查询重写来限制用户访问表和视图的行)(2) 细粒度访问控制策略。 把安全控制细化到数据库的行级或列级,实现细粒度访问控制需要(1) 设置应用环境的程序包(2) 应用环境(3) 访问应用环境的程序包(4) 一组安全策略【应用环境】帮助创建利用用户的某些信息的安全策略。允许定义一组应用属性( 会话环境变量) ,可用来控制应用对数据库的访问。【列级PVD】在DBMS RLS ADD POLICY过程中添加SEC_RELE
25、VANT_COLS 参数指出与安全相关的列【什么是VPD,实现条件】虚拟专用数据库 (VPD) 提供了角色和视图无法提供的行级访问控制。将一个或多个安全策略与表或视图关联后,就可以实现虚拟专用数据库。【审计数据库】分为细粒度审计和标准审计。其中标准审计分为:(1) 语句级审计:指定任意类型对象上所有的活动的审计。(2) 权限级审计:跟踪源于系统权限的活动。(3) 对象级审计:监控特定表上的诸如UPDATE语句等活动。【标准审计】(1) 启用审计:指定AUDIT_TRAIL参数(2) 默认审计:默认记录数据库启动关闭、作为SYSOPER/SYSDBA链接(3) 打开审计:指定特定活动,如AUDI
26、T SELECT ON emp(4) 关闭审计:AUDIT换为NO AUDIT【细粒度审计】(查看某个用户是否执行特定的操作)启用审计:查看审计:DBA FGA AUDIT TRAIL视图显示审计跟踪,查看方法:透明的数据加密:加密和解密自动进行,其步骤:(1) 创建一个Oracle钱夹(2) 打开该Oracle钱夹(3) 生成主密钥,用来加密列密钥(4) 明确指出如何加密所有想要加密的列Ch4.【系统调优的最终目标】(1) 使应用运行的更快;(2) 缩短查询、事务的响应时间;(3) 提高事务的整体吞吐量【关系数据库查询优化】分为4个阶段:查询分析、查询检查、查询优化、查询执行【查询优化】在众
27、多的查询方案中选择出最高效率的执行计划的一种处理过程,包括:(1) 代数优化:通过对关系代数表达式的等价变化来提高查询效率,代数优化仅改变查询语句中操作的次序和组合,不涉及底层的存取路径;(2) 物理优化:通过选择高效合理的操作算法或是存取路径,求得优化的查询计划。【查询优化方法选择的依据】(1) 基于规则:根据某些规则从几个备选的访问路径中进行选择。所有的访问路径都被分配了一个排序值,具有最低排序值的路径被选中(2) 基于代价:考虑了数据库对象的最新的统计数据,对计划做出一个较为准确的估计总是要比老的基于规则的方法执行得要快。【选择操作】(1) 简单的全表扫描方法(2) 索引(或散列)扫描方法【连接方法】(1) 嵌套循环连接:一个表作为外表,另一个表作为内表。对外表的每一个元组,检索内表中的每一个元组(2) 排序归并连接:对两张表按链接属性排序,取第一张表第一个连接属性,依次扫描第二张表
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1