《几种常用关系型数据库架构和实现原理.docx》由会员分享,可在线阅读,更多相关《几种常用关系型数据库架构和实现原理.docx(36页珍藏版)》请在课桌文档上搜索。
1、Oracle()Oracle架构OracleServer包括数据库(Database)和实例(Instance)两大部分,两者相互独立。数据库由数据文件、控制文件和日志文件组成,实例由内存池和后台进程组成,示意图如下:procPasswordDatabase一台OracleServer可创建多个Database,不同的DatabaSe之间相互独立。每个Database有属于自己的全套相关文件,如:密码文件,参数文件,数据文件,控制文件和日志文件Database由一系列物理文件(如二维表文件)组成,用户不能亘接读取Database中的内容,必须通过OraCIeinstance才能读取,一个Ins
2、tance只能连接一个Database,但是一个DatabaSe可以较多个InStanCe连接。各功能组件说明如下:1、用户连接进程用户连接进程是连接用户和OradeInstance的桥梁.包括:用户进程、服务进程和PGA用户进程UserProcess当一个DatabaseUser请求连接到OraCIeServer时QraCIeServer创建的UserProcess.ServerProcess服务进程用于处理DatabaseUSer和OradeSerVer之间的连接.程序全局区PGAPGA:由ServerProcess分配,用于当前UserSession的内存区,不同的用户拥有不同的PGA.
3、PGA包含了SerVerPr。CeSS数据和控制信息的内存区域.包括钱空间、Sessioninfo,私有SQ1.区.2、SGA(SystemGlobalArea)SGA与Oraele性能息息相关,在Instance启动时被分配,关闭时技释放.主要包含如下几种数据结构:数据库缓冲区(Databasebuffercache)oracle执行SQ1.语句的区域.当进行数据更新或数据直询时,用户执行的SQ1.语句不会直接对磁盘上的数据文件进行更改操作,而是首先将数据文件复制到数据南缓冲区缓存,再更改或套询缓存中的副本.此外,被烦繁访问的数据块会存在于数据库缓冲区缓存中.日志缓冲区(RedologBuf
4、fer)用于短期存储redolog.共享池(SharedPool)用于缓存所有频繁执行的代码和频繁访问的对演定义.共享池内有下列三种数据结构:库缓冲(librarycache):存惆最近执行的代码数据字典缓存(datadictionarycache):存储最近使用的对象定义PuSQ1.缓冲区(P1./SQ1.buffer):用于存储过程、函数、打包的过程、打包的函数、对象类型定义和触发器.大型池(1.argeBuffer)用于共享的服务器进程.JAVA池(JavaBuffer):只有当应用程序需要在数据库中运行java存储程序时,才需要java池.3、后台进程后台进程主要用于数据库管理,是Or
5、adeInstance和OradeDatabase的联系纽带,分为核心进程和非核心进程.D核心进程:数据库写入进程(DBWn)SerVerpr。CeSS连接Orade后通过数据库写进程(DBWn)将数据缓冲区中的“脏缓冲区”的数据块写入到数据文件;检音点进程(CKPDCheckpoint(CKPT)检查点进程主要用于更新数据文件头,更新控制文件和触发DBWn数据库写进程.进程监视进程(PMON)当后台进程执行失败后负责清理数据库缓存和闲置资源,是OraCIe的自动维护机制.系统监视进程(SMON)用途如下:当数据库实例崩溃时,用于数据库实例的自动恢豆.清除作废的排序临时段,回收整理碎片,合并空
6、闲空间,释放临时段,维护闪回的时间点.里做日志文件和日志写入进程用于记录数据库的改变和记录数据库被改变之前的原始状态,当满足以下条件时.激活1.GWR:提交指令日志缓冲区超过1/3每三秒每次DBWn执行之前2)非核心进程归档进程(ARCn)是可选的后台进程,当数据库处于Archive1.og模式时,自动归档redolog,并保存数据库的所有修改记录.SGA(SystemGlobalArea)和后台进程组成Instance.4、存储结构存储结构可从物理结构和逻辑结构两方面理解。1) 物理结构Database物理结构:是Database在操作系统中的文件集合,即:碳盘上的物理文件,主要由数据文件、
7、控制文件、重做日志文件、归档日志文件、参数文件、口令文件组成。数据文件、再做日志文件、控制文件、跟踪文件、警告文件属于数据库文件DataFiles数据文件是数据的存储仓座,数据被使用时才被调入内存中的.Redo1.ogFiles至做日志文件包含对数据库所做的更改操作记录,在Orade发生故障时能够恢豆数据。ControlFiles控制文件包含维护和验证数据库完整性的必要的信息,例如,控制文件用于识别数据文件和里做日志文件,一个数据库至少需要一个控制文件.跟踪文件(TraceFiles)在instance中运行的每一个后台进程都有一个跟踪文件(tracefile)与之相连.Tracefile记载
8、后台进程所遇到的重大事件的信息。警告日志(Alert1.og)是一种特殊的跟踪文件,每个数据库都有一个跟踪文件,同步记载数据库的消息和错误.参数文件、口令文件、归档文件属于非数据库文件.ParameterFile实例参数文件,当启动oracle实例时,SGA结构会根据此参数文件的设置内存,后台进程会据此启动.PasswordFile用户通过提交username/password来建立会话,Oracle根据存储在数据字典的用户定义对用户名和口令进行验证.归档文件是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。2) 逻辑结构表空间用于存储数据库对象的逻辑空间,是信息存储的最大
9、逻担单位,是一系列数据文件的集合.一个数据库可以由多个表空间组成,每个表空间包括多个段.是对象在数据库中占用的空间.段是区的集合区:是为数据一次性预留的一个较大的存储空间,区是块的集合块:ORAC1.E最基本的存储单位,在建立数据库的时候指定,井被映射到磁盘块。3) 逻辑空间到物理空间的映射Oracle6(/6*i逻Z柏*rj1结A构理物对软(&、视图等)数据段本/段1NttKIKJ索“IXfuJ数切块数据块N物理文件物JT.站构物理块(二)OracleRDBMS的运行过程1. User访问OradeServer之前提交一个请求(包含了db_name.password.instance_nam
10、e、username等信息);2. OracleSerVer接收到请求并通过PasswordFile的验证后,分配SGA内存池,启动后台进程同时创建并启动实例;3. 启动实例之后,UserProcess与ServerProcess建立Connect;4. Serverprocess和OradeInStanCe建立Sesscion,随后接收用户请求,执行相关或作;(三)写SQ1.语句的执行过程1 .用户执行SQ1.语句,Serverprocess收到后,将SQ1.语句送到Instance,再将SQ1.语句载入数据库缓冲区.2 .ServerProcess通知OracleDatabase将与SQ1
11、.语句相关的数据块副本加载到缓冲区中。3 .在数据库缓存区执行SQ1.语句,修改数据文件副本,形成脏缓冲区”4 .CKPT检查到“脏缓冲区”,调用DBWn数据库写进程,5 .在DBWn运行之前,先运行了1.GWR,将数据文件的原始状态和数据库的改变记录到Redo1.ogFiles6 .运行DBWn1将“脏缓冲区的内容写入到数据文件7 .同时CKPT修改控制文件和数据文件头8 .SMON回收不必要的空闲资源9 .返回结果给用户(四)OraCIe的高可用性架构1) OracleRAC(RealApplicationClusters)RAC是Orade数据厮的一个群集解决方案包括计算层和存储层.如下
12、图所示:计算层储层节点1节点nRedologUndo叁数文件11归档日志共享存储(SMON)jQBS.SGA:1.ogBuffer:全局日志缓冲区,缓存redo日志DataBUffer:全局数据页缓冲区,用于缓存表索引等数据SQ1.CaChe:全局执行计划缓冲区SortArea:全局排序/物化缓冲区DictionaryCache:全局数据字典(元数据)缓冲区1.argepool,大池,存放较大的SQ1.SessionPool,全局Session池,用于存放Session后台迸程1.OGW:日志写线程,负责将logbuffer中的日志写到磁盘.CKPT:负责将脏页(DirtyPage)刷到磁盘,
13、保证WA1.,并史新ControlFile.SMON:负责监测系统的状态,比如检测死锁,修豆异常的session.JOBS:应用定制的后台任务调度.1.OGR:日志复制,用于HA和GR.ARCH:用于日志文件归档.2 .存储结构数据以文件方式存储,主要有三种文件:DATAFI1.E,数据文件,用于存放各种数据,单库最多1024个数据文件,每个数据文件展大8T(undo除外,undo最大32G)1.OGFI1.E,日志文件,用于存放redo日志,可以击且使用,最少3组,每个redo日志文件一般建议5-20GCONTRO1.FI1.E,控制文件,用于数据库名、数据文件位置等信息,在数据库启动到mo
14、unt阶段时会检直.(二)GaUSSDBT关舞技术DataBuffer内存PagelPage2WdewPdXTabcw镜像页机制磁盘1.ogBufferInsertdeCheCkPoint刷盘RedO刷盘Redolog当进行事务提交时,必须先将RedoIog刷盘.脏页数据刷盘后,可用Redo日志可回收.如果数据未刷盘前掉电,加电后需要重做Redo,保持数据的一致性.脏页队列:脏页按时序组成链表,即脏页队列,CheckPoint按该队列顺序分组刷盘;CheCkPOint任务调度:CheCkPOint后台服务线程通过定时、脏页员、Redo1.og满,三个策略满足之一会触发刷盘操作;Redo任务调度
15、:Red。后台服务线程通过定时、Redobuffer事务提交满足之一时会触发Redo1.ogBuffer刷盘操作;镜像页机制:刷盘时间相对较长,为避免I/O阻塞,Checkpoint通过一个镜像页面缓存来完成刷盘.采用MVeC机制提高事务并发能力。(三)GaussDBT的高可用部署模式/11大可用)1*2(文保)主苗JBmt三*M“帆性磔攵求if况下,撼供游J用1、单机和主备部署模式,AM本era花式,针对JI试环境,或可IrU本校田IR2、分布式部署模式分布式出I:敷三50rd0分.N负曲*.观星大恻剜!务量场量分布WM可用:支捋带高可用部罟(四)典型的分布式部署架构各组件说明如下:OM(O
16、perationManager):运维管理模块.提供集群日常运维、配百管理的省理接口、工具.CM(ClusterManager):集群管理模块。管理和监控分布式系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行.CN(CoordinatorNode):协同调度节点.负责接收来自应用的访问请求,并向客户端返回执行结果;负责分解任务,并调度任务分片在各DN上并行执行.集群中,CN有多个且CN的角色是平等的.DN(Datanode):数据节点.负责存储业务数据,执行数据面询任务以及向CN返回执行结果。在集群中,DN有多个.每个DN支持设百多个存储备机.GTS(GlobalTimeServ
17、er):全局时钟服务器.用于强一致场景下,为各个节点提供逻辑时钟.五、主流关系型数据库特点分析数据您名称,优点“缺点-Oracle 可运行于所有主流平台上运行(包括windows),支持所有工业标准:, 采用进程模式,对多CPU利用率高.性能好Iy 支持非常复杂的杳询和所有类型的连接与合并;9 有基成本的SQ1.优化器,可以对SQ1.进行分析、取写和简化、并基于成本选界索引、确定对表的慢作等:*j 是一款优秀的商业软件,.安全性较高,使用广泛:口 计算能力强,可期于处理复条的业务逻辑对硬件的要求较高IjIisenSw成本高.*3PostgreSQl是一款开源、免费,同时又是强大的关系型数据管理
18、系统11附带有许多强大的、开源的第三方工具来辅助系统的设计、管理和使用:*j 采用进程模式,对多CPV利用率高,性能好1 计算诙力强,可用于处理女杂的业务逻辑.不适合警隶的读操作;国内社区活状度不如MySQ1.2MySQW 开源,提供的接口支持多种语,7连接攥作:*j 可在所有主流平台上运行(包括windows):一 采用多线程模式.可支持更多的连接;口 使用广泛,有大量的案例支持; 在开源数据库社区中.活妖度域高.安全机制较差,不建汉用于安全性要求很高的系统I-对存储过程和触发器支持不然良好,不建议业务逻辑在数据座上实现的系统;1 只支持部分SQ1.语法,不支持递归查询、分析函数等:, 1.l被OraCIe收购.3国产数据庵自主研发,符合监管自主可控要求;Q具有较强的计算能力,数据库可用于处理业务逻目前主要蒙容OraCIeA产品推出市场时间不长.产品的成熟度有待M场验证;应用案例较少7