收藏 分销(赏)

数据架构规划.docx

上传人:二*** 文档编号:4746776 上传时间:2024-10-11 格式:DOCX 页数:17 大小:217.99KB 下载积分:5 金币
下载 相关 举报
数据架构规划.docx_第1页
第1页 / 共17页
本文档共17页,全文阅读请下载到手机保存,查看更方便
资源描述
数据架构规划 一.当前架构     结合研发二部数据量最大的校讯通产品来描述,其他的产品在性能上出现瓶颈,可以向校讯通靠拢。 数 据库整体架构:目前校讯通产品根据用户量的多少以及数据库服务资源的繁忙限度,横向采用了历史库+当前库的分库架构或者单一的当前库架构,其中历史库只作 为web平台读数据库,纵向结合了applications的memcache+Sybase ASE12.5传统永久磁盘化数据库架构。 数据模型架构:原则上采用了一事一地的数据模型(3NF范式),为了性能考虑,一些大数据量表适当的引用了数据冗余,根据业务再结合采用了当前表+历史表的数据模型。 以下就用图表来进行当前数据架构的说明: 横向分库数据库架构图:   纵向app layer+memcache layler+disk db layer图: 其中web层指的是客户端浏览器层,逻辑上:app层指的是应用服务层,mc层指的是memcache的客户端层,ms层指的是memcache的服务层,db层指的是目前永久磁盘化的数据库层,当然在物理机器上也许app层跟mc层,ms层是重叠的部署在相同服务器上。 数据模型架构图:     其中以上数据模型中除了少数几张表外其他的都有历史表存在,当然有很多表是没在这个模型图中的,这部分是核心数据模型。这部分模型对象中也涉及了一些冗余 性的设计,比如用户中有真实姓名,特别是不在这个模型内,由模型核心表产生的一些记录报表,为了查询的性能冗余了合理一些学校名称,地区名称等方面的设 计。   二.劣势现象 1.流水表性能瓶颈     当前架构的性能瓶颈集中在流水表的访问上,最大流水表的记录量达成了超5亿级别,这是由于目前外网在用的sybase数据库系统版本,没有采用很好的关于 分区的技术。曾经有过把流水表进行物理水平分割,把不同月份的数据分割放在不同的物理表上的模型改造设想,碍于产生的应用程序修改工作量大,老旧数据迁移 的麻烦,再加上进行了从单库架构改造到分库架构后,数据库性能瓶颈就不是特别突出。所以模型改造这部分工作没展开。 无 论是单库或是分库的模式,出现平台访问数据库的性能瓶颈仍然集中在大流水表上,在访问高峰高并发量情况下,短信的流水表进程堵塞,数据库服务I/O ,CPU的资源花费达成顶点,在服务器硬件环境不是特别抱负情况下,出现了一定概率导致用户访问缓慢甚至觉得页面无法响应现象,导致了用户体念不良影响。   2. 运营维护难点     1)历史数据清理运维工作     为了存储充足运用,为了性能的提高,需要定期进行不再使用的历史数据清理, 由 于清理的数据量庞大,传统的数据清理方法主线不也许保证一个晚上有效清理完毕,保证平台第二天正常的运营。虽然目前已经实行了比较高效且可行的数据清理方 法,但是每次实行都需要晚上到彻夜进行解决,使得数据清理的运维工作特别劳累,影响到运维人员第二天的正常出勤,间接就有也许影响到数据库的正常运维监 控,导致数据库问题出现。     2)防止索引失效而进行的记录量更新运维工作     由于流水表数据变动量大,容易导致流水表的索引失效,从而需要定期的进行索引甚至整表的记录量更新工作,记录量更新时间跟流水表的数据总量成正比关系,所 以导致记录量更新速度比较慢,不能保证在计划时间内,记录量更新的完全成功,并且目前外网安装的sybase12.5版本是最低一个的EBF版本,存在较 多BUG,在索引记录量更新过程中也许导致数据库出现病态,进而影响第二天数据库的正常运营。   3.运维监控纰漏(此部分非架构因素引起)     当前的数据库监控以及运维维护还存在一些纰漏,出现了多次数据库设备空间使用完毕,没有及时添加数据库设备空间导致数据库挂起问题,也多次出现了数据库日 志空间占满导致数据库挂起问题。此类问题还是比较明显,尚有一类问题,不是整库挂起,而是部分业务表访问异常,运维也许监控不到,等用户访问到了这部分业 务功能不正常,由用户反馈到运维这边。   4.运营记录报表在当前数据模型架构下重用性较低     由于用户需求的渐进性,导致数据库记录报表在数据模型设计时没有站在至高点,随着用户需求的不断积累,数据库记录报表对象也跟着不断积累,发现目前存在比较大一部分的记录报表数据在不同数据库对象之间反复记录,没有充足发挥记录数据的重用性。   5.没运用集群技术     当前的数据库架构还没采用成熟的集群技术,集群技术并不单单指单一数据库系统的集群,可以混合集群,比如内存数据库跟传统永久磁盘化数据库系统集群。   6.分库架构还可完善     当前的分库架构还可以继续完善,引用成熟的数据库主从分离,读写分离技术。   7.内存数据库技术还没充足运用     当前的数据库架构虽然在前端使用了memcache技术,但是还可以继续完善使用内存数据库技术再结合异步写技术,使得架构相得益彰。   8.适合海量数据高并发读写,高效率存储的非关系型数据库没充足运用     当前的数据库架构还没采用正在兴起的NoSql,NewSql技术(目前部分外围系统采用了mongodb来做实验品,而这部分系统的数据量并不大,非关 系型数据库海量数据高并发访问的高效性优势没有体现出来,从而也没掌握真正的使用经验),当然这种数据库也有缺陷,就是数据库事务一致性,数据库的写实时 性和读实时性,复杂的SQL查询,特别是多表关联查询是无法满足的。   三.改善思绪     在第二部分的劣势现象中,总结了当前数据库架构以及数据模型架构的缺陷,缺陷还比较多,从此外一个角度也反映了公司产品数据库架构改善和提高的空间还比较大,将来随着不断的迭代改善,可以承受的业务量提高的空间也相应的比较大。 下面就根据劣势现象进行针对性的阐述改善思绪: 1.流水表性能瓶颈改善     Sybase12.5没有很好的解决大数据量表的性能问题,但是通过数据库转到Oracle后,充足运用Oracle分区表,分区索引的特性来提高流水表 的访问性能,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文献上,这样查询数据时,不至于每次都扫描整张表。由于逻辑上 依旧一表,使得应用程序不需要修改,也避免了这个劣势点描述的带来额外许多开发工作量的问题,但是效果几乎等同水平分割数据模型。   2.大流水表运维难的改善     1)历史数据清理运维工作     在Oracel数库系统中,针对对大流水表每月的数据进行分区,这样运维人员在清理历史月份的数据时候,只要通过TRUNCATE PARTITION、 DROP PARTITION的Oracle自身的分区维护命令轻松快速清理掉分区的数据(既指定月份的流水数据)     2)防止索引失效而进行的记录量更新运维工作     同样Oracle也有等同于sybase的记录量更新工作,在Oracle中通过对大流水表的分区工作后,进行记录量的更新工作同样就快捷简易,可以通过ANALYZE PARTITION的记录量分析维护命令可以轻松快速对指定分区的记录量进行更新。   3.运维监控纰漏的改善     重要分两个方面:a)数据库剩余空间方面的监控;b)数据库犯错日记的监控。这两个监控虽然通过人为积极性的查看数据库相关信息可以监控到,但是总归还是 会有疏忽漏掉的时候,只是出问题几率高低之分。所以这里再加一道监控,就是通过数据库服务器端的监控程序积极发回有问题或者告警的信息给运维人员。这道监 控程序可以通过shell程序以及数据库程序,结合数据库日记以及剩余空间信息以短信或者邮件的方式发回给运维人员。在数据库剩余空间方面甚至可以通过数 据库自身阀值的设立,做到自动截取日记,自动添加设备。   4.运营记录报表数据模型的改善     由于原先一些报表模型存在着数据记录的反复性,在晚上定期task中既占用了任务列表的总时间,也对其他并行的task运营导致了一定的资源争用,影响了 数据库性能。所以在这里提出了一种类似蒲公英性质的模型,数据通过发散模式,即插即用到不同的运营记录报表中,势必需要改善当前接近一事一地的3范式模 型,把原先的数据模型拆散,从纵向和横向都接近最小粒度需求的数据模型。使得记录数据可以反复使用,不同的记录报表通过这些原子性的记录数据再组合成报表 所需要的数据,当然这里需要一个平衡,并不完全等同蒲公英模型的记录粒度越细越好,由于越细也代表着原始的记录数据量越大,一会影响原始记录的性能,二会 影响组合成报表的性能,三会占用更多的存储空间。这个平衡度需要掌控好。   5.运用集群技术     当然通过了前面4点的改善之后,数据库性能会比目前的架构提高一定的性能,至于集群技术就可以作为前面4点改善后的补充和扩展,假如在改善后,仍然还存在 较大性能瓶颈情况下可以采用Oracle RAC技术。甚至采用基于内存数据库的分布式数据库架构的混合集群技术。比如在Oracle数据库及Web服务之间加一层 Ameoba 分布式数据库代 理结合内存数据库的架构,   6.分库架构完善改善     目前的数据库架构采用了分库方式,但是主库(当前库)的读写却是没有分离的,纵观淘宝的数据库架构演进历程,确是在某个历程碑点做到了很好的读写分离,应 用到DB的数据写入与查询从双向通行变成了单向通行,通行效率更高,大大避免了互相影响。“借道行驶”的情况不再出现。淘宝那个碑点做到了以下几点: 1)写库为集中式的oracle环境,提供数据安全性保障。 2)读库使用mysql, 采用数据分片,分库分表,每台mysql放少量的数据,单个数据分片内部采用mysql复制机制。 3)读库的超大memory容量,起到了很好的cache作用,在内存中的数据查询性能远远高于在硬盘上的性能 4)oracle到多台mysql按规则复制 结合淘宝架构的思考,校讯通大流水也可以做到垂直分割到不同的服务器,也可以做到水品分割到不同的服务器,通过不同的服务器访问不同的流水表或者是不同范围数据的流水表,那提高性能是肯定的。但是也要平衡考虑到应用程序开发的简便性。   7.内存数据库技术运用     常见的内存数据库产品涉及商业版和免费版两类。商业版如:Altibase,Timesten,Berkley DB等。他们在电信,金融,证券等高性能计算应用中运用较为广泛。商业版功能强大,然而,价格比较昂贵,不适合目前“便宜PC+免费软件”的架构搭建思 想。 开源领域产品重要有H2,HsqlDB,Derby,BerkeleyDB 等。在混合集群架构中,内存数据库将承担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查询,特别是多表关联查询的需求 正 是由于以上的优缺陷也决定了,核心的需要保持一致性的数据,需要复杂关联的数据,需要实时访问的数据不要采用关系型数据库,假如通过ETL把关系型数据库 的流水数据冗余基本信息,组成可以直接查询的业务信息数据,导入到非关系型数据库后,那对海量流水数据的查询速度提高空间是很大的。其中代表型的非关系型 数据有Redis,Tokyo Cabinet,Cassandra,Voldemort,MongoDB,Dynomite,HBase,CouchDB,Hypertable, Riak,Tin, Flare, Lightcloud, KiokuDB,Scalaris, Kai,ThruDB等等非常之多。   四.架构计划     通过以上当前架构劣势以及改善思绪的总结,改善的架构计划就比较清楚了,以下还是通过横向的整体数据库架构,纵向的整体数据库架构,以及数据模型的架构改善来做为新的架构计划。 风险最小,改动工作量最小的架构就是改善思绪中以第4点和第5点之间为分割线。这条分割线前的数据架构基本不需要变动,重要变动的就是数据模型架构中的流水表对象,以及数据库服务器后台添加监控以及智能解决的运维程序工具。 重要改善的数据模型流水表对象如下图: 同样进行分区的尚有其他的一些大流水表,这里不一一详述,这些流水表从sybase进入oracle的分区表,在数据库转型升级过程中完毕。 尚有一点就是关于数据库监控工具在架构中的部署,如下图所示: 以上架构改善计划可以在一期中先完毕。看运营效果状态,第5点之后的改善计划几乎就是架构的重构了,所以涉及的工作量更大,假如在第1,2,3,4点改善后数据库运营稳定,后续的改善,可以通过实验和应用结合逐步实行起来,作为应付更大型的业务应用技术储备。     下面结合5,6,7,8点的改善思绪做个架构规划,也就是分布式的内存与传统数据库结合的混合集群架构模式,再加上外围产品的非关系型数据库,如下图所示(服务器和db合为同个节点说明,否则图片篇幅占用过大):       上面的架构图中,application(应用服务层),data cache层,disk db layer层已经实现,但是disk db Layer层的多数据库集群技术还没不能说正式实现,虽然分库技术有类似集群嫌疑,async write(异步写)听开发人员也已经涉及使用。那么此新架构图针对原架构的改善就是Memory DB Layer层以及类似Ameoba (可以使用其他的代理)分布式数据库代理还没实现。Memory DB Layer集群加上每个逻辑分区有两个内存库是为了其中一个内存数据库一旦崩溃,同一逻辑分区中的替补节点立即顶替工作,做到健壮的容错和 Failover机制。这个架构明显比校讯通当前在使用的架构要复杂很多,稳定性以及性能的提高都有待实际验证,虽然单单从架构上来讲融合了目前很多的技 术优点(集群,内存数据库等)。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服