在云时代,开发者与企业需要怎样的数据管理产品,一方面提升开发者的效率加速企业发展,另一方面又需要保障数据安全。NineData 则是尝试在两者之间找到平衡,让开发者能够高效率且安全地完成企业内部的数据管理,发掘企业数据价值。
01 百花齐放的数据时代
说“卷”并不合适,充分地竞争是可以给开发者/企业带来实惠的,当下的数字化也只是开始,潜力还巨大,所以,这里用了“百花齐放”来形容当下的数据时代。这里用两个“多”来具象化“百花齐放”这四个字。首先是云厂商多,这里简单罗列了一下,就有十六家厂商之多。另外,数据库也非常多,而且似乎还在变得更多。这里取了DB-Engines上10月份最新的数据,该网站十月份一共统计了397个数据库,这里列举了其中的15到20个,一部分是全球流行度最高的数据库,一部分是出现在DB-Engines榜单中的部分国产数据库。
02 数据管理的挑战与机遇
在这个百花齐放的数据时代,我们先看一下在数据管理场景下,有一些什么样的挑战。
在信息技术持续演进的过去几十年里,已经有一些传统的、成熟的数据管理软件和产品。这里列出来了一部分产品,包括Oracle Goldengate、Informatica、SharePlex等,我们自己也都比较熟悉,有些也用得很多。我们注意到,这些产于云时代之前的产品,并不能很好适应当下的环境。
第一,是权限管理非常困难。这些产品大部分是本地客户端,而企业内部的人非常多,开发人员少则是几十,多则是几百,要给每个人配置权限与账号,管理起来其实非常困难。另外,当用这些客户端工具的时候,企业内部操作审计也会非常困难。
第二,由于云厂商很多,数据会分布在不同的云厂商或者本地的IDC,此外,数据的种类也非常多,各种各样的数据库,导致数据流动也非常困难。而数据无法很流畅地流动起来,会导数据价值发现变得困难。
第三,使用这些工具产品的时候,对业务的稳定性挑战非常大。这些产品和工具,大多数都是由开发人员作为本地客户端使用,并且直连数据库,直接向数据库发送SQL请求,如果某一条SQL语句的性能不好,就可能让在线的数据库变慢甚至崩溃,以至于无法正常提供服务。
第四,这些产品通常都需要自己安装和部署,并维护其稳定性,在现在这个时代,每家企业都在非常快速和敏捷地发展,企业需要将最重要的研发资源都投入自己最核心的业务上,而不希望在基础设施上花费过多的精力。所以,在这种情况下,这些软件的部署、维护以及稳定性的保障就会变得累赘。
03 NineData 全球领先的多云管理
这就是 NineData 产生的背景和原因,NineData要做的就是在这个多云时代,在这个数据库百花齐放的时代,构建全球领先的多云数据管理平台。
那么我们先来整体地看看来 NineData ,它有哪些产品能力,以及它在企业的数据架构中处于怎样的一个位置。一般来说,一家企业可能会同时使用多家云厂商、本地IDC等环境下的多种不同的数据库,在此之上,在构建企业自己的数据平台。
那么,通常数据都需要在多个环境之间互相流动,例如需要构建容灾、跨云迁移、构建只读实例等。另外,数据有时候还需要在多个业务系统之间流动,例如,因为在线数据需要向搜索平台流动,帮助企业构建实时搜索等;在线的数据还需要向数据仓库、大数据平台流动,帮助企业构建实时数据分析等。而数据在多个系统之间流动之后,为了保证数据质量,还需要对数据进行验证与对比。
在日常的开发与运营中,企业的开发人员、BI人员、业务运营人员、DBA等,可能因为在线数据分析、验证、问题排查等,都需要对数据进行读取与操作。
这就是我们今天发布的 NineData 平台向企业所提供的能力,以及通过上面的大图展现了他在企业数据架构中的位置。从功能模块上,NineData包括了四大块,第一个是SQL开发,第二是数据备份,第三是数据复制,第四是数据对比。
NineData SQL开发
首先,来看一下“SQL开发”产品。在企业内部,也有许多传统的开发工具和方案,例如DBeaver、Navicat、dbForge等,各个数据库通常也会提供一些附带的工具,例如MySQL Workbench这样的产品。另外呢,部分云厂商也会有一些自己产品提供给企业使用。但在实践中,我们遇到了一些问题。
第一,访问权限管理通常比较困难。因为这些客户端的工具都是由开发人员独立使用,那么,谁可以访问哪个数据库,有哪些权限,整个的管理就会非常困难。第二,使用这些工具的时候,开发人员需要直接连到数据库上来,那么如果编写的SQL语句性能不好,则可能会对生产环境的数据库产生重大影响,留下稳定性隐患。第三,数据安全日益重要的今天,这些产品,通常缺乏审计以及敏感数据保护等功能。另外,如果在企业内部,禁止研发人员使用这些产品,将所有的数据查询和数据处理的工作都交由DBA来执行的话,那么对整个企业的研发效率会有非常大的影响。
我们来看一下 NineData 的“SQL开发”产品,怎么解决这些问题。首先,它提供了完整的SQL窗口功能,可以帮助企业内部的所有开发人员去执行在线的数据查询,还支持完整的权限管理和审计日志等功能。这就让开发者便捷地访问在线数据的同时,又能保证安全。其次,它还支持“SQL任务”功能。通常为了保证生产环境的稳定,很多的数据库变更,需要在晚上或者凌晨去执行,如果由DBA晚上执行的话,一方面非常辛苦,另外,也非常容易出问题,那么,NineData 的“SQL任务”就可以解决这些问题。使用该功能,研发人员或者DBA可以将自己的SQL变更定时地发布到生产环境,在这个发布的过程中,可以有多个审批的节点,由不同的人去把控风险。
此外,“SQL开发”模块还提供了表设计/表编辑功能,通过GUI式的交互,让你很简单的就可以去设计一个表,该功能支持的数据类型非常广泛,对每一个数据类型的选项也支持的非常完整。第三,是支持敏感数据的管理。如果你打开了某个数据库的敏感数据管理功能,它会自动去发现在这个实例中是不是有敏感数据,如果有的话,那么当用户去查询这个敏感数据的时候,默认的会对这些数据进行遮掩保护,用户需要额外的权限才能看到这些敏感数据。另外,支持的是列粒度的权限管理,当用户当他只需要查某一列的时候,可以单独申请某列的权限,另外所有的这些SQL查询功能,都支持很好的权限管理和审计,帮助企业更好的保护线上数据安全的同时,也让开发人员能够更高效的去完成日常业务开发。
简单的概括 NineData SQL开发产品的常见使用场景如下。第一,在日常的业务开发中,用它去做SQL查询与开发。第二,生产数据的直接查询。另外,可以使用该功能去做生产变更的发布。NineData 支持完整的权限管理、审计日志以及敏感数据保护等能力,可以非常好的保护企业的数据安全。
NineData数据备份和恢复
接下来,要介绍的是 NineData 的“数据备份和恢复”。
我们都说,现在是一个数据的时代,数据是企业最核心的资产。但是,数据安全却面临着诸多的挑战,并且,因为这些挑战对于单个企业来说并不频发,所以让这些安全挑战看起来很隐蔽。这些挑战包括了人为操作失误、应用程序错误、恶意软件攻击与勒索、硬件失败以及其他的一些不可抗力等,都会给数据安全带来风险。此外,相比于其他类型数据的备份,数据库的备份管理又更加复杂。备份数据库通常需要将数据文件和日志文件一起备份,很多时候配置文件也要一起备份,有时候,即便是没有正确备份配置文件,也会导致数据无法正常地恢复。另外,数据库的种类繁多,也增加了其备份的复杂性,如果想构建一个可以这个按时间点恢复的备份方案通常都比较复杂,想实现比较好的RPO和RTO保障并不容易。
我们来看一下传统的数据库备份方案,看看有哪些优点和缺点,这里列了一部分备份产品和方案,在我们实践中发现,这些方案要么就是颗粒度太大了,要么太小了。例如Cohesity、Rubrik,所提供的备份能力粒度就比较大,通常只适合文件备份或者虚拟机备份等。又如数据库或者一些开源厂商所提供的单一的备份软件,如XtraBackup、mydumper、以及每个数据库自己提供的备份程序,他们的备份粒度又太小,他们通常只支持单个实例的备份。要构建一个企业级的备份方案,还有哪些挑战和问题?这里概括了几个点,第一,如果要构建一个完整的企业级备份方案,则需要做对应的机房建设、存储建设、网络建设等,而且对这些基础设施要求都很高,这带来的初始成本就非常高,而且规划建设的时间也非常长。第二,如果要构建一个异地数据灾备的话,那么前面所说的这些成本和时间的投入又要翻倍。所以,总的来说,需要投入的时间、人力和金钱成本都非常高。
我们看一下 NineData 如何解决这些问题。首先,它的配置非常简单,是一个SaaS化的服务,一分钟就可以完成整个的备份任务配置。第二,它可以达到RPO几乎等于零的效果。另外,它的备份性能也会非常高,10分钟可以完成100GB备份,可以满足绝大多数线上备份的诉求。另外我们还提供了超越业界所有的产品,并且非常实用的功能,就是对数据备份的实时查询。也就是说,在备份完成后,就立刻可以查询到备份中的数据,不需要去做恢复。这样就可以很好地去验证备份的有效性。第二,当数据发生故障的时候,也不需要花费非常长的时间,先去做数据恢复,就可以直接对历史的数据进行查询和恢复。
具体来说,该功能有如下模块。第一,它可以提供数据备份的能力,包括全量备份、单表备份、结构备份以及日志备份。第二,可以做对应的恢复,包括按时间点恢复,且RPO接近于零。另外,可以支持实时地备份数据查询,做快速的数据校验,也可以做简单的数据分析,这个是我们产品默认自带的功能,无需做任何的额外的配置。另外,它天然就支持全国数十个区域,可以选择将数据拷贝到异地区域实现跨区域的数据容灾。此外,还有失败告警、周期性备份等相关功能。
再简单地来看一下数据备份和恢复在企业内部有哪些典型的使用场景。首先,可以用它快速地去构建一个企业级备份的方案,具备高性能、按时间点恢复、快速查询验证等;第二,它可以帮助企业快速地构建一个跨区域的备份,帮助企业满足等保等行业合规的需求。
NineData 数据复制
接下来,来看一下 NineData 的第三个产品:数据复制。
先看一下传统的数据复制方案,例如Oracle GoldenGate、Informatica、SharePlex等,另一个国内用户用的比较多的是自建开源的Canal,此外,各个云厂商也会提供一些数据复制和流动的产品或者方案。
这些方案大多需要自己搭建,安装配置成本通常都非常高。而且,由于数据库本身运行的SQL,包括DDL、DML等,非常多也非常复杂,如果长时间运行这些方案,都容易遇到各种各样的稳定性问题。一般,这些方案对于新的数据库或者新的版本支持都有一定的滞后,导致这些方案的长期稳定性比较差。云厂商也提供了一些方案,但大多数“宽进严出“。使用这些产品时,从其他云迁移到过来会比较容易,但是如果想将数据迁出去,则会遇到各种各样的限制甚至就直接不支持。另外,同构数据和异构数据的适配通常都很困难。不同的数据库由于其特性差异大,架构原理也不一样,数据类型也不同,这些都导致异构数据复制困难,而这也就最终会阻碍企业去发现这些数据的价值。
NineData 的数据复制产品,它是一个多云全托管的服务,支持阿里云、腾讯云等国内外主流的云厂商。另外,这是一个全托管服务,只需做一些简单的配置,就能拥有一个非常好的、长期稳定运行的数据复制链路。NineData同时支持同构和异构复制,不管是MySQL到MySQL,还是MySQL到可ClickHouse,都可以支持得非常好。另外,它的性能也非常好,TPS可以支持到10万,可以满足企业绝大多数在线的数据复制诉求。下面这个架构图,就是数据复制所具备的主要的产品能力,包括迁移时预检查、结构和对象迁移,全量数据迁移,增量数据迁移,以及在整个数据完成复制之后,支持对两端数据的对比和校验。
数据复制底层使用了基于增量日志解析的技术,可以让线数据复制的同时,减少对生产库性能的影响。NineData 还支持库/表/字段三级映射,很好地实现异构场景下的数据复制。
企业最最常见的复制场景包括如下情况。最常见的应该是OLTP到OLAP以及大数据之间的数据流动,比如说数据仓库的构建、数据湖的构建、实时分析系统的构建等。第二个比较常见的是OLTP与OLTP数据库之间的数据流动。例如,需要构建一个双活的灾备,或者要从一个云厂商A迁移到云厂商B,或者需要构建一个用于只读的分析库等。
另外还有一个比较常见的场景是OLTP数据到其他的应用系统的数据流动,例如到消息系统、搜索系统等,如果数据同步到消息系统,其他业务系统就可以很好地对这些数据再做新的分析和处理。我们相信让数据更好地流动起来,就可以帮助企业更好地发现数据的价值。
NineData数据对比
最后,来看看 NineData 的数据对比。目前市面上有一些零散的数据对比产品,例如前面提到的Navicat、dbForge等,这些工具也支持数据对比,但是有如下的问题,首先,它是一个客户端的,它不能长时间地对在线的数据进行对比。第二,也因为是客户端的原因,它的性能也非常有限,通常只适合于小数据量的对比,比如适用于几千、几万的数据量。
但是,实际情况比较复杂。例如,通常每一家企业至少都有多套环境,包括开发测试环境、生产环境、预发环境、性能测试环境等,由于企业应用迭代速度很快,所以要保障多套环境下的数据结构一致就很难。第二,在海量的数据发生流动以后,数据不一致是非常常见的。第三,即便是在线实时同步的系统,不管是数据库的主备复制也好,或者是容灾复制也好,或者只读复制也好,在这些动态复制的过程中,由于各种原因,也会出现一些数据不一致。
这些场景都可以使用” NineData 数据对比”去解。它有几个大的功能模块,包括结构对比、全数据量对比,另外它可以支持快速对比和周期性对比等。
该功能在完成了数据或者结构对比之后,可以快速地生成修复差异的DDL或DML语句,如果去目标库上执行这些SQL,就可以让两个数据库快速地达到一致的状态。NineData 还会根据数据库本身的压力进行并发度的自动降级,如果数据库带来的压力太大,或者数据库本身的压力太大了的话,那么它就会自动降低对比的速度,从而优先保障数据库的稳定。
我们来看看使用数据对比的常见场景。包括,前面提到的多环境下的数据结构对比,以及在构建了多或多区域容灾的时候数据一致性校验,或者从IDC迁移到云上之后的数据一致性的对比。通过 NineData 的数据对比产品,可以更好地保障企业的数据质量。
这是一个百花齐放的时代,在这之中,NineData 致力于构建于全球领先的多云数据管理平台。现在大家就可以登录NineData官网体验完整的产品功能
04 关于作者
周振兴,是 NineData 的联合创始人,致力于解决云时代的数据管理挑战。周振兴是数据库领域的一名老兵了,是Oracle ACE(MySQL方向),也是《高性能MySQL》第三、四版的译者。2009年,加入了阿里数据库团队,在这个团队供职12年,是阿里数据库架构演进的核心人员,从早期的去IOE,再到全面分布式支持历届的双十一。之后,则在阿里云上将集团的数据库技术全面云化,服务更多云端客户。