数据架构规划

上传人:公**** 文档编号:454527698 上传时间:2022-10-19 格式:DOC 页数:17 大小:286.21KB
返回 下载 相关 举报
数据架构规划_第1页
第1页 / 共17页
数据架构规划_第2页
第2页 / 共17页
数据架构规划_第3页
第3页 / 共17页
数据架构规划_第4页
第4页 / 共17页
数据架构规划_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《数据架构规划》由会员分享,可在线阅读,更多相关《数据架构规划(17页珍藏版)》请在金锄头文库上搜索。

1、数据架构规划一当前架构 结合研发二部数据量最大的校讯通产品来描述,其他的产品在性能上出现瓶颈,可以向校讯通靠拢。数 据库整体架构:目前校讯通产品根据用户量的多少以及数据库服务资源的繁忙程度,横向采用了历史库+当前库的分库架构或者单一的当前库架构,其中历史库只作 为web平台读数据库,纵向结合了applications的memcache+Sybase ASE12.5传统永久磁盘化数据库架构。数据模型架构:原则上采用了一事一地的数据模型(3NF范式),为了性能考虑,一些大数据量表适当的引用了数据冗余,根据业务再结合采用了当前表+历史表的数据模型。以下就用图表来进行当前数据架构的说明:横向分库数据库

2、架构图:纵向app layer+memcache layler+disk db layer图:其中web层指的是客户端浏览器层,逻辑上:app层指的是应用服务层,mc层指的是memcache的客户端层,ms层指的是memcache的服务层,db层指的是目前永久磁盘化的数据库层,当然在物理机器上可能app层跟mc层,ms层是重叠的部署在相同服务器上。数据模型架构图: 其中以上数据模型中除了少数几张表外其他的都有历史表存在,当然有很多表是没在这个模型图中的,这部分是核心数据模型。这部分模型对象中也包括了一些冗余 性的设计,比如用户中有真实姓名,特别是不在这个模型内,由模型核心表产生的一些统计报表,

3、为了查询的性能冗余了合理一些学校名称,地区名称等方面的设 计。二劣势现象1.流水表性能瓶颈 当前架构的性能瓶颈集中在流水表的访问上,最大流水表的记录量达到了超5亿级别,这是由于目前外网在用的sybase数据库系统版本,没有采取很好的关于 分区的技术。曾经有过把流水表进行物理水平分割,把不同月份的数据分割放在不同的物理表上的模型改造设想,碍于产生的应用程序修改工作量大,老旧数据迁移 的麻烦,再加上进行了从单库架构改造到分库架构后,数据库性能瓶颈就不是特别突出。所以模型改造这部分工作没展开。无 论是单库或是分库的模式,出现平台访问数据库的性能瓶颈依然集中在大流水表上,在访问高峰高并发量情况下,短信

4、的流水表进程堵塞,数据库服务I/O ,CPU的资源耗费达到顶点,在服务器硬件环境不是特别理想情况下,出现了一定概率造成用户访问缓慢甚至觉得页面无法响应现象,造成了用户体念不良影响。2. 运营维护难点 1)历史数据清理运维工作 为了存储充分利用,为了性能的提升,需要定期进行不再使用的历史数据清理,由 于清理的数据量庞大,传统的数据清理方法根本不可能保证一个晚上有效清理完毕,确保平台第二天正常的运行。虽然目前已经实行了比较高效且可行的数据清理方 法,但是每次实行都需要晚上到通宵进行处理,使得数据清理的运维工作特别劳累,影响到运维人员第二天的正常出勤,间接就有可能影响到数据库的正常运维监 控,导致数

5、据库问题出现。 2)防止索引失效而进行的统计量更新运维工作 由于流水表数据变动量大,容易导致流水表的索引失效,从而需要定期的进行索引甚至整表的统计量更新工作,统计量更新时间跟流水表的数据总量成正比关系,所 以导致统计量更新速度比较慢,不能确保在计划时间内,统计量更新的完全成功,而且目前外网安装的sybase12.5版本是最低一个的EBF版本,存在较 多BUG,在索引统计量更新过程中可能导致数据库出现病态,进而影响第二天数据库的正常运行。3.运维监控纰漏(此部分非架构原因引起) 当前的数据库监控以及运维维护还存在一些纰漏,出现了多次数据库设备空间使用完毕,没有及时添加数据库设备空间导致数据库挂起

6、问题,也多次出现了数据库日 志空间占满导致数据库挂起问题。此类问题还是比较明显,还有一类问题,不是整库挂起,而是部分业务表访问异常,运维可能监控不到,等用户访问到了这部分业 务功能不正常,由用户反馈到运维这边。4.运营统计报表在当前数据模型架构下重用性较低 由于用户需求的渐进性,导致数据库统计报表在数据模型设计时没有站在至高点,随着用户需求的不断积累,数据库统计报表对象也跟着不断积累,发现目前存在比较大一部分的统计报表数据在不同数据库对象之间重复统计,没有充分发挥统计数据的重用性。5.没利用集群技术 当前的数据库架构还没采用成熟的集群技术,集群技术并不单单指单一数据库系统的集群,可以混合集群,

7、比如内存数据库跟传统永久磁盘化数据库系统集群。6.分库架构还可完善 当前的分库架构还可以继续完善,引用成熟的数据库主从分离,读写分离技术。7.内存数据库技术还没充分利用 当前的数据库架构虽然在前端使用了memcache技术,但是还可以继续完善使用内存数据库技术再结合异步写技术,使得架构相得益彰。8.适合海量数据高并发读写,高效率存储的非关系型数据库没充分利用 当前的数据库架构还没采用正在兴起的NoSql,NewSql技术(目前部分外围系统采用了mongodb来做试验品,而这部分系统的数据量并不大,非关 系型数据库海量数据高并发访问的高效性优势没有体现出来,从而也没掌握真正的使用经验),当然这种

8、数据库也有缺点,就是数据库事务一致性,数据库的写实时 性和读实时性,复杂的SQL查询,特别是多表关联查询是无法满足的。三改进思路 在第二部分的劣势现象中,总结了当前数据库架构以及数据模型架构的缺陷,缺陷还比较多,从另外一个角度也反映了公司产品数据库架构改进和提升的空间还比较大,将来随着不断的迭代改进,可以承受的业务量提升的空间也相应的比较大。下面就根据劣势现象进行针对性的阐述改进思路:1.流水表性能瓶颈改进 Sybase12.5没有很好的解决大数据量表的性能问题,但是通过数据库转到Oracle后,充分利用Oracle分区表,分区索引的特性来提升流水表 的访问性能,逻辑上表仍然是一张完整的表,只

9、是将表中的数据在物理上存放到多个表空间(物理文件上,这样查询数据时,不至于每次都扫描整张表。由于逻辑上 仍旧一表,使得应用程序不需要修改,也避免了这个劣势点描述的带来额外许多开发工作量的问题,但是效果几乎等同水平分割数据模型。2.大流水表运维难的改进 1)历史数据清理运维工作 在Oracel数库系统中,针对对大流水表每个月的数据进行分区,这样运维人员在清理历史月份的数据时候,只要通过TRUNCATE PARTITION、DROP PARTITION的Oracle本身的分区维护命令轻松快速清理掉分区的数据(既指定月份的流水数据) 2)防止索引失效而进行的统计量更新运维工作 同样Oracle也有等

10、同于sybase的统计量更新工作,在Oracle中通过对大流水表的分区工作后,进行统计量的更新工作同样就快捷简易,可以通过ANALYZE PARTITION的统计量分析维护命令可以轻松快速对指定分区的统计量进行更新。3.运维监控纰漏的改进 主要分两个方面:a)数据库剩余空间方面的监控;b)数据库出错日志的监控。这两个监控虽然通过人为主动性的查看数据库相关信息可以监控到,但是总归还是 会有疏忽遗漏的时候,只是出问题几率高低之分。所以这里再加一道监控,就是通过数据库服务器端的监控程序主动发回有问题或者告警的信息给运维人员。这道监 控程序可以通过shell程序以及数据库程序,结合数据库日志以及剩余空

11、间信息以短信或者邮件的方式发回给运维人员。在数据库剩余空间方面甚至可以通过数 据库本身阀值的设置,做到自动截取日志,自动添加设备。4.运营统计报表数据模型的改进 由于原先一些报表模型存在着数据统计的重复性,在晚上定时task中既占用了任务列表的总时间,也对其他并行的task运行造成了一定的资源争用,影响了 数据库性能。所以在这里提出了一种类似蒲公英性质的模型,数据通过发散模式,即插即用到不同的运营统计报表中,势必需要改进当前接近一事一地的3范式模 型,把原先的数据模型拆散,从纵向和横向都接近最小粒度需求的数据模型。使得统计数据可以重复使用,不同的统计报表通过这些原子性的统计数据再组合成报表 所

12、需要的数据,当然这里需要一个平衡,并不完全等同蒲公英模型的统计粒度越细越好,因为越细也代表着原始的统计数据量越大,一会影响原始统计的性能,二会 影响组合成报表的性能,三会占用更多的存储空间。这个平衡度需要掌控好。5.利用集群技术 当然通过了前面4点的改进之后,数据库性能会比目前的架构提升一定的性能,至于集群技术就可以作为前面4点改进后的补充和扩展,如果在改进后,依然还存在 较大性能瓶颈情况下可以采用Oracle RAC技术。甚至采用基于内存数据库的分布式数据库架构的混合集群技术。比如在Oracle数据库及Web服务之间加一层Ameoba分布式数据库代 理结合内存数据库的架构,6.分库架构完善改

13、进 目前的数据库架构采用了分库方式,但是主库(当前库)的读写却是没有分离的,纵观淘宝的数据库架构演进历程,确是在某个历程碑点做到了很好的读写分离,应 用到DB的数据写入与查询从双向通行变成了单向通行,通行效率更高,大大避免了相互影响。“借道行驶”的情况不再出现。淘宝那个碑点做到了以下几点:1)写库为集中式的oracle环境,提供数据安全性保障。2)读库使用mysql, 采用数据分片,分库分表,每台mysql放少量的数据,单个数据分片内部采用mysql复制机制。3)读库的超大memory容量,起到了很好的cache作用,在内存中的数据查询性能远远高于在硬盘上的性能4)oracle到多台mysql

14、按规则复制结合淘宝架构的思考,校讯通大流水也可以做到垂直分割到不同的服务器,也可以做到水品分割到不同的服务器,通过不同的服务器访问不同的流水表或者是不同范围数据的流水表,那提升性能是肯定的。不过也要平衡考虑到应用程序开发的简便性。7.内存数据库技术利用 常见的内存数据库产品包括商业版和免费版两类。商业版如:Altibase,Timesten,Berkley DB等。他们在电信,金融,证券等高性能计算应用中运用较为广泛。商业版功能强大,然而,价格比较昂贵,不适合目前“廉价PC+免费软件”的架构搭建思 想。开源领域产品主要有H2,HsqlDB,Derby,BerkeleyDB等。在混合集群架构中,

15、内存数据库将承担OLTP的职责,因此除了读写性能外,功能的完备,事务等都需要作为优先评估的因素。盛传H2是一个开源的高性能内存数据库,可以通过整合Ameoba与H2,夹在applications和传统db层之间来达到内存数据库层的架构部署。Ameoba是分布式数据库代理,它与MySQL整合已经在阿里巴巴核心业务中成功运用。如果仅将数据库节点看作一个存储,MySQL Node和H2 Node并无本质区别。JDBC驱动,DB切分,路由,皆由Ameoba统一负责。8.非关系型数据库的使用 外围的非核心数据,但是数据量又是比较大的的业务系统数据库可以采用非关系型数据库,这是由非关系型数据库的一些基本特性决定的。非关系型数据库有满足如下需求的优点特性:1)High performance - 对数据库高并发读写的需求2)Huge Storage - 对海量数据的高效率存储和访问的需求3)High Scalability & High Availability- 对数据库的高可扩展性和高可用性的需求但同时伴随不能满足以下需求的缺点:1)数据库事务一致性需求2)数据库的写实时性和读实时性需求3)对复杂的SQL查

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号