中科曙光Sugon

首页 >解决方案>解决方案概览>安全和流计算解决方案

海量数据分析解决方案

导言

与一般的信息服务行业中的数据库系统不同,可扩展性是设计网监系统数据库的最重要的指标,这是因为普通数据中心数据增长规模可能很快,但互联网数据的增长是爆炸式的。虽然很多当前的网监系统以精简数据的方式来适应存储系统的规模,但这并不是解决问题的方法。在互联网行业有一种说法“能通过花钱(买设备)解决的问题都不是问题,问题在于那些连花钱都解决不了的问题”,海量数据的数据库存储就是这样一个问题。

现在国内网监行业主流采用的数据基本都是Oracle,当单机Oracle性能到达瓶颈后开始流行Oracle RAC,但是可以看到,目前实际使用的Oracle RAC的成功案例一般只有4个节点,再往上扩展规模就非常不安全了,这是因为RAC一般用于OLTP联机事物处理的应用,其应用特征是并发用户多,但单个查询的数据量小,时间短。而网络监控系统面临的应用场景则是高并发加载数据,海量存储,低并发查询,但每次查询的规模都非常高。因此,传统的数据库系统难以支持大型网监系统的数据库存储服务。而曙光在长期的网监行业服务过程中,总结出网监行业数据库存储的特点,和计算所智能中心合作研发出专门针对网监行业数据库应用特点的数据库系统DRAC,已成功部署在多个国家大型项目中。其底层采用无共享(shared-nothing)的oracle数据库节点作为数据节点,具有较好的扩展性和系统可靠性。DRAC软件将用户的操作透明地转化成对底层数据库的操作,而对用户呈现为单一的数据库系统。DRAC系统可根据数据的访问频度和重要性实施多级存储的方案,以降低整个系统的成本,提高系统的性价比。

技术特点

曙光集群并行数据库DRAC(Dawning’s Real Application Cluster)是一种无共享(shared- nothing)结构的并行数据库管理系统。DRAC原是专为分析网络监控数据设计的并行数据库系统,现已部署在国家某大型项目、某市大型项目等多个系统中。它具有如下技术特点:

 DRAC采取目前主流的集群设计方法,具有性价比高、扩展性好等诸多优点。

 它直接将任意查询分解成操作于分区数据的子查询和汇总中间结果的后处理查询,用成熟的DBMS来实现两种查询的执行,从而避免了一般的分布式查询处理器为了通用而引入的复杂性。配合针对特定应用的分区策略,DRAC的方法能保证查询执行的效率。

 大任务全并行处理。DRAC采用单机数据库作为基本数据处理单元,将数据并行地写入这些单元数据库,查询时并行地从各个数据库中读取和处理这些数据。这种完全并行的处理极大地提高了系统存储数据的能力并缩短单个查询的完成时间。DDL操作也在各数据库节点上并行地执行。

 DRAC对外提供单一系统映像,用户使用类似ODBC或JDBC的接口提交SQL语句。这些操作被服务节点自动地并行执行。

 DRAC采取了功能分离的设计思路,像加载、查询等功能均可按需要配置,满足在线扩展的高可用要求。

 和Oracle RAC等并行数据库不同,DRAC不需要光纤交换机和较高端的盘阵,硬件成本低。配合灵活部署和简易管理的工具,DRAC在大规模部署时有较高的性能价格比。

系统架构

下图给出了一种典型的DRAC配置。系统中的节点分为两大类:存储数据的数据库节点和提供并行数据管理功能的服务节点。后者包括:加载服务、查询服务、数据复制和数据定义服务。所有类型的节点个数均可根据容量和性能的需要而灵活配置。

数据库节点是带独立存储系统(本地硬盘或磁盘阵列)的商品化服务器。节点上安装单机版的Oracle数据库管理系统。按照数据划分策略,每个数据库节点保存全部的复制数据和分片数据表的一部分。每个数据库节点上数据均可使用Oracle的索引、分区等特性。

数据库的功能被分成加载、查询、数据复制、数据定义等服务,每种服务部署在单独的物理节点上。任一服务节点均建立到所有的数据库连接。加载节点启动若干个加载线程,线程将一批数据写入某一数据库节点。由于海量数据分布存储在各数据库节点上,查询服务首先并行地在处理各数据库节点上的局部数据得到中间结果,然后将中间结果汇总成最终结果。复制数据是指将一个表的数据同时存储一组数据库节点上,以此避免两个表的连接操作。数据复制服务专用于处理这部分数据的操作。它通过分布式事务在有关节点上同时执行事务操作,保证复制前后数据都是一致的。 数据定义服务用于维护系统的元数据,它并行地执行表结构、表空间和其它数据库模式改变等元数据操作。

采用这种服务分离的设计,用户可以灵活地配置各种服务的个数,以达到整个体统资源的最佳利用。

 

DRAC集群数据库系统结构

无共享架构

DRAC采取Shared-Nothing的架构,即所有存储数据的数据库节点除互联网络外,不共享任何资源。除此之外,并行数据库还有Shared-Memory和Shared-Disk两种架构。学术界普遍认为,Shared-Nothing架构有很强的扩展性。另外,DRAC不需要存储网络设施,也不依赖于昂贵的高端盘阵。这样可以很好降低用户的硬件成本,在大规模部署时有很高的性价比。

Shared-Memory结构是多个处理器通过内存总线与多个共享内存相连接,再通过I/O总线共享多个存储设备。Shared-Memory 结构是典型的向上扩展类型,即在单节点上加入更多的处理器、内存、磁盘和网卡。多家厂商的产品已经证明,在常规商务负载环境下,SMP 服务器能够提供 10 倍于单处理器系统的向上扩展能力。然而,随着 CPU 个数增多,共享的内存带宽成为瓶颈,同时多处理器竞争降低了系统总线的利用率,因此难以扩展到大规模。

Shared-Disk结构中每个节点有自己的内存,共享磁盘。每个节点都可以读取和修改所有数据。通过分布式的并发控制机制来保证数据一致性。随着节点数增多,并发开销增大,因此商用 Shared-Disk构建的实用数据库系统一般只有 6-8个节点。

Shared-Nothing 结构属于多处理单元多数据单元结构。Shared-Nothing 环境下,每个处理器有自己的内存和磁盘存储设备,所有处理器通过节点间互连网络进行连接,对于节点间通信少、返回结果集少的应用(如 数据仓库或DSS),具有良好的扩展性。可达数千个节点。

在DRAC中,单元数据库除了采用单机Oracle之外,还可以采用Shared-Disk的并行数据库,如Oracle RAC。这是一种融合了Shared-Disk和Shared-Nothing结构的系统,可以扩展到更大的规模。

Shared-Nothing架构下,数据库节点如果失效将导致数据不可访问。DRAC提供了双写的策略,对于要求高的数据存储在两个节点上。只要有一个节点存在,数据仍然及时可用。


关键技术

DRAC是一套完整的并行数据库系统,除上述特征外,下面再给出并行加载、并行查询和数据双写等关键技术。

 并行加载

提高系统加载能力的关键是提高单机加载能力和充分利用系统资源。DRAC的并行加载技术包括如下层面上的设计。

1)单线程直接路径加载。加载线程使用预处理过程将被写数据的格式告知数据库,然后接受客户端的一大批记录,以直接路径加载的方式一次性将数据写入数据库。这是Oracle提供的最快的在线数据加载方法。

2)单机多线程同时加载。每个加载节点都维护一个线程,当有请求到达时,即分配一个线程向某一个数据库节点加载。这样能充分利用加载节点的带宽和计算资源,提高其利用率。

3)多数据库并行加载。每个加载节点的多个线程可以同时向多个数据库并行加载。当加载节点较多的时候,可以充分利用数据库的加载能力,使系统的加载性能达到最大。

上述三种设计的考虑使DRAC能提供很高的加载速度和近似线性的加载扩展比。

数据均衡是Shared-Nothing架构的并行数据库要解决的一个重要问题。解决数据均衡的关键是避免某个节点上的数据过多。出现这种情况,将导致该节点上的查询任务完成地最晚,因为并行任务的完成时间取决于最慢的操作,所以会导致查询扩展性严重下降。DRAC每次都选择当前加载量最小的节点进行加载,保持当前的数据均衡。如果某个数据库节点失效后重新启动,导致一段时间内加载量过小,后续就会出现短期内加载过多的情况。针对面向流数据应用,DRAC采取周期性计数的方法。当超出一个周期后,计数归零。在上述情况发生时,上个周期数据量少不会影响到一个周期的数据平衡。

 并行查询

流数据管理中,具有流特征的数据表因为随时间而增长,往往变得很大。海量的数据表分布存储在不同的数据节点上,这是DRAC的并行查询的基础。如图所示,查询服务器上也部署一个数据库,用于保存中间结果。查询服务将来自客户端的SQL分解成数据库节点上本地数据子查询和综合子查询的后处理查询。子查询在各个数据库节点处理原始数据,各节点的中间结果汇总到查询节点后执行后处理查询,即可得到用户最终的结果。

基于分布表和复制表的并行查询处理

当中间结果集较小时,该方法有很好的扩展性。两个分布表之间的关联操作采用节点间数据重分布来实现。

为了实现查询的鲁棒性,查询服务实现了客户端超时和服务器资源回收机制。确保在客户端异常后,不对系统产生影响。另外客户端可以主动取消查询。

 数据双写

对于要求数据可靠性和可用性要求很高的用户,DRAC提供数据双写功能。如图所示,每个数据库节点上创建两个数据库,如d1和d2是同一物理机上的两个数据库。节点之间的数据库做完全镜象,数据在写入的时间同时保存在镜象的两个数据库中。图中给出了交错的镜象关系,除任一数据库节点失效后数据仍可用外,上面或下面所有数据库节点损坏,系统中的数据仍然可用。

                                                                 DRAC的数据双写

高可用

DRAC采用多种方式提高系统的可用性,完全可以提供7*24小时无间断运行。按离用户的远近,DRAC的高可用性包括如下层面。

高可用的负载均衡机制。DRAC标准情况下配置两个负载均衡器,当其中一个不可用时,客户端接口库自动使用另一个,因此负载均衡器是高可用的。

高可用的服务。DRAC每种服务(加载、查询、复制引擎)都可以配置在多个物理服务器上,只要还有一个可用,这种服务就是可用的。

高可用数据库。DRAC系统配置多个互相独立的数据库节点。当某个数据库出现故障时,这种故障分临时性故障、节点宕机和数据损坏三种情况。如果是临时性的故障或节点宕机,正在进行的查询不能获得这部分数据的结果,但其余节点上的计算结果会返回给用户并提示“结果集不完整”。当节点宕机时,这种状态要持续到机器重新启动为止。启动双写机制后,即使数据库失效,数据也不会丢失,并且随时可用。

扩展性

DRAC管理的系统中,只要增加数据库节点,系统的容量可随即增加。与此同时,所有数据库的处理能力近似为整个系统的处理能力,也随之扩展。当系统规模扩大时,系统的性能表现,即扩展性是并行系统的重要特征。达到所有数据库的写速度之前,DRAC数据加载的性能和加载节点的个数呈近线怀的增长。大部分的查询则随数据库节点个数的增加,也呈近线性的结果。

根据应用的实际需求,用于加载和查询等任务的服务器可以方便地增加和删除,但系统总的处理能力主要受数据库节点能力的限制。

所有节点均可在不中断业务的情况下进行。软件也可以实现在线升级。

DRAC在生产系统的部署中超过18个数据库节点,处理的数据量超过400TB。

统备份恢复

DRAC高可用性的介绍中已经从4个层面上介绍了在部分设备出现故障的时候系统如何保证对外服务的连续可用性。在未发生数据丢失的情况下只需替换故障设备,重新加入系统,即可恢复故障。

为了防范出现数据丢失的严重故障,DRAC提供备份工具dmbk,它分别从各数据库节点导出需要的数据,经过压缩后存储在备份介质上。当需要时,它从备份介质上读出数据,解压缩后导入原数据库。

简易管理

DRAC的各种服务及数据库节点均是“逻辑节点”,它们可以部署在任何的物理节点上,因此针对特定的系统结构,只需指明“逻辑节点”和“物理节点”的映射关系,即可用工具简易完成包括底层数据库在内的整个的系统部署。它可以部署在包括单个节点在内的任意数量机器的系统上。

DiM是基于B/S模式的DRAC部署、监控和管理工具。它通过和用户的交互确定“逻辑节点”和“物理节点”的映射关系,然后根据该映射关系,生成在不同节点上执行的脚本,再引导用户一步步完成系统的部署。它同时可以完成系统部署正确性的验证和各种服务的检查工作。

DRAC定期采集系统各组件(如数据库节点、服务节点)的状态及平均资源利用率,并写入管理数据库的特定表中,用户可以用浏览器直接查看硬件、数据库和服务等监控信息并获取各种统计。DiM同时提供对组成系统的各种服务和单元数据进行启动、停止等管理操作。





技术支持
close

注册成为曙光会员,享受曙光提供更多的产品和市场活动信息

注:标有星号的项目 (*) 为必填内容

  • * 用户名:
  • * 密码:

忘记密码?新会员注册

close

请在登录后使用此功能

如您尚未成为曙光会员,不妨花上30秒时间,完成注册
注册成为会员后,您的申请将会得到优先处理,并可在第一时间接收曙光发送
的服务/活动消息。

注册

close
  • * 用户名:
  • 6-14个字符,仅限数字、字母
  • * 电子邮箱:
  • 请填写真实邮箱地址,以完成注册验证
  • * 密码:
  • 6-8个字符,字母区分大小写
  • * 再次输入密码:
  • 请再次输入密码
  • * 安全问题:
  • 限中文、数字或字母
  • * 安全问题答案:
  • 3-8个字符,仅限中文、数字或字母

  我希望接收曙光公司发送给我的服务信息或市场活动电子邮件。

close

感谢注册成为曙光会员!
请登录注册邮箱,激活账号。

close

不小心忘记密码?请输入用户名

close
  • 用户名:
  • 安全问题:
  • 最爱吃的食物
  • * 安全问题答案:
  • 6-8个字符,字母区分大小写
  • * 新密码:
  • * 重复新密码:

close

您的密码已成功重置