云数据库涉及的关键技术!
云数据库,是一种“稳定可靠、可弹性伸缩”的在线数据库服务。云数据库,基于云计算平台,提供数据库的变更、查询和计算等服务。这种服务不仅能够帮助用户从繁琐的硬件、软件配置上解脱出来,还可以简化软件、硬件的升级,具有普通数据库所不具有的特点和功能。
本篇带你了解云数据库涉及的几个关键技术,如:数据库的扩展、大规模数据库的实现、共享型和分布式数据库,以及智能运维和数据化管理等。
一、 数据库的扩展
当数据库的存储容量不足或者性能有待提升时,需要进行数据库扩展。数据库扩展,有“向上扩展”和“横向扩展”两种方式。
向上扩展,指的是通过数据库的调优或者硬件调优等方式,提高单机性能。向上扩展,主要针对单个节点进行优化,实现数据库的扩展。横向扩展,则不再局限于提升单机性能,而是实现分布式的数据库,利用多机器解决数据库扩展的问题。
向上扩展和横向扩展,是从不同角度对数据库进行的扩展。打个比方,一个30层的楼房可以容纳200人,现在又有200人需要入住。向上扩展的方式,是在原有30层楼房的基础上,再添加30层,供新老住户居住;而横向扩展的方式则是,额外再建一栋30层的楼房,给新来的200人入住。
在大数据时代,传统向上扩展的方式,只提升和优化单个节点的性能,已经很难满足用户的需求。而且向上扩展的方式,数据在迁移时不得不停机,会造成服务中断。横向扩展的方式,只需增加节点,使得数据库的扩展工作大大简化。当有节点发生故障时,系统自动检测故障,并转移故障节点的应用,提高数据库的可靠性和高可用性。
二、 大规模数据库的实现
在大数据时代,海量数据的存储和访问,成为数据库设计的瓶颈,传统的方式已无法满足大数据的需求。要实现超大规模的数据库,可采用“负载均衡技术、读写分离技术、数据库/数据表拆分技术”等。
1、 负载均衡技术
顾名思义,负载均衡就是平衡各节点/单元的工作负载,以达到提高整个系统资源利用率的目的。利用负载均衡技术,可以将大量并发访问或数据流量等任务,分配到多个节点单元上分别处理,以缩短反应时间,或者将单个负载严重的节点的工作任务,分配到其他节点进行处理。
负载均衡技术,通常用于集群系统中,该系统由多台计算机构成,系统之间通过网络进行连接。对内,各个节点相互协作,均衡负载;对外,则表现为超强性能的服务器。
在云数据库中实现负载均衡,首先需要一个连接数据库的控制端,作为中间层。外部的所有请求,访问中间层,再由中间层来访问数据库。中间层可以设置有效的均衡策略,控制每次访问哪个数据库。此外,在云数据库中,负载均衡技术要解决的另一个问题是,数据的实时和同步。
负载均衡技术,使得数据库具有很强的扩展性,只需要增加数据库服务器即可。通过多台服务器实现数据冗余,也保护了数据库的安全性。
2、 读写分离技术
数据库读写分离的原理,是将“读操作”和“写操作”对应到不同的数据库服务器上去,从而减轻了数据库的压力。一般由“主数据库”对应“写操作”,“从数据库”对应“读操作”。当数据库进行“写操作”时,需要同步到所有的数据库中,从而保证数据的完整性。
数据库的读写分离,需要实现数据复制,将一组数据拷贝到多个数据源,分布在多个数据库服务器,从而保证不同地点的数据自动更新,维持数据的一致性。
但读写分离技术也存在一定的问题。例如:实时性差,“写操作”进行后,往往要隔一段时间才能访问到最新的数据。尤其是在操作的数据量大时,同步效率明显变差。所以,需要根据查询的敏感程度区分业务,将可接受短期延迟的查询分流到库。
3、 数据库/数据表拆分技术
数据库/数据表拆分技术,是按照一定的规则,将同一个数据库的数据,分散到不同的数据库中,通过“路由转换”访问特定的数据库,从而将访问分散到多台数据库服务器。
拆分技术,分为纵向拆分和横向拆分。纵向拆分,是按照具体应用的功能模块进行拆分,不同功能的模块,分布在不同的数据库中。横向拆分,是将单个表的数据,分散到不同的数据库。
纵向拆分,适合模块划分清晰的系统,但是仅仅按“功能模块”进行拆分,并不能有效缓解所有的访问压力,单表数据的操作,带来的系统开销仍然很大。此时,横向拆分的方法,继续将单表划分成子表,可有效提升数据库的操作效率。
三、 共享型和分布式数据库
共享存储是云计算时代对数据库的创新,以“节约资源、降低开发成本”为目的。云数据库的提供商和使用云数据库的人,类似于“房东和租户”的关系。用户可以创建表、修改表,但是无法创建数据库、修改数据库,因为数据库供所有用户使用,而单个用户不具备修改的权限。
由于是共享存储,用户可以按需付费,不必购买整个数据库。有多大的业务,就租赁多大的空间,按实际需求支付相应的费用。
共享型数据库需要支持租户隔离,并保障安全性。在遇到故障时,要提供“高可用性”保障,不影响对用户的服务。当用户数据增长超过租用容量时,还要能够为用户的数据库提供“无缝升级”的扩容服务。
纵横数据新上线的云数据库MySQL,和自家的云服务器、裸金属服务器一样,都支持和具备“弹性扩展”的优势特点。用户可根据自己具体的业务需求,以及业务的发展变化,按实际需要进行配置上的弹性扩展,支持配置无缝升级或降级。在进行升、降级时并不会导致云数据库服务的中断,从而影响到用户业务的正常运转。
分布式数据库是数据库技术和网络技术相结合的产物,目前逐渐向“客户机/服务器模式”发展。分布式数据库是一个数据的集合,这些数据在物理上分布在计算机网络的不同节点,但在逻辑上却属于同一个系统。每个节点拥有独立处理数据的能力,同时也至少参与到一个全局应用当中。所以分布式数据库的特点是:物理分布性、逻辑整体性、场地自洽性以及场地之间的协作性。
分布式数据库按照所使用的数据类型、数据库管理系统,可分为“同构同质型、同构异质型、异构型”。数据库要把数据分散到不同的节点,就涉及到“数据分片”的技术,包括“水平分片、垂直分片、导出分片、混合分片”等。无论采用哪种分片方式,都必须满足“完备性、可重构、不相交”的条件。
分布式数据库管理系统接收到用户请求后,要决定将其分配到哪些计算机。如果目标数据存储在多个计算机节点上,就必须进行分布式处理。由于采用“分布式”架构,数据库具有灵活的体系结构、较好的可扩展性,能够适应分布式的管理和控制结构。
四、 智能运维和数据化管理
由于集群规模和数据量增长过快,业务环境愈发复杂,这给运维工作带来了巨大的挑战。传统的运维平台虽然能在故障发生时及时报告,但却不具备预测的能力,无法发现潜在的风险。智能运维和数据化管理,则可以弥补传统运维的不足,实现数据库资源的统一监控、运维工作自动化、智能化,挖掘和预测潜在的风险,快速定位和处理故障。
云数据库涉及的关键技术!
智能运维和数据化管理,通过主动管理的方式,实时监控数据库的资源消耗、执行成本等性能参数,及时发出警告并给出原因分析。通过对历史数据自动收集和汇总分析,当数据库运行状态偏离时,也能够及时发出预警。通过预定义的标准,自动检测故障;通过预先设定的故障分析程序,自动分析原因并提供相应的解决方案,大大提升运维和管理的效率。
常见的功能模块如下:
⑴ 数据库运行成本监控
数据库运行效率取决于数据库SQL/NoSQL语句的运行效率。当某类应用的SQL/NoSQL语句运行效率下降、运行成本增加、运行时间突增时,发出预警并提供相应的原因分析报告。
⑵ 数据库性能监控与分析
通过对数据库过去几周或几个月的历史性能数据的自动收集、汇总分析,并生成数据库性能基线,当数据库运行状态偏离性能基线时,发出预警。同时将资源消耗多的SQL/NoSQL语句定位、原因分析、整改建议方案产生、整改前后效果预测与优化建议报表生成等功能实现自动化。
⑶ 故障自动分析、处理与回溯
通过给数据库预先定义健康的标准,实时对数据库运行状态进行自检,当数据库偏离健康标准时发出故障预警。同时,可调用预先设置的相关故障分析程序,自动分析故障原因,并给出可能的解决方案,这极大缩短了故障处理时间;启动捕获业务系统故障时间、交易信息及运行数据,并在测试环境再次回放,实现故障现象回溯。
⑷ 数据库容量监控与分析
通过实时收集与存储数据库容量(如:空间消耗、并发连接数变化、内存消耗)等基础数据,进行自动分析。通过分析数据库的历史容量变化趋势,能够对数据库即将出现的容量瓶颈,进行提前预警。
纵横数据在今年春节期间,新上线了三款“云数据库”的产品和服务 :云数据库MySQL、云数据库Redis以及云数据库Memcached。其中,云数据库MySQL是一种即开即用、稳定可靠、可弹性伸缩的“在线数据库服务”,具有多重安全防护措施和完善的性能监控体系,并提供专业的数据库备份、恢复及优化方案,使企业与用户能够更加专注于应用开发和业务发展。而云数据库Redis,则是一种即开即用、稳定可靠的高性能数据缓存服务,支持“主从热备”,提供“自动容灾切换、实例监控、在线扩容”等功能。另外一款云数据库产品——云数据库Memcached,是一种内存级、持久化缓存服务,同样支持“主从热备”,提供“自动容灾切换、实例监控、在线扩容”等功能。