程序员必备:NineData数据库产品

发表时间: 2022-11-01 11:17

大家好,我是一名中国程序员,在 IT 领域(云计算+数据库)工作 20 年,17 年程序员和 3 年产品经理。早已经过了 35 岁,数据库爱好者,为了能一直写代码,我创建了一家公司(玖章算术),发布了首款数据服务 www.ninedata.cloud (对,在云时代我们率先使用了.cloud的域名),以下是我个人介绍。

除了我,还有几位好哥们有同样爱好,于是大家就一起开荒。

这几位都是数据库领域老鸟!

周振兴是产品经理,也是 Oracle ACE(MySQL 方向)、《高性能 MySQL》译者、原淘宝去 IOE 核心 DBA,发量没保住,原因是我们几个程序员更能折腾;

Ni Demai 是我们硅谷的数据库专家,清华毕业后一直在海外,说要让我们的产品在美国横着走(很期待啊);

谭宇外号七爷,数据库技术老手,飞车党程序员,精通数据库内核开发到企业数字化转型,属于万能程序员;

还有几位骨灰级程序员,擅长 go、Java、数据库内核、大数据、容器、网络、操作系统等等,他们比较低调,这里就不露脸了。

小伙伴介绍完了,再说说我看见数据库和云计算的一些问题吧。

从市场调查统计,大型云厂商已经超过 30 家,对外发行的数据库有 397 种。

看这图,百家争鸣啊(太卷了),所以我不想细谈云和数据库,咱先谈谈企业数据库管理的三个常见问题。


企业数据库管理三个问题


一、程序员应不应有生产数据库权限

方案 1:程序员不能查看线上的数据,所有工作都需要找数据管理员(DBA)处理。这一看就很安全啊,但效率太低,估计很多程序员就此选择躺平。

方案 2:线上数据库权限开放给程序员。那数据库稳定性没法控制啊,如果企业与员工出现矛盾,比如裁员,那删库跑路是迟早的事,说不定离职后还入侵一下,整个企业就瞬间崩溃,IT 负责人肯定要背锅,说不定老板要承担刑事责任。

上面这两种做法都比较常见,有些企业选择给程序员只开数据查询权限,但是敏感数据泄露和审计是个大坑。

二、数据备份如履薄冰,数据恢复靠天吃饭

备份一定是数据库管理员的心病,但不好意思说出来,只能向天祈祷,希望不要有数据丢失事件发生,因为大部分企业数据库备份就是开盲盒,甚至没做生产数据备份,还有些数据备份恢复没有演练过,真正遇到灾难要恢复的时候,发现备份无效,悔之晚矣。

传统备份方案的恢复时间比较长,尤其是物理文件或者快照备份方案,要恢复几条数据,结果需要把整个数TB的备份集下载恢复。

2020年,某上市公司删库事件还历历在目,另外各种机房和硬件故障、地震、火灾每个月总是会来几次。

企业要做好备份实在是太折腾,要购买备份设备,开发备份程序,定时做备份归档,备份有效性演练,出问题能按需恢复。因为传统备份只是用在数据恢复时刻,投入产出比太低了,很多大厂的备份系统都是如履薄冰,小厂就更不用说了。

三、数据上云难,跨云迁移更难

云已经势不可挡了,国产数据库、开源数据库、分布式数据库、云原生数据仓库等新技术都在快速演进,数据上云是大趋势,不管是私有云还是公有云,都得上啊。再抱着老的 IDC 技术架构,别说技术落后,可能出去找工作都难。

要快速更换数据库不容易,数据迁移就是个大难题,数据上云了,要换个新的云那就更坑(云厂商肯定不希望你搬走啊),要把本地私有云的数据和公有云打通更头大,这个其实是很多大型企业面临的跨云问题,那为啥会出现跨云呢?


多云时代已经到来


云已经成为新一代 IT 基础设施,进入了百家争鸣的时代,国际上 AWS、Azure、Google 是领导者,国内阿里云、腾讯云、华为云先发优势明显,天翼云、移动云、沃云、中国电子云等运营商/国资类云计算平台快速崛起,在政府、国企等市场优势明显。根据最新 IDC 调查统计数据显示,中国电信天翼云已经进入前三,移动云和联通沃云也是非常好的业绩增长(其他云都在瑟瑟发抖)。

可以预见到云平台会竞争更加激烈,并且多云和混合云是未来的发展趋势。根据 Flexera 对国际上 573 家中大型企业调查显示,有 89%的企业不只使用了一朵云(多云/混合云),为什么企业要选择多云呢?有以下几个因素。

未来,技术负责人不仅是用好云计算,能用好多云会是更核心的实力。

我们在云计算和数据库领域工作了 20 年,创业推出的第一款产品名字叫 NineData,就是要解决上面三个问题。


NineData 产品简介

这是 NineData 的产品大图,分为四大核心功能。

1. SQL 开发:提供企业级 SQL 开发平台,完全代替 Navicat、DBeaver 等 SQL 客户端工具,免费,并且更安全更方便。对企业用户可以支持更全面的权限管理,敏感数据保护和 SQL 线上变更发布等高级功能,非常适合超过 20 个开发人员的企业。

2. 数据备份:新一代数据备份解决方案,1 分钟内完成配置,支持全量、增量备份,支持多个云平台和多个地域,可以用来快速搭建异地备份解决方案,满足安全合规要求。我们在数据备份上做了大量创新,如备份数据可以在线查询,这样不仅可以验证备份的有效性,而且还可以快速查看数据的历史版本,选择需要的数据秒级恢复。可以完全代替 mydumper 这些落后的工具

3. 数据复制:提供数据迁移、数据同步等功能,可以更高效地完成数据上云、跨云数据迁移、ETL 等等,支持全量迁移和增量迁移,100000TPS,性能超越市场主流产品,支持各种复杂 DDL 变更同步,也完成了 MySQL8.0,ClickHouseV22 等最新数据库版本适配。

4. 数据对比:用来帮助你检查数据复制的正确性,支持结构对比和数据对比,提供了非常简单易用的可视化展示,算是目前市场上最好的数据对比工具。

简单易用、高性能、支持多云、多数据源是我们在产品设计和研发考虑最多的地方。接下来介绍我们的产品技术架构。


NineData 技术架构

NineData 是 SaaS 模式的多云数据管理平台,所以多云和多源是我们要解决的重点问题。我们要支持市面上主流的数据库,既支持 MySQL、PostgreSQL、SQLServer 等关系型数据库,也支持 MongoDB、Redis 等 NoSQL,还⽀持 Aurora、PolarDB、GaussDB 等云厂商专属数据库,当然还包括 TiDB、OceanBase 等分布式数据库。

NineData 会支持主流的云厂商和自建机房,也就是说,无论是云上还是云下的数据库,也不论是云⼚商专属数据库还是自建数据库,NineData 都会⽀持。

NineData 平台可以分为四层,最上层是接入层,包括控制台和 API 两个部分,可以在控制台上直接管理数据,也支持通过 API 的形式将 NineData 集成到内部的系统。

接下来是数据安全层,数据安全是 NineData 从一开始就确立的非常重要的工作。我们会在这⼀层处理所有涉及到数据安全相关的工作,比如数据加密、鉴权、脱敏以及完整的操作审计。

再往下是核心引擎层,主要用来支撑我们的 SQL 开发、数据复制、备份恢复和数据对比四大核心功能。

最下面是我们的基础能力层,主要包括两个部分,一是公共的核心能力,比如 SQL 解析器、多版本元数据管理中心、中间数据转换框架、数据存储系统、Gateway 等等。第二部分则是 NineData 多云部署框架和调度引擎。

再介绍 NineData 的多云运行架构,NineData 是 SaaS 模型,但是数据处理是越靠近用户的数据库节点越好,举个例子,如果要服务阿里云北京 Region 的用户,那么 NineData 最好也部署在阿里云的北京 Region,一方面可以获得更好的网络连接,另一方面也可以避免出现网络流量费用。以此类推,要服务所有的云厂商,就得在每个云的 Region 里部署 NineData 的服务。但是今天全球主流云厂商的所有 Region 加起来起码有几百个,再算上可用区就更多了,如果在每个云的每个 Region 上都预先部署然后才能提供服务的话,这将是一个巨大的工作量和成本,所以我们将 NineData 的架构拆分为了中心控制节点与分布式单元工作节点,这是我们原创的架构模型。

最后是我们在工程质量上的一些实践。

我们明白数据对客户意味着什么,如果 NineData 自身出现异常这对客户来说就是灾难,所以工程质量和数据安全是我们最重要的两件事情。

只有合理的产品设计才能保证工程质量。得益于 NineData 团队在数据管理领域的深厚积累,加上对数据管理的敬畏与审慎,我们确立了严格的产品评审流程。在严格遵循编码规范、代码审查等软件工程实践之外,还引入深度安全检测,确保我们软件的安全稳定。

此外,NineData 要解决的重要问题是大规模集成测试,NineData 要支持这么多云厂商和数据源,每修改或新增一个功能,就需要在所有支持的云、数据源上进行测试,这个成本非常高,所以我们实现了一个自动化测试框架来完成这些工作。首先能够低成本、无需编码来写用例,团队所有同学都可以不断沉淀,这是保证工程质量的基础,我们很快就积累超过一万个用例。其次是能自动化的执行用例,框架会自动分析依赖,比如 MySQL 相关的用例会搭建 MySQL 所有版本作为源,然后再根据 NineData 的支持范围选择目标。新增的数据源都会自动继承庞大的用例库。最后结合用例执行情况与线上故障等要素,制定优先级与补齐漏测场景。通过这些工作,NineData 可以快速积累测试场景和发现问题,确保我们提供的服务安全稳定。

我们在技术上还有很多有意思的积累,包括如何做高性能的实时数据同步与对比,如何做备份数据在线查询等等,未来有机会可以再详细分享,我们也计划把一些核心组件贡献给开源社区。


关于玖章算术和 NineData 的名字


我们公司名字叫玖章算术,来源于中国春秋战国时期科技著作《九章算术》。

它有 3 个特点:

  • 先进性:很早就提出了开方、立方、负数、分数这些概念和算法,在先秦时期是业界非常领先的;

  • 实用性:里面有计算三角形,梯形,圆锥体等几何图形的面积和体积等算法,在古代农业、建筑、军事上有非常好的应用价值,比如两国交战,建城墙需要多少石头用料和人力资源投入,都需要扎实的数学基础;

  • 历代科学家持续完善:《九章算术》不是一个人独立完成,是群体智慧结晶,后来西汉张苍、魏晋数学家刘辉,唐朝天文学家李淳风,这些名人都做了多次修订完善。

关于 NineData 的来源,Nine 是来自我们公司玖章算术的九字,Data 代表产品聚焦在数据领域。

  • 9 是最大数字的含义,代表着我们要处理海量的数据,我们和多个云平台、数据库无缝集成;

  • 9 也代表着持续、久远,我们会保持产品持续研发,保障数据稳定安全;

  • 选择 NineData 的这个英文产品名,因为我们要做全球最好的产品,全球统一品牌,要和国际的企业竞争。

NineData 今天刚出生,还有很多不足,我们会持续增强,目标是成为一款中国企业研发的全球领先的多云数据管理产品,能解决企业数据管理的实际问题,我们也会持续引入新的技术和人才,做到业界领先。希望每个技术人员都喜欢 NineData,也希望大家多多反馈建议,NineData 可以在线使用,地址是:www.ninedata.cloud (建议在 PC 上打开)