写点什么

将数据库性能提升 100 倍?大数据时代中,一位数据库老兵的创新之路

  • 2021 年 7 月 08 日
  • 本文字数:3511 字

    阅读完需:约 12 分钟

将数据库性能提升100倍?大数据时代中,一位数据库老兵的创新之路

当前构建大数据应用的难点是什么?对于这个问题,相信很多资深从业者都会回答:海量数据的高效处理与运维。在大数据时代中,它是数据库行业面临的基础性问题,如何将它解决?既是挑战,也是机遇。


在无数数据库行业的老将新兵中,我们注意到一批力图解决大数据语境下,数据库使用和运维难题的“引路人”。今天,InfoQ 的专访对象 --- 姚延栋,正是这批大数据“引路人”中的一个。


作为 Greenplum 的第三号员工,在过去十年间,姚延栋曾带领团队将 Greenplum 打造成为世界排名第三的分析型数据库,创下由华人主导的数据库产品最好排名。而在数据库领域从业数十年后,他又选择开启自己的创业之旅,与两位合伙人共同创办了一家名为四维纵横的数据库公司。那么,他为什么在这个时间点选择创业?当传统行业的数字化转型成为大势所趋,数据库领域又发生了什么新故事?我们带着这些问题,同四维纵横创始人姚延栋一起聊聊数据库的过去与未来,挑战与机遇。

行业中存在一种思维惯性


“创业是为了打破行业的惯性。”


“如果把数据库领域比作一个大森林,那么我们就是对地形非常熟悉的原住民。当有人想穿过大森林,却不知该走哪条路的时候,我们就充当‘引路人’来帮助他们穿过森林。倘若没有我们,那他们可能会按照自己的惯性去走。”


姚延栋在 Greenplum 效力的十年期间,最初主要从外围模块入手打造产品,后来逐步向核心迈进,打磨内核模块,直到团队驾驭整个数据库内核,他坦言这与农村包围城市的过程十分类似。在此期间,他发现行业中存在一种惯性思维,而创业就是为了打破这种惯性。


那么,这个惯性到底指的是什么?


以时序场景为例,现在业内普遍流行使用专用的时序数据库,典型的代表产品有 InfluxDBOpenTSDB 等,而与此同时,几乎所有场景都需要关系型数据库。这样一来,大家就不得不引入多个数据库产品,使得技术栈以及监控运维变得十分复杂。


虽然专用时序数据库在一定程度上满足了业务对于时序处理的需求,但也存在诸多问题,其中性能低、扩展性差的问题尤为显著。过去时序数据库大多是为数据中心的服务器监控、埋点数据处理等简单场景设计的,所以,其无法为物联网等场景下的大量数据源和大量指标提供支持。除此之外,开发效率低、需要 MPP 数据库或者大数据产品配合以及数据孤岛化等方面,都是摆在从业者面前的难题。

应运而生的超融合时序数据库


“我一直把数据库的技术演进和生物界的进化类比去看。”


从上世纪 60 年代诞生起,数据库技术就一直在不断地演进、迭代,其背后主要是两股力量在推动:一股力量是性能问题,另一股力量是效率问题。


上世纪七八十年代,关系型数据库开始独步天下,从业者主要是基于关系型数据库来高效存储和处理应用开发中用到的数据;到了 2000 年左右,数据规模大幅增长,而大数据处理技术尚未展露雏形,整个社会对于浩瀚信息的处理仍处于比较迷茫的阶段,以至于技术的迭代速度赶不上数据增长的速度。自此,大数据处理的性能问题开始显现,数据库领域随之出现了时序数据库、KV 数据库、文档数据库等专用数据库,以期解决性能从 0 到 1 的问题。但由于应用要与多个数据库沟通,从多个数据库读取数据到应用程序内存中再进行关联、聚集以及合并等计算,很多数据处理逻辑被迫只能放在应用中,开发和运维效率就不可避免地大打折扣。


如此一来,为了解决效率问题,行业中又出现了 Presto 等类型的产品,即在专用的数据库上封装一个查询引擎,试图把数据处理逻辑从应用处理逻辑中剥离出来。这种方式虽然在一定程度上解决了开发效率问题,但性能仍是短板,且并未从根本上解决技术栈复杂的问题。


我们可以看到,在进化了近 50 年后,现有的数据库技术已经不能满足从业者的需求 --- 他们需要更加简单易用、省心省力的数据库。在这样的背景下,为了能给用户提供简单易用的接口,真正实现数据平民化,姚延栋和他的团队将关系数据库、时序数据库和分析数据库融合在同一个数据库产品中,打造了全球唯一一款 PB 级超融合时序数据库 --MatrixDB


超融合时序数据库解决了什么问题?


目前,超融合时序数据库主要应用在两大场景:第一,时序、时空场景,通常是物联网、工业互联网、车联网和智慧城市等领域;第二,实时数据分析场景。


谈到时序、时空场景,姚延栋分享了一个海量设备、大量存储的典型物联网场景。“以一家做光纤和 5G 通讯设备的国际制造商为例,这家制造商大概有 1000 万台设备,每台设备每次都会采集 300 个指标数据,每次共计需要采集 30 亿指标。”基于这种情况下,MatrixDB 实现了超大规模数据的实时加载特性,在保证低延迟和高并发加载的同时,也减轻了系统资源消耗,充分将快速采集、高效存储的特性显示了出来,使得海量数据的存储问题、秒级采集的频率要求都能得到完美地解决。


在实时分析的特性方面,姚延栋又给出了另一个案例:在一个实时数据分析的业务中,MatrixDB 可以实现对 IT 运营域和 OT 生产域的数据收集,通过 ETL/CDC 和物联网协议插入数据以后,便能将两张网的数据整合在一起,使得公司的全部数据一目了然地展现。当企业再基于这些数据进行分析时,就能得到更加精准且全面的结论。



我们还注意到了 MatrixDB 的另一个重要特性——模块化和可插拔。专用时序数据库通常包含存储器和简单的执行器,没有优化器和并发控制等关系数据库经典组件。从本质上来看,它是把存储器“做成”了数据库,以此来解决一个特定的问题。而超融合时序数据库则是把存储器“做进”数据库,通过把各个核心功能做到模块化、可插拔,在一个关系数据库内部同时实现多种存储引擎,以及跨存储表关联和 ACID。比如有 200 张表,其中 190 张是关系型数据,这部分可以使用关系引擎存储;剩余 10 张是时序数据,就可以使用时序引擎存储,且它们可以相互关联。


与传统的关系数据库 + 专用时序数据库相结合的架构相比,通过支持多种存储引擎,超融合时序数据库可以让性能快 10-100 倍,同时大幅降低成本,提升开发运维效率。



令人惊喜的是,除了快速采集、高效存储、实时分析以及模块化和可插拔特性之外,我们注意到 MatrixDB 作为一款数据库产品,还提供了机器学习的能力。随着人工智能技术的飞速发展,In-Database Machine Learning 成为一个值得关注的方向,将机器学习的算法内置到数据库将逐渐成为主流。一方面,借助分布式数据库的并行计算能力,可以使计算速度超越单机;另一方面,由于单机上的内存有限,在数据量很大的情况下,只能抽样进行训练,模型精度就会变差。通过 In-Database Machine Learning 模式,就能实现在全量数据上训练,模型精度也将得到进一步提高。


“过去从业者需要自己写程序才能实现机器学习。”这是姚延栋提到的一个现象,并表示其中的技术门槛比较高。“目前,MatrixDB 数据库通过直接提供 SQL 接口,大大降低了机器学习的门槛,能够在一定程度上缓解人才稀缺的问题”。

下一步怎么走?


“未来我们会继续在性能和效率两个维度持续发力,并沿着更智能的方向去发展。”落实到具体的业务层面,姚延栋表示会在提升易用性、构建生态两个方面重点发力。


众所周知,数据库运维对于从业者来说是一个很大的挑战,也因此衍生出了数据库运维这个行业。尤其在分布式数据库环境中,节点数量多以及需求多样化的特点,使得运维的难度更是大幅增加。姚延栋表示:“今后,我们将继续致力于降低数据库的使用门槛,使数据库有能力提供自动性能调优、健康检查等功能。”


在构建生态方面,他也给出了更高层面的考虑。数据库是基础软件,没有人能够只使用数据库就解决业务问题,必须与很多周边产品搭配,才能发挥真正的价值。因此,对于数据库产品来说,生态的重要性不言而喻。“如果没有生态,我们相当于把复杂度问题扔给了用户,联合行业内上下游共建生态是我们接下来的方向”。


“数据库能定义未来记忆。”由于 MatrixDB 数据库更多应用于物联网、车联网、工业互联网和智慧生活等场景,姚延栋也与 InfoQ 谈到了他对于万物互联时代中数据库的理解,万物互联的目的是更智能化,而智能的前提是基于记忆,但事物本身是没有记忆能力的,如风力发电机、智能手环等等。“未来我们希望通过超融合时序数据库,赋予一些没有记忆能力的设备以记忆,为智能衍生出更多的可能性。”


万物互联时代的智能化到底会是什么样?这个问题还未有定论,仍然需要等待技术随着时代不断演进,不断进化才能得到答案。但可以肯定的是,在这之前先建立起事物的记忆能力,能够为不远的智能化时代奠定基础。


谈及数据库和四维纵横的未来,姚延栋希望能够让数据处理简单到像用电、用气、用水一样,把 MatrixDB 数据库打造成一个真正的一站式数据处理平台,让从业者在进行数据处理时,不再需要关心底层的数据存储以及计算的复杂性。这是四维纵横正在探索的方向,也是行业共同努力的终极目标。

2021 年 7 月 08 日 09:362041

评论

发布
暂无评论
发现更多内容

Nginx配置反向代理和负载均衡,疯狂java讲义pdf百度云

Java 程序员 后端

Redis 变慢了?那你这样试试,不行就捶我,mybatis工作原理图

Java 程序员 后端

RocketMQ ACL版本升级过程中的曲折经历(大厂线上环境大规模MQ升级开启ACL实战)

Java 程序员 后端

Sentinel:万字详解微服务的哨兵机制,我跪了,mysql编程入门教程

Java 程序员 后端

OpenYurt v0,linuxshell学习

Java 程序员 后端

redis数据迁移之redis-shake,java高级技术经理面试题

Java 程序员 后端

RPC服务和HTTP服务对比,java基础实验报告总结

Java 程序员 后端

Redis应用之缓存实现,java异步编程实战pdf

Java 程序员 后端

Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案

Java 程序员 后端

Redis常用命令总结,java项目实例教程详细

Java 程序员 后端

RPC框架编写实践——服务治理的基石,这位阿里P7大牛分析总结的属实到位

Java 程序员 后端

Nginx服务不行了怎么办,网商银行java面试

Java 程序员 后端

Red5搭建直播平台,java淘宝客教程

Java 程序员 后端

Redis 配置文件重要属性介绍,java面试项目经验

Java 程序员 后端

Redis源码剖析——客户端和服务器,springboot入门程序

Java 后端

Sentienl 动态数据源架构设计理念与改造实践,阿里P8大牛手把手教你

Java 程序员 后端

Servlet+JSP(七,java界面开发的三层架构技术

Java 程序员 后端

【架构实战营】模块三

Henry | 衣谷

架构实战营

Redis-数据库、键过期的实现,跟面试官侃半小时MySQL事务隔离性

Java 程序员 后端

Redis、MongoDB及Memcached的区别,老男孩linux运维54期视频

Java 程序员 后端

Redis-中会涉及那么多数据结构,那你数据对象的底层实现方式你都了解吗?

Java 程序员 后端

Redis分布式锁的原理以及如何续期,java程序设计实验实训教程答案

Java 程序员 后端

Seata 新特性,APM 支持 SkyWalking,java流式编程原理

Java 程序员 后端

P8级大佬整理在Github上45K+star手册,吃透消化,java算法面试题及答案pdf

Java 程序员 后端

Peter-Java 8中的Lambda表达式,java领域的相关技术领域

Java 程序员 后端

Redis 笔记之 Java 操作 Redis(Jedis),springcloud实战pdf

Java 程序员 后端

OpenFaaS实战之二:函数入门,mysql集群数据同步原理

Java 程序员 后端

Rpc与RMI服务,java面试笔试题代码

Java 程序员 后端

Oracle最新的Sql笔试题及答案,Java面试真题解析火爆全网

Java 程序员 后端

RabbitMQ不讲武德,发个消息也这么多花招,nginx实现负载均衡原理

Java 程序员 后端

Redis的各种用途以及使用场景,mybatis技术原理

Java 程序员 后端

撑起瞬时千亿交易额的云数据库是怎么炼成的?

撑起瞬时千亿交易额的云数据库是怎么炼成的?

将数据库性能提升100倍?大数据时代中,一位数据库老兵的创新之路-InfoQ