数据库大型应用解决方案.docx
《数据库大型应用解决方案.docx》由会员分享,可在线阅读,更多相关《数据库大型应用解决方案.docx(23页珍藏版)》请在冰点文库上搜索。
数据库大型应用解决方案
数据库大型应用解决方案
数据库大型应用解决方案1
一、海量数据性能优化2
1.负载均衡技术2
1.1.实现原理2
1.2.实现多据库数据同步2
1.3.优缺点3
2.数据库的读写分离4
2.1.实现原理:
4
2.2.实现方法5
2.3.优缺点5
3.数据库/数据表 拆分(分布式)6
3.1.实现原理7
3.2.实现方法7
1.顺序拆分7
2.hash取模分8
3.在认证库中保存数据库配置8
二、商业智能8
Microsoft商业智能技术8
1.统一数据存储和访问10
1.1.1.合并所有的数据,用于分析和生成报表11
1.1.1.1.以你想要的方式来使用你所有的数据12
1.1.1.2.集成所有的企业数据源12
1.1.2.数据仓库性能12
1.1.2.1.优化ETL过程13
1.1.2.2.有效的管理硬件资源13
1.1.2.3.优化数据库性能14
2.管理复杂的商业智能解决方案14
2.1.开发人员生产力14
2.2.易管理14
2.3.企业可扩展性14
2.3.1.可扩展的分析14
2.3.2.可扩展的生成报表15
2.4.扩展你的商业智能解决方案的范围17
2.4.1.通过熟悉的工具扩展商业洞察力17
2.4.2.使终端用户可以灵活的制作报表17
3.特点及优势18
一、海量数据性能优化
1.负载均衡技术
负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作、共同负载、均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服务器。
1.1.实现原理
实现数据库的负载均衡技术,首先要有一个可以控制连接数据库的控制端。
在这里,它截断了数据库和程序的直接连接,由所有的程序来访问这个中间层,然后再由中间层来访问数据库。
这样,我们就可以具体控制访问某个数据库了,然后还可以根据数据库的当前负载采取有效的均衡策略,来调整每次连接到哪个数据库。
1.2.实现多据库数据同步
对于负载均衡,最重要的就是所有服务器的数据都是实时同步的。
这是一个集群所必需的,因为,如果数不据实时、不同步,那么用户从一台服务器读出的数据,就有别于从另一台服务器读出的数据,这是不能允许的。
所以必须实现数据库的数据同步。
这样,在查询的时候就可以有多个资源,实现均衡。
比较常用的方法是MoebiusforSQLServer集群,MoebiusforSQLServer集群采用将核心程序驻留在每个机器的数据库中的办法,这个核心程序称为MoebiusforSQLServer中间件,主要作用是监测数据库内数据的变化并将变化的数据同步到其他数据库中。
数据同步完成后客户端才会得到响应,同步过程是并发完成的,所以同步到多个数据库和同步到一个数据库的时间基本相等;另外同步的过程是在事务的环境下完成的,保证了多份数据在任何时刻数据的一致性。
正因为Moebius中间件宿主在数据库中的创新,让中间件不但能知道数据的变化,而且知道引起数据变化的SQL语句,根据SQL语句的类型智能的采取不同的数据同步的策略以保证数据同步成本的最小化。
数据条数很少,数据内容也不大,则直接同步数据
数据条数很少,但是里面包含大数据类型,比如文本,二进制数据等,则先对数据进行压缩然后再同步,从而减少网络带宽的占用和传输所用的时间。
数据条数很多,此时中间件会拿到造成数据变化的SQL语句,然后对SQL语句进行解析,分析其执行计划和执行成本,并选择是同步数据还是同步SQL语句到其他的数据库中。
此种情况应用在对表结构进行调整或者批量更改数据的时候非常有用。
1.3.优缺点
优点
1)扩展性强:
当系统要更高数据库处理速度时,只要简单地增加数据库服务器就可以得到扩展。
2)可维护性:
当某节点发生故障时,系统会自动检测故障并转移故障节点的应用,保证数据库的持续工作。
3)安全性:
因为数据会同步的多台服务器上,可以实现数据集的冗余,通过多份数据来保证安全性。
另外它成功地将数据库放到了内网之中,更好地保护了数据库的安全性。
4)易用性:
对应用来说完全透明,集群暴露出来的就是一个IP
缺点
1)不能够按照Web服务器的处理能力分配负载。
2)负载均衡器(控制端)故障,会导致整个数据库系统瘫痪。
2.数据库的读写分离
2.1.实现原理:
读写分离简单的说是把对数据库读和写的操作分开对应不同的数据库服务器,这样能有效地减轻数据库压力,也能减轻io压力。
主数据库提供写操作,从数据库提供读操作,其实在很多系统中,主要是读的操作。
当主数据库进行写操作时,数据要同步到从的数据库,这样才能有效保证数据库完整性。
(ebay的读写比率是260:
1,ebay的读写分离)
1.
2.
2.1.
2.2.实现方法
(微软数据库分发)
在MSSqlserver中可以使用发布定义的方式实现数据库复制,实现读写分离,复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。
使用复制技术,用户可以将一份数据发布到多台服务器上。
复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。
SQLSERVER复制技术类型有三种,分别是:
快照复制、事务复制、合并复制。
SQLSERVER主要采用出版物、订阅的方式来处理复制。
源数据所在的服务器是出版服务器,负责发表数据。
出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器,分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些改变分发给订阅服务器。
2.3.优缺点
1)数据的实时性差:
数据不是实时同步到自读服务器上的,当数据写入主服务器后,要在下次同步后才能查询到。
2)数据量大时同步效率差:
单表数据量过大时插入和更新因索引,磁盘IO等问题,性能会变的很差。
3)同时连接多个(至少两个)数据库:
至少要连接到两个数据数据库,实际的读写操作是在程序代码中完成的,容易引起混乱
4)读具有高性能高可靠性和可伸缩:
只读服务器,因为没有写操作,会大大减轻磁盘IO等性能问题,大大提高效率;只读服务器可以采用负载均衡,主数据库发布到多个只读服务器上实现读操作的可伸缩性。
1.
2.
3.数据库/数据表 拆分(分布式)
通过某种特定的条件,将存放在同一个数据库中的数据分散存放到多个数据库上,实现分布存储,通过路由规则路由访问特定的数据库,这样一来每次访问面对的就不是单台服务器了,而是N台服务器,这样就可以降低单台机器的负载压力。
提示:
sqlserver2005版本之后,可以友好的支持“表分区”。
垂直(纵向)拆分:
是指按功能模块拆分,比如分为订单库、商品库、用户库...这种方式多个数据库之间的表结构不同。
水平(横向)拆分:
将同一个表的数据进行分块保存到不同的数据库中,这些数据库中的表结构完全相同。
(纵向拆分)
(横向拆分)
3.1.实现原理
使用垂直拆分,主要要看应用类型是否合适这种拆分方式,如系统可以分为,订单系统,商品管理系统,用户管理系统业务系统比较明的,垂直拆分能很好的起到分散数据库压力的作用。
业务模块不明晰,耦合(表关联)度比较高的系统不适合使用这种拆分方式。
但是垂直拆分方式并不能彻底解决所有压力问题,例如有一个5000w的订单表,操作起来订单库的压力仍然很大,如我们需要在这个表中增加(insert)一条新的数据,insert完毕后,数据库会针对这张表重新建立索引,5000w行数据建立索引的系统开销还是不容忽视的,反过来,假如我们将这个表分成100个table呢,从table_001一直到table_100,5000w行数据平均下来,每个子表里边就只有50万行数据,这时候我们向一张只有50w行数据的table中insert数据后建立索引的时间就会呈数量级的下降,极大了提高了DB的运行时效率,提高了DB的并发量,这种拆分就是横向拆分
3.2.实现方法
垂直拆分,拆分方式实现起来比较简单,根据表名访问不同的数据库就可以了。
横向拆分的规则很多,这里总结前人的几点,
1.顺序拆分
如可以按订单的日前按年份才分,2003年的放在db1中,2004年的db2,以此类推。
当然也可以按主键标准拆分。
优点:
可部分迁移
缺点:
数据分布不均,可能2003年的订单有100W,2008年的有500W。
2.hash取模分
对user_id进行hash(或者如果user_id是数值型的话直接使用user_id的值也可),然后用一个特定的数字,比如应用中需要将一个数据库切分成4个数据库的话,我们就用4这个数字对user_id的hash值进行取模运算,也就是user_id%4,这样的话每次运算就有四种可能:
结果为1的时候对应DB1;结果为2的时候对应DB2;结果为3的时候对应DB3;结果为0的时候对应DB4,这样一来就非常均匀的将数据分配到4个DB中。
优点:
数据分布均匀
缺点:
数据迁移的时候麻烦;不能按照机器性能分摊数据。
3.在认证库中保存数据库配置
就是建立一个DB,这个DB单独保存user_id到DB的映射关系,每次访问数据库的时候都要先查询一次这个数据库,以得到具体的DB信息,然后才能进行我们需要的查询操作。
优点:
灵活性强,一对一关系
缺点:
每次查询之前都要多一次查询,会造成一定的性能损失。
二、商业智能
在竞争日益激烈的市场中,商业人士逐渐认识到他们只有预先看出市场的趋势和机遇,并快速的对新的客户需求作出响应才能获得成功。
此外,雇员需要对商业活动和花费进行排列优先次序,以此来确保达到最有效的使用可用的资源和作出有效的商业决策。
为了满足这些挑战,雇员需要获得对商业的全面的洞察力,以便他们可以作出睿智的决策,并为促进商业成功作出贡献。
公司想将这个洞察嵌入每天的商业活动中,以便所有雇员可以明确的或是暗含的使用对所有的企业数据的完整和稳定的版本所作出的分析结果。
Microsoft商业智能技术
Microsoft提供了一个全面的商业智能(BI),它为数据仓储、分析和生成报表提供了一个扩展的数据平台,并提供了终端用户可以用来访问和分析商业信息的强大的和直觉工具。
Microsoft商业智能“提供给终端”的核心是MicrosoftSQLServer2008,它是一个全面的数据服务平台,使你能够:
●统一企业中所有数据的存储和访问。
●建立和管理复杂的商业智能解决方案。
·SQLServer2008形成了所提供的这个强大的商业智能的基础,它的特有技术如下面所示:
微软商业智能市场优势
1.统一数据存储和访问
大多数公司拥有多个商业系统,每一个都有它自己专用的数据存储。
尽管你可以经常从单独的应用中生成报表,并对它们包含的数据进行分析,但是你只能通过合并企业内的异构数据来创建一个集中的用于生成报表和分析的商业数据源。
1.1.合并所有的数据,用于分析和生成报表
SQLServer2008支持两个常见的方法来统一商业数据用于分析和生成报表:
数据仓库。
一个只针对企业级数据的存储,它的数据从企业中的不同数据源的商业数据而来,并与其同步。
这个方法的主要优点是你可以设计数据仓库用于最佳的分析和报表性能,而对作为数据来源的商业应用的性能没有影响。
这个方法的另外一个优点是你可以清理和合并多个数据源而来的数据到一个单独的与真实数据保持一致的版本中。
数据源抽象。
SQLServer2008分析服务使得可以创建数据源视图以提供一个针对一个或多个数据源的抽象层。
然后你可以将这个数据源视图作为分析服务、集成服务和报表服务的单独的数据源。
有了这个数据源视图,当进行分析和生成一个报表的时候,会从后台的数据源系统获取数据。
这个方法的主要优点是它使得可以对你的商业应用中的数据作实时分析。
此外,数据源视图通过它增加的抽象层可以用来创建合适的名称来替代较长的或含义模糊的表名。
图1显示了这些方法。
有了SQLServer2008,你可以或者使用这些方法,或者两者结合使用。
图1
1.1.1.以你想要的方式来使用你所有的数据
无论你采取哪个方法来统一你的商业数据,SQLServer2008建立在过去对关系数据和非关系数据的强大的支持,提供了使开发人员和管理员可以有效的存储和管理非结构化数据的数据类型,例如文档和图片,所以你可以以最适合你的业务的格式来存储、管理和分析数据。
SQLServer2008增强了对XML数据存储和一个FILESTREAM数据类型的支持,FILESTREAM数据类型使大型的二进制数据可以存储在文件系统中,并且保持事务一致性仍作为数据库完整的一部分。
此外,删除了对用户定义的数据类型规模的限制,使得可以超过在之前的SQLServer版本中的8KB的限制。
对空间和位置数据类型的支持使得可以存储和分析符合行业标准的地理数据。
1.1.2.集成所有的企业数据源
SQLServer2008数据源视图使得可以集成数据和对从异构的企业级数据存储获得的数据进行访问,例如SQLServer、Oracle、DB2和Teradata。
这些视图还提供了一个企业范围的联机分析处理存储,而且在SQLServer集成服务中对不同数据源的支持广度意味着你可以从现有的所有种类的商业应用中提取数据。
因此,统一你所有的企业数据源的数据是很容易实现的,不论你是否想建立一个抽象层来通过数据源查看或使用ETL处理来与一个只用于分析和报表的数据仓库同步。
此外,通过对Webservices和Microsoft.NET框架的支持,SQLServer2008支持与多个平台、应用和编程语言的协同工作能力,所以你可以通过集成和连接到你的异构的数据源来最大化你对新的和现有的系统的投资回报。
支持已有的和新出现的开放标准,例如HTTP、XML、SOAP、XQuery和XSD,进一步推动了你的扩展了的企业系统的通信
1.2.数据仓库性能
SQLServer2008提供了一个全面的和可扩展的数据仓库平台,使得你的企业可以更快的将数据整合到数据仓库中,这样你就可以扩展和管理不断增长的数据量和用户数量。
1.2.1.优化ETL过程
数据仓库一般通过ETL过程从数据源系统获得的数据进行组装和更新。
在数据最初加载到数据仓库中之后,会定期的刷新源系统的新的和更改的数据,以确保数据仓库的数据是最新的。
SQLServer集成服务提供了一个全面的平台,你可以使用它从不同的数据源系统提取数据,做所要求的任何对数据或它的结构和格式的转换,然后加载转换的数据到数据仓库中。
执行查找来匹配从数据源系统获得的记录到在数据仓库中的已有的记录是ETL过程中的一个常见操作,在SQLServer2008中查找的性能被显著的提高了,以致于这些操作扩展到大型表。
为了帮助跟踪数据变化和确保数据仓库一致性,SQLServer2008推出了变化数据捕获(ChangeDataCapture,CDC)功能,将更新记录在变更表中,这使得很容易标识被更改的行和确定更改的细节以及更改的原因。
1.2.2.有效的管理硬件资源
通过对数据压缩的支持,SQLServer2008使你可以更有效地存储你的数据和降低存储成本。
另外,压缩明显的提高了大型的具有输入/输出限制的工作负载的性能。
SQLServer2008还为备份压缩提供了本地支持即开即用。
此外,VARDECIMAL数据类型和SQLServer2008中的新的稀疏列通过降低大型表(这些表如在数据仓库所常见的,主要为数字或空值)所需要的空间数量来帮助你从你的磁盘存储资源获得最好的效率。
除了在数据存储方面的效率,SQLServer2008还支持映射内存的地址窗口扩展(AddressWindowingExtensions,AWE)的动态分配,它支持WindowsServer2003、数据中心版(DatacenterEdition)的64GB内存、和64位版本的2TB内存,来支持大型数据仓库环境。
SQLServer200还推出了资源监控器,它使得管理员可以为不同的工作负载定义资源限制和优先权,以便使并发工作负载可以提供稳定的执行,并使得可以预先的管理资源竞争问题。
1.2.3.优化数据库性能
SQLServer2008包括高性能的关系数据库引擎,它使得你可以建立高效的数据仓库解决方案。
创新(例如用于starschema(星型模式)和工具的查询优化帮助你调整索引和数据结构)使得SQLServer为经常查询的数据仓库自动选择,同时在SQLServer2008中推出了MERGETransact-SQL语句,开发人员可以更有效地处理普通的数据仓库场景,例如检查一行是否存在然后执行插入或更新。
此外,对GROUPBY条件语句进行了扩展,使得用户可以在一个查询中定义多个组。
GroupingSet生成了一个单独的结果集,这与对不同分组的行执行UNIONALL操作是等价的,它使得聚合查询和生成报表更加容易和快速。
SQLServer2008支持分区表,帮助你优化大型表的性能和管理,有了对分区表并行的新的支持,你可以通过使用分区表显著的优化一个数据仓库。
2.管理复杂的商业智能解决方案
随着公司对复杂分析日益增长的需求,对能够快速的建立和提交有效的商业智能解决方案,并能降低你的商业智能基础设施的管理费用的要求,成为了一个主要要考虑的事项。
SQLServer2008包含创新的工具,这些工具提高了开发人员的效率和管理能力,它使得可以更快的从新的分析和生成报表能力获得收益,同时使得管理费用降低了。
2.1.开发人员生产力
SQLServer2008简化了商业智能解决方案的开发过程。
商业智能开发人员受益于易使用的功能和工具,这些功能和工具增加了控制和自动进行例行操作、耗时的任务,并可以使用SQLServer2008的高效的特性更快速的创建高效的分析和报表解决方案;这样你的公司很快就可以利用它们。
2.2.易管理
通过创新(例如统一的管理工具)加强了自我调整的能力,而一个强大的管理编程模型,SQLServer2008扩展了SQLServer易使用的领先地位和提高了数据库管理员们(DBA)的效率。
这些增强使得数据库管理员们专注于高价值的任务,像数据库架构,同时花费较少的时间作例行维护、配置和调整。
2.3.企业可扩展性
另一个与成功的生成复杂的商业智能解决方案相关的关键因素要求甚至在最大扩展下的持续性的开发人员效率和管理能力。
而且,基础设施必须提供与性能相关的可扩展能力,这在SQLServer2008中做了大量的投入,这些投入关注于确保甚至在商业智能执行的最大扩展下的这个企业级的持续性
2.3.1.可扩展的分析
联机分析处理(OLAP)的前提是对准确的信息的及时访问,这使得终端用户可以迅速地回答最复杂的问题。
因此,要做到很好的提供更快的查询时间和数据刷新速度是任何MicrosoftSQLServer分析服务版本的开发过程中所优先考虑的,它也促使产生了SQLServer2008分析服务版本。
SQLServer2008包括使你能够采用增强的能力做更广的分析的分析服务,包括复杂的计算和聚合。
分析服务通过以下方面提供了企业级的性能:
一个灵活的缓存模型。
有了分析服务,你可以控制数据和聚合怎样缓存来优化查询性能,同时将缓存和它的来源的数据存储之间的反应时间维持在一个可接受的级别。
声明属性关系。
在一个分析服务维度中,你可以明确的声明在一个层级中的属性的关系。
这使得当处理一个立方体或维度时,分析服务能够预先生成聚合,这改进了运行时查询性能。
块计算。
块计算删除了不必要的聚合计算(例如,当要聚合的值为NULL的时候),并提供了一个在分析立方体性能方面的显著提高,这使得用户可以增加他们的层级深度和计算的复杂度。
回写到MOLAP。
分析服务2008删除了当执行回写时对查询ROLAP分区的要求,这使得其极大的提高了性能。
扩展分析服务。
分析服务数据库的一个单独的只读拷贝通过一个虚拟的IP地址可以在多个分析服务器间共享。
这为分析服务解决方案提供了一个高度可扩展的开发选项。
执行计划持久性。
SQLServer2008提供了指定查询计划的功能,以便最大程度的扩展正确性的可能,查询计划不会受服务器重启、服务器更新合产品部署影响。
这确保了对SQLServer数据查询的稳定的最佳性能。
2.3.2.可扩展的生成报表
对于大多数公司来说,在正确的时间给正确的用户以正确的信息是一个很大的挑战。
SQLServer2008提供了一个高性能的报表引擎用于处理和格式化报表,同时还提供了一套工具用于创建、管理和查看报表。
一个可扩展的架构和开放的接口使得可以很容易的在不同的IT环境中集成报表解决方案。
你可以从多个不同的数据源生成报表,包括SQLServer、DB2和Oracle,而不需要先建立一个集中的数据仓库。
你可以通过报表服务提供的简单的部署和配置能力在公司内外发送报表。
这使得用户可以轻松的创建和分享任何规模或复杂度的报表。
你还可以通过网络来部署报表,将其轻松的发送给客户和供应商。
报表服务提供了对控制服务器活动的支持和能力,这些活动包括内存管理、基础设施合并和通过一个集中的存储和一个用于所有的配置设置的API的简单的配置
2.4.扩展你的商业智能解决方案的范围
过去,商业智能解决方案只被少数商业分析师使用。
现在,越来越多的公司认识到他们可以从扩展提供给所有雇员商业智能时非常有用的洞察力和将这些洞察力内置到日常的业务操作中获得收益。
SQLServer2008使你可以通过一个可扩展的、开放的和可内置的架构,创建一个可以扩展到数千名用户,并且给所有人一个丰富的用户体验的商业智能解决方案,这个架构与MicrosoftOffice协作使用是最佳的。
2.4.1.通过熟悉的工具扩展商业洞察力
MicrosoftOfficeMicrosoftOffice成为了普遍使用的高效的套件,全球范围的公司里的大多数信息工作人员使用它来执行他们日常的工作。
通过与Office的紧密集成,SQLServer2008使你能够提供给你的雇员以他们所需要的关键的商业信息。
2007MicrosoftOffice和MicrosoftOfficePerformancePointServer2007的紧密集成使得公司可以通过使用结合使用很好的技术来节省时间和金钱。
通过采用熟悉的已经安装在每个桌上计算机的工具给所有人提供商业洞察力,这个集成还使得可以更快的获得扩大终端用户方面的投资回报。
2.4.2.使终端用户可以灵活的制作报表
SQLServer2008提供了一些报表改进,使你可以快速且轻松的生成你公司需要的报表,并且是以你想要的格式和能充分显示它们所包含的数据的显示形式。
1)使用ReportBuilder创建即席报表
在SQLServer2008中ReportBuilder被极大的增强了,使得用户可以轻松的建立任何结构的即席报表。
这个直觉设计接口使得非开发人员可以轻松的创建商业文档,例如基于报表数据的订单、发货和合同。
2)包括丰富的格式化数据
丰