分布式数据库设计方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.大型分布式数据库解决方案
企业数据库的数据量很大时候,即使服务器在没有任何压力的情况下,某些复杂的查询操作都会非常缓慢,影响最终用户的体验;当数据量很大的时候,对数据库的装载与导出,备份与恢复,结构的调整,索引的调整等都会让数据库停止服务或者高负荷运转很长时间,影响数据库的可用性和易管理性。
分区表技术
让用户能够把数据分散存放到不同的物理磁盘中,提高这些磁盘的并行处理能力,达到优化查询性能的目的。但是分区表只能把数据分散到同一机器的不同磁盘中,也就是还是依赖于一个机器的硬件资源,不能从根本上解决问题。
分布式分区视图
分布式分区视图允许用户将大型表中的数据分散到不同机器的数据库上,用户不需要知道直接访问哪个基础表而是通过视图访问数据,在开发上有一定的透明性。但是并没有简化分区数据集的管理、设计。用户使用分区视图时,必须单独创建、管理每个基础表(在其中定义视图的表),而且必须单独为每个表管理数据完整性约束,管理工作变得非常复杂。而且还有一些限制,比如不能使用自增列,不能有大数据对象。对于全局查询并不是并行计算,有时还不如不分区的响应快。
库表散列
在开发基于库表散列的数据库架构,经过数次数据库升级,最终采用按照用户进行的库表散列,但是这些都是基于自己业务逻辑进行的,没有一个通用的实现。客户在实际应用中要投入很大的研发成本,面临很大的风险。
面对海量数据库在高并发的应用环境下,仅仅靠提升服务器的硬件配置是不能从根本上解决问题的,分布式网格集群通过数据分区把数据拆分成更小的部分,分配到不同的服务器中。查询可以由多个服务器上的CPU、I/O来共同负载,通过各节点并行处理数据来提高性能;写入时,可以在多个分区数据库中并行写入,显著提升数据库的写入速度。
价值所在
•通过分区把数据放到不同的机器中,每次查询可以由多个机器上的CPU,I/O来共同负载,通过各节点并行处理数据来提高性能。
•冗余的数据结构(矩阵列)消除了单点故障,任何一个机器出现故障后都不会影响系统的正常运行,数据库集群能提供不中断的服务。
•无共享磁盘架构节省了硬件,利用中小型的服务器取代大型服务器大幅降低了硬件的成本,系统中不再有闲置的资源,降低了系统TCO(总体拥有成本)。
•分区把数据分成更小的部分,提高了数据库的可用性和可管理性。
•根据业务的需要,访问层和数据层都可以增加,集群具有良好的扩展性。
•中间件宿主在数据库中的创新使集群变得更透明,数据库的管理成本,以及面向数据库的开发成本都最小化。
2.数据实时复制解决方案
经过分析,大多数应用系统以查询操作为主,造成数据库压力迅速增加的主要因素也是复杂的查询操作,为了能够得到同一份数据的多个副本来响应用户的查询,SQL Server 提供了复制技术(Replication),主要有合并复制、事务复制、快照复制等,这些技术可以有效缓解查询的压力。伴随着企业发展的需要,企业对信息实时性要求越来越高,如股票、航空票务、连锁店甚至是一些服务系统等等,这些系统的用户希望更新的数据马上就可以查询到。
SQL Server数据库的复制/订阅技术
复制/订阅数技术可以实现读、写分离,数据先写到中心数据库上,写成功即返回给应用程序;通过复制将数据复制到只读服务器,查询时从只读服务器查。
意味着订阅端的数据和中心数据库的数据不同步,是个异步的过程,所以数据滞后严重,数据同步的实时性得不到保障,中心数据库在正常的压力下10秒左右。当访问负荷很高或者中心数据库在整理数据时,将出现大量DML操作延迟时间比较长或者出现堵塞的情况;
某些修改操作需要重新建立复制关系并初始化,这期间需要停止数据库的读取服务,规模越大的应用停止的时间越长,严重影响了数据库的可用性。
结论:复制订阅技术的实时性差,初始化时对系统的影响非常大;在数据复制过程中没有采用智能的策略,数据的复制速度慢;中心数据库仍然为失败转移集群模式。
构建数据库集群,节点间数据同步都是实时的,数据是一致性的,可以部署为读、写分离,也可以部署为所有节点可读可写;中间件监测到数据库变化并同步数据,数据同步完成后客户端才会得到响应,同步过程是并发完成的,所以同步到多个数据库和同步到一个数据库的时间基本相等;另外同步的过程是在事务的环境下完成的,保证了多份数据在任何时刻数据的一致性。中间件在同步数据时采用了多项智能同步策略,满足了不同类型的应用模式,可以同步数据,同步SQL语句,并行执行SQL语句,升级数据库的锁,启用数据压缩等。
同步过程是在SQL Server的执行环境中进行的,整个操作是在事务的环境下完成的,解决了数据实时性问题,满足了用户对数据实时性的要求。
中间件在同步数据时采取了智能同步策略,同步速度更快;提供了多种人工干预的机制,对数据库表结构的调整、批量更改数据等操的时间大幅缩减。
无需搭建失败转移集群,中心数据库Cluster中闲置的一台机器被利用起来,提高了整个系统的使用率;系统支持无共享磁盘架构,可以节省共享的存储设备。
连接数据库,提供专门针对数据库系统的负载均衡软件,无需使用昂贵的均衡硬件,无需程序员自己实现。提供故障检测及失败转移功能。
3.数据库选择
在SQL中使用Oracle链接服务器,因为是异地数据,在SQL中的更新,删除等是隐式事务,而在Oracle 中是显示的,所以直接调用速度是很慢的.并且很容易崩掉。
4.数据查询
1秒钟时间,在几千亿条话单数据中找到用户想要的数据,在分区、并行查询、列存、集群等技术统统粉墨登场仍无法满足响应要求时,数据压缩和索引技术成为了致胜的关键。无论是使用传统的B树索引,或通用的压缩算法,都不是问题的正解,在如此大的数据量下,需要使用更加专业高效的技术方法。
基于特定条件(产品型号、产品名称、起止时间等)组合的详单查询,绝大多数查询只会返回少量的结果