数据库集群技术有哪些

数据库集群技术有哪些,第1张

数据库集群技术
1)提高数据库处理速度的技术
目前有四种提高数据库处理速度的办法:
◆ 提高磁盘速度:这包括RAID和其他磁盘文件分段的处理。主要的思想是提高磁盘的并发度(多个物理磁盘存放同一个文件)。尽管实现方法各不相同,但是它们最后的目的都是提供一个逻辑数据库的存储映象。我们要评价的六个系统都能有效地利用这些技术。由于ICX已经有最大的磁盘冗余度,RAID 磁盘系统的设置应该侧重于速度,而不是数据冗余。这样磁盘利用的效益就会提高。
◆ 分散数据的存放:主要思想是利用多个物理服务器来存放数据集的不同部分(一个数据库表格分散到多个服务器或者每个服务器分管几个内容不同的表格)。这些办法不但可以扩展数据集(数据集的可扩性),而且使得不同的服务器进行并行计算成为可能。例如,对于ORACLE的RAC来讲,由于它是共享磁盘的体系结构,你只需要简单地增加一个服务器节点,RAC就能自动地将这节点加入到它的集群服务中去。RAC会自动地将数据分配到这节点上,并且会将接下来的数据库访问自动分布到合适的物理服务器上,而不用修改应用程序。对于UDB来讲,因为它是非共享磁盘的体系结构,因此就必须手工修改数据的分区,MSCS和ASE也是同样的情况。MySQL也需要手工分区,并且是这几种数据库中支持分区的自动化程度最低的,也就是说,应用程序需要自己负责数据库的分布式访问。不管数据存放是如何实现的,分布式存放数据的缺点是对数据库的可用性有负面影响。任何一台服务器的损坏都会影响整个系统的可用性。但是,这是迄今为止各大数据库厂商能提供的业界最好的数据库集群技术了。ICX是一种基于中间件的数据库集群技术,它对客户端和数据库服务器都是透明的。因此,ICX可以用来集群几个数据库集群(一个逻辑数据库),也可以用于集群几个物理数据库服务器(来增强一个分管关键数据的物理服务器)。
◆ 对称多处理器系统:此技术的思想是利用多处理机硬件技术来提高数据库的处理速度。但是,除了ICX,所有其它的数据库集群技术只支持单一的可修改的逻辑数据库。绝大部分的数据库事务处理是磁盘密集型的,纯计算负荷很小的,对称多处器技术在数据库上的应用的实际收益是很有限的。这也说明了为什么实际应用中最多只用了四个CPU的原因。所有的基于数据库引擎的集群都支持这个技术,ICX对SMP技术是中性的,因为它能把多个数据库服务器集合在一起构成一个集群,也能将多个现存的数据库集群集合在一起,构成集群的集群。
◆ 交易处理负载均衡:此技术的思想是在保持数据集内容同步的前提下,将只读 *** 作分布到多个独立的服务器上运行。因为绝大多数的数据库 *** 作是浏览和查询,,如果我们能拥有多个内容同步的数据库服务器,交易负载均衡就具有最大的潜力(可以远远大于上面叙述的最多达四个处理器的对称多处理器系统)来提高数据库的处理速度,同时会具有非常高的数据可用性(真正达到5个9,即99999%)。所有基于数据库引擎的集群系统都只支持一个逻辑数据库映象和一个逻辑或物理的备份。这个备份的主要目的是预防数据灾难。因此,备份里的数据只能通过复制机制来更新,应用程序是不能直接更新它的。利用备份数据进行交易负载均衡只适用于一些非常有限的应用,例如报表统计、数据挖掘以及其它非关键业务的应用。只有ICX能够做到同步复制多个数据库服务器从而达到在保持数据一直性前提下的真正的负载平衡。
上述所有技术在实际部署系统的时候可以混合使用以达到最佳效果。
2)提高数据库可用性的技术
根据物理法则,提高冗余度是提高数据库可用性的唯一途径。
提高数据库冗余度大致有四种方法:
◆ 硬件级的冗余:主要思想是让多处理机同时执行同样的任务用以屏蔽瞬时和永久的硬件错误。有两种具体的实现方法:构造特殊的冗余处理机和使用多个独立的数据库服务器。冗余处理机的造价昂贵,效益很低。实际应用日渐减少。基于数据库的集群系统都是用多个独立的数据库服务器来实现一个逻辑数据库,在任意瞬间,每台处理器运行的都是不同的任务。这种系统可以屏蔽单个或多个服务器的损坏,但是因为没有处理的冗余度,每次恢复的时间比较长,它们需要把被损坏的服务进程在不同的服务器上从新建立起来。ICX让多个独立的数据库服务器作同样的处理。发现处理器问题时的切换不需要重建进程的状态,所以故障屏蔽是极快的。
◆ 通讯链路级的冗余:冗余的通讯链路可以屏蔽瞬时和永久的通讯链路级的错误。基于数据库引擎的集群系统有两种结构:共享磁盘和独立磁盘。RAC, MSCS 和 MySQL CS可以认为是共享磁盘的集群系统。UDB和ASE 是独立磁盘的集群系统。共享磁盘集群系统对网络系统的要求很高,所以通讯的冗余度最小。独立磁盘集群系统可以把磁盘系统独立管理,通讯冗余度较高。 ICX的通讯链路级的冗余度最高,因为它使用的是多个独立的数据库服务器和独立的磁盘系统。 ICX也可以用于共享磁盘系统。 但是冗余度会相应降低。
◆ 软件级的冗余:由于现代 *** 作系统和数据库引擎的高度并发性,由竞争条件、死锁、以及时间相关引发的错误占据了非正常停机服务的绝大多数原因。采用多个冗余的运行数据库进程能屏蔽瞬时和永久的软件错误。基于数据库引擎的集群系统都用多个处理器来实现一个逻辑数据库,它们只能提供部分软件冗余,因为每一瞬间每个处理器执行的都是不同的任务。只有ICX可以提供最大程度的软件级冗余。
◆ 数据冗余:有两类冗余数据集。
被动更新数据集:所有目前的数据复制技术(同步或异步),例如磁盘镜像(EMC的TimeFinder系列)、数据库文件复制(如DoubleTake, Veritas and Legato)以及数据库厂商自带的数据库备份工具都只能产生被动复制数据集。通常,为了实现复制功能,需要消耗掉主服务器5%(异步)到30%(同步)的处理能力。被动更新的数据一般只用于灾难恢复被动更新数据集还有两个致命的问题:一旦主处理机故障造成数据损坏,被动更新的数据集也会被破坏。另外,和主动更新系统相比,被动更新系统对数据网络的带宽要求更高。这是因为它缺少交易的信息,很多数据复制是盲目的。
主动更新数据集:这种数据集需要一台(或多台)独立的备份数据库服务器来管理,由于这种数据集及时可用,它可以有多种用途,例如报表生成,数据挖掘,灾难恢复甚至低质量负载均衡。 同样地,这里也有同步和异步两种技术。
◆ 异步主动复制数据集:这种技术是先把事务处理交给主服务器来完成,然后这些事务处理再被串行地交给备份服务器以执行同样的 *** 作来保证数据的一致性。这种技术生成的数据集和主数据集有一个时间差,所以仅适用于灾难恢复、数据挖掘、报表统计以及有限的在线应用。所有的商用数据库都支持异步主动复制技术。这种办法的难度在于复制队列的管理上,这个队列是用来屏蔽主服务器和备份服务器之间的速度差异的。因为主服务器可以尽可能地利用所有软硬件的并发性来处理并发的事务,而备份服务器只能串行地复制,在高负荷事务处理的情况下,复制队列经常可能溢出。因为没有任何办法来控制事务处理请求的速度,在高负荷事务处理的情况下,复制队列只能经常性地重建。因为所有现代数据库系统都支持热备份和LOG SHIPPING。通过精心策划,应该可以实现不关闭主服务器而重建队列。ICX也支持异步主动复制 ICX的复制队列的重建是通过ICX的自动数据同步软件来完成的,所以不需要人工 *** 作。
◆ 同步主动复制数据集:这种技术要求所有的并发事务处理在所有的数据库服务器上同时完成。一个直接的好处就是没有了队列的管理问题,同时也可以通过负载均衡实现更高的性能和更高的可用性。这种技术也有两种完全不同的实现方法:完全串行化和动态串行化。完全串行化的事务处理来自于主数据库的事务处理引擎,RAC, UDB, MSCS (SQL Server 2005) 和 ASE是用完全串行化并结合两阶段提交协议来实现的,这种设计的目标就是为了获得一份可用于快速灾难恢复的数据集。这种系统有两个关键的问题。第一,两阶段提交协议是一种“ALL OR NOTHING”的协议。仔细研究两阶段提交协议后就能发现,为了获取这备份数据集,事务处理的可用性会降低一半。第二,完全串行化的做法又引进了主-从数据库服务器速度不匹配的问题。强制同步造成整个系统的速度被降低到完全串行化的水平。相反,ICX-UDS采用了动态串行复制引擎。这设计可以充分利用多个独立数据库的处理能力。ICX避免了使用两阶段提交协议,因此一个事务处理只有在集群中的所有服务器全都同时崩溃的情况下才会回滚。
为了防灾,必须使用远程网络。 所以我们在这里讨论远程数据复制的办法。这里大概有四种办法。
◆ 动态远程异步复制:这种办法是指主服务器通过远程网串行地把交易复制到备份服务器上。由于主-副之间的速度不匹配,队列管理的问题就很突出。 由于远程网的速度一般都比较慢,队列溢出的概率大大增加。所有的集群系统都支持这种复制办法,只是队列管理的办法不同而已。DM,FM和RAID都不能支持这种办法。RAID只能在局域网内工作。
◆ 动态远程同步复制:这种办法是指主服务器通过远程网并行地把交易复制备份服务器上。只有ICX 具有这种能力。
◆ 静态远程异步复制:这种办法是指通过远程网把数据串行地复制(不通过数据库服务器)到异地。DM和FM支持这种复制办法。因为串行处理和队列管理的关系,这对于处理量大的系统不适用。但是这种复制办法对应用是透明的,所有集群系统都可采用
◆ 静态远程同步复制:这种办法也是指通过远程网把数据串行地复制(不通过数据库服务器)到异地。不同的是,这里没有队列管理。取代队列管理的是发送端的一个新的协议:每次发送都要等接受端确认复制成功。否则回滚。DM和FM都支持这种复制办法。这种办法只能在短距离范围内工作, 大约5 英里光纤的样子。如果超出这个距离范围的话,显然事务处理回滚的概率就会很高。但是这种复制办法对应用是透明的,所有集群系统都可采用。
3)提高数据库安全和数据集可扩展的技术
在提高数据库安全性和数据集可扩性这两方面,可以创新的空间是很小的。数据库最常见的安全办法是口令保护,要么是分布式的,要么是集中式的。在数据库前面增加防火墙会增加额外的延迟,因此,尽管许多安全侵犯事件是来自于公司内部,但是数据库防火墙还是很少被采用。如果数据库集群技术是基于中间件技术实现的,就有可能在不增加额外延迟的情况下 ,在数据经过的路径上实现防火墙功能。ICX完全实现了这种思想。
数据库数据集的可扩性只能通过将数据分布到多个独立的物理服务器上来实现。为了弥补可用性的损失,ICX能被用来提高整个逻辑数据库或者部分重要服务器的处理速度,可用性和安全性。

多余的重复或_嗦内容(包括信息、语言、代码、结构、服务、软件、硬件等等)均称为冗余。
冗余有两层含义,第一层含义是指多余的不需要的部分,第二层含义是指人为增加地重复部分,其目的是用来对原本的单一部分进行备份,以达到增强其安全性的目的,这在信息通信系统当中有着较为广泛的应用。
冗余是一个汉语词汇,拼音是rǒngyú,英文是redundancyredundance。

不是sql
server会存在数据冗余,所有的数据库都会存在数据冗余,数据冗余大多是由于建库的时候表之间的关系没有充分考虑完全,这涉及到数据库中范式的概念(目前最高的是NF范式,不过一般的设计符合第三范式就好)。
冗余会导致:1、存储空间的浪费。2、数据交互和数据库访问执行效率降低。

建立一个一对多的表,ID唯一对多个名称。其它表用到学校的地方都用ID。
学校别名(学校ID,名称)
学校详细信息(ID,地址,建校时间,现任校长,学生人数,)

独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID;在台湾一般俗称:磁碟阵列)的基本思想就是把多个相对便宜的小磁盘组合起来,成为一个磁盘组, 使性能达到甚至超过一个价格昂贵、容量巨大的磁盘。根据选择的版本不同,RAID比单盘有以下一个或多个方面的益处:增强数据整合度,增强容错功能,增加吞吐量或容量。另外,磁盘组对于计算机来说, 看起来就像一个单独的磁盘或逻辑存储单元。分为RAID-1,RAID-10,RAID-3,RAID-30,RAID-5,RAID-50。
围绕RAID的基本想法就是把多个便宜的小磁盘组合到一起,成为一个磁盘组式的逻辑硬盘,因此, *** 作系统仅把它们看作一个单一的逻辑存储单元或磁盘。通过这种手段使逻辑硬盘的性能达到或超过一个容量巨大、价格昂贵的磁盘。RAID常被用在服务器计算机上,并且常使用完全相同的硬盘作为组合。由于硬盘价格的不断下降与和RAID功能更加有效地与主板整合,它也成为了高级最终用户的一个选择,特别是需要大量存储的工作,如:视频与音频制作。
利用如磁盘条纹化 (RAID 0) 和 磁盘镜像 (RAID 1) 的技巧,把数据分布到各个磁盘上,来达到亢余性、低延迟、读写的高带宽、硬盘毁坏后的最大可恢复性。
采用 RAID 的主要原因是:
1、增强了速度
2、扩容了存储能力(以及更多的便利)
3、可高效恢复磁盘
有两种可以实现RAID的方法:硬RAID和软RAID。
最初的RAID分成了不同的等级,每种等级都有其理论上的优缺点。这些年来,出现了对于RAID观念不同的应用。
参考>数据分析
数据库冗余数据分析

雨墨轩
原创
关注
0点赞·5681人阅读
这是之前的文章了,以前在百度放着,发现各种的不方便,今天就拉了过来,读者阅过的就…………无视吧:)
数据库设计时需要考虑的一个问题是:由于各种原因导致的数据冗余,也就是在数据库中同一个信息由多于一个的存储,其弊端显而易见,有以下几种:
1、 浪费存储资源;
2、 在维护数据库时,耗费更多的时间与空间,具体体现在插入,修改,删除等 *** 作;
但是,冗余数据的存在也有其有利的一面:
1、 保证数据安全;
2、 提高性能;
数据冗余具体体现在物理层面以及逻辑结构层面。
数据库物理层面的冗余指数据库存储的硬件资源的冗余,逻辑结构层面的冗余是指包括表、记录、字段、属性值以及索引、数据字典中的冗余,由于数据库逻辑实现的基础是各种硬件资源,所以物理层面的冗余影响数据库逻辑结构的设计,并且逻辑结构层面的冗余最终会体现在物理层面上。
在设计数据库时,冗余表和冗余记录很常见,像临时表(常用于复杂关系运算),一些可以通过其他表中数据通过函数运算得到的字段等。
属性冗余包括不同表属性以及同表属性冗余,不同表属性冗余常用于解决建立表与表之间的联系,同一表中的属性冗余应该尽力避免。
为了度量冗余度,规范化理论把关系分成以下几级:
第一范式:设 R 是一个关系模式,如果 R 中的每一个属性 A 的值域中的每个值都是不可分解的,则称 R 是属于第一范式的,记作 R ∈ 1NF。
第二范式:如果关系 R ∈ 1NF,并且 R 中每一个非主属性完全函数依赖于任一个候选码,则 R ∈ 2NF。
地三范式:如果关系 R ∈ 2NF,并且 R 中每一个非主属性对任何候选码都不存在传递函数依赖,则 R ∈ 3NF 。
随着时间发展,以后又提出了BCNF范式、4NF、5NF等。
最后给出关系数据库之父EFCodd提出的关系型数据库设计的十二个基本准则:
1、 信息准则:关系数据库中的所有信息都应在逻辑层上用表中的值显式的表示。
2、 保证访问准则:依于表名,主键和列名,保证能以逻辑方式访问数据库中的每个数据项。
3、 空值的系统化处理: RDBMS支持空值(不同于空的字符串或空白字符串,并且不为0)系统化的表示缺少的信息,且与数据类型无关。
4、 基于关系模型的联机目录:数据库的描述在逻辑上应该和一般数据采用同样的方式,使得授权用户可以使用查询一般数据所用的关系语言来查询数据库的描述信息。
5、 合理广泛的子语言准则:一个关系系统可以具有几种语言和多种终端使用方式(表格填空方式,命令方式等)。但是必须有一种语言,它的语句可以表示为具有严格语法规定的字符串,并能全面的支持以下功能:数据定义,视图定义,数据 *** 作,完整约束,授权,事物控制。
6、 视图更新准则:所有理论上可更新的视图也应该允许由系统更新。
7、 高阶的插入,更新和删除:把一个基本关系或导出关系作为一个 *** 作对象进行数据的检索以及插入,更新和删除。
8、 数据的物理独立性:无论数据库的数据在存储表示上或存取方法上做任何变化,应用程序和终端活动要都保持逻辑上的不变性。
9、 数据的逻辑独立性:当基本表中进行理论上信息不受损害的任何变化时,应用程序和终端和终端活动都要保持逻辑上的不变性。
10、 数据完整的独立性:关系数据库的完整性约束必须是用数据子语言定义并存贮在目录中的,而不是在应用程序中加以定义的。至少要支持以下两种约束:实体完整性:主键中的属性不允许为NULL ; 参照完整性:对于关系数据库中每个不同的非空的外码值,必须存在一个取自同一个域匹配的主键值。
11、 分布的独立性:一个RDBMS应该具有分布独立性。用户不必了解数据库是否是分布式的。(无论数据库是否有部分处于复杂多重环境中)
12、 无破坏准则:若RDBMS有某种低级语言,这一低级语言不能违背或绕过完整性准则以及高级关系语言表达的约束。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13082317.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-30
下一篇 2023-05-30

发表评论

登录后才能评论

评论列表(0条)

保存