仓酷云

标题: MSSQL网站制作之异构数据库复制手艺的研讨与完成(上) [打印本页]

作者: 小魔女    时间: 2015-1-16 22:31
标题: MSSQL网站制作之异构数据库复制手艺的研讨与完成(上)
线上或者测试环境经常出现的误操作总是让DBA同学那么闹心。数据|数据库
异构数据库复制手艺的研讨与完成
















1弁言
收集手艺的飞速开展和普遍使用,出格是因特网的提高,年夜小气便了企业的跨地区开展。同时,为了顺应不休增加的贸易合作情况,很多企业经由过程不休重组和分离谋划来进步效力,构成了分离、异构的情况特性。同时这些构造在地区上固然分离,但在办理上绝对会合,常常既要有各部门的部分把持和分离办理,也要有全部构造的全局把持和高条理的协同办理。这类协同办理请求各部门之间的信息既能天真交换和共享,又能一致办理和利用。

以后,散布式数据库手艺已成熟,而且因盘算机本钱的下落和通讯用度的下降而失掉了普遍的使用。但是,散布式数据库体系既要供应部分自治又要完成全局把持,带来了很年夜的应战性。为此,引进数据库复制机制,数据库复制依附于散布式数据库手艺但又能够供应散布式数据库所不具有的功效,出格是因为在存取数据时有可选的数据正本,因而能够改善体系的功能和回护使用的可用性。经由过程利用数据库的复制手艺能够完成会合和自治相分离的把持机制,并可年夜年夜进步全部散布式数据库体系的牢靠性和呼应速率。

现有的异构数据库复制计划上风凸起,好比在运转功能和全体性方面都有着分明的上风,并且产商年夜多供应了一些帮助工具能够帮忙用户更好地完成复制义务等;但同时成绩也存在:数据库产商供应的复制计划依附于产商本人的DBMS中心干系严密的完成手艺,纷歧定合用于别的DBMS,也就是说复制计划不是完整异构的。

为办理完整异构成绩,本文提出一种新的复制手艺:“基于SQL重现法”复制手艺,“基于SQL重现法”复制手艺的中心头脑就是为源数据库中的复制工具(源表或视图)创立变动轨迹表,当源表产生变更时,变动轨迹表中纪录了变动情形,再经由过程过后从变动轨迹表中猎取SQL语句,将源表中的数据复制到方针表中。这类办法能够取得复制工具的净变更,运转和传输效力很高,并且易于办理,填补懂得决复制抵触的不敷。这类办法合适于除同步复制以外的各类复制情势。

本文将从事情道理、计划头脑、实行历程和手艺特性等几个方面先容“基于SQL重现法”复制手艺。

数据库复制就是经由过程将源数据库中指定的数据复制到方针数据库中,以坚持源数据库与方针数据库中指定命据的同步。它应当由哪些部分构成,关于这一点今朝还没有很一致的意见。

本文如许形貌数据库复制的流程:在源数据库取得复制工具的变更情形,然后把它们从源数据库传送到方针数据库,并修正那边的正本。

依据以上形貌本文把全部复制流程分为两个功效绝对自力的处置步骤:变更捕捉(ChangeCapture)与数据分发(DataDistribute),把它们称为构成数据库复制的两个次要环节。

本文前面的内容都将环绕这两个环节举行论述。
2事情道理
(1)变更捕捉

变更捕捉是捕捉源表的变更序列的历程。“基于SQL重现法”数据复制手艺捕捉变更的中心头脑是为多个相干源表(极度的情形多是一张源表或全部数据库的一切表,在这里称为一个“源集”)创立一个变动轨迹表,个中包括产生变动的序列号、变动工夫和复原后的SQL语句等信息,当源表产生变更时,就立即在变动轨迹表中纪录下源表的变更情形,此时变动轨迹表相称于基于日记法中的“日记”,变动工夫相称于基于工夫戳法中的“工夫戳”,可是因为这个历程不是由数据库引擎自己完成的,因此必要依托触发器来完成。也就是说,必要为每一个源表创建触发器,当源表产生修正、拔出和删除操纵时,触发器被启动,经由过程挪用存储历程,将源表产生的操纵复原为SQL语句,向该源表对应的变动轨迹表中拔出变动工夫和复原后的SQL语句,事情道理以下图所示。





“基于SQL重现的数据复制”变更捕捉事情道理



(2)数据分发

数据分发是指将源表的变更信息实行到响应的方针表中的历程。针对“基于SQL重现法”复制手艺捕捉变更的办法,数据分发是指依据变动轨迹表中的序号,按按次从变动轨迹表中猎取对应的SQL语句,然后经由过程实行程序在方针服务器上实行此SQL语句,将源表产生的变更使用于方针表,实行乐成后删除变动轨迹表中对应序号的纪录。数据分发事情道理如所示。



“基于SQL重现的数据复制”数据分发事情道理
其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
作者: 精灵巫婆    时间: 2015-1-19 16:13
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
作者: 飘飘悠悠    时间: 2015-1-25 19:39
很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。
作者: 若相依    时间: 2015-2-3 17:49
语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!
作者: 爱飞    时间: 2015-2-9 04:19
我们学到了什么?思考问题的时候从表的角度来思考问
作者: 莫相离    时间: 2015-2-26 21:45
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
作者: 分手快乐    时间: 2015-3-8 18:14
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
作者: 老尸    时间: 2015-3-16 10:12
分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。
作者: 变相怪杰    时间: 2015-3-22 22:11
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
作者: 灵魂腐蚀    时间: 2015-3-22 22:11
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.




欢迎光临 仓酷云 (http://www.ckuyun.com/) Powered by Discuz! X3.2