数据库的发展是伴随着计算机体系架构的发展而不断演进的,从主机,到个人电脑 + 网络(x86),到现在的云服务,数据库也经历了一系列的演化历程。
a. 主机时代
最初的计算机和数据库只是在航空航天、军事领域使用,只需要支持专业的数据分析人员进行数据分析。到了上世纪 70 年代末,伴随着计算机进入更多商业场景,大量数据分析的需求产生了,数据库则需要面对更为普遍的用户需求。在 IBM 最早发布的关系型数据库的论文中,最强调的一点就是希望能够让数据库的用户不用再去操心数据应该如何存储和组织,而能够高效率使用这些数据进行分析。
为了方便用户的使用,SQL(结构化查询语言)被定义了出来,按照这样的语法,数据库用户只需要关注数据该如何分析,不需要关注底层的数据分布和存储等。
为了要支持大量用户的并发数据操作,数据库事务特性被定义了出来,保证在并发的数据操作下,用户能够看到符合业务逻辑的数据内容。
为了保证数据库的高效率和安全性,数据库重做日志(事务日志)被设计出来,包括当前数据库中经常出现的一系列概念,比如回滚日志(undo log)、提交日志(commit log)、检查点(checkpoint)等等。
主机时代的硬件成本极其昂贵,不论是存储、内存还是CPU资源,相对来说都很稀缺。那么,数据库在设计和使用上就会采用各种算法和架构来降低对内存的使用,减少数据的冗余,提高数据的检索效率。因此,各种数据索引类型,功能强大的查询优化器,数据缓存算法等在数据库中得到了极大的发展。同时在使用数据库时,也要对数据进行各种复杂的模型设计(三范式模型、星型模型、雪花型模型等等)以降低数据的冗余程度,当然,这样也会增加数据库应用的开发难度。
b. x86 时代
伴随着 x86 服务器的广泛使用和网络技术的发展,把 N 台 x86 服务器通过网络组建成一个集群,利用这个集群的计算、存储能力来取代昂贵的主机也就更加具有性价比。在这种趋势下,也就设计出了各种能够使用集群能力的分布式数据库系统,这些系统的核心思想就是把数据分散在不同的节点上,利用多个节点的计算和存储资源提高对数据的存储和分析能力。在分布式的处理架构下,数据一致性协议、多副本机制、高可用机制、数据分片机制、扩容/缩容机制等等也都成为了分布式数据库必须要设计和解决的问题。
在 x86 时代,由于硬件成本的大幅下降,用户更多关注数据分析的灵活性和交付的效率。因此,使用数据库时更多会关注如何加快数据分析的过程、如何让数据更易于人类理解,而不需要为了降低数据的冗余而进行复杂的模型构建。
随着技术的进一步发展,通过把传统硬件虚拟化/容器化等技术,提高硬件资源的使用效率,降低生产运维成本的云服务被越来越多企业采用。为了更好地适应云服务的技术体系,数据库也设计出了相关的云特性,比如存储计算分离、弹性伸缩、微服务化、跨域数据同步等等。
云时代,用户更加关注数据分析的效率和投入产出比,更加关注产品是否能够提供便利的一体化数据处理服务,让业务开发者能够更加专注于业务本身,而数据库服务也在朝着标准化云服务的方向不断演进。
d. 展望
不同的数据库架构和部署方式不是一个简单的迭代和取代的关系,而是在很长一段时间里会同时存在并且逐步迭代的过程。时至今日,依然有不少金融机构会选择使用在主机上的数据库产品,只是新的业务和场景非常有限。而基于 x86 服务器的数据处理产品,还是当前企业数据库的主流选择。与此同时,云数据库的市场份额也在逐步增长和扩大。采用何种数据库产品要根据自身的业务需求来决定,合适的就是最好的。当然从技术演进的方向上看,云技术(包括公有云和私有云)会是大势所趋,因为云能够提供更高的效率。
数据库作为信息产业的三大基础技术(还有芯片和操作系统)之一,在相当长的时间里,不论从资本还是技术方面都非常火热,国内近几年来也出现了相当多优秀的数据库产品和企业。在人类迈向数字化文明的进程中,必定会产生越来越多的数据,也需要从数据中挖掘出更多的价值,而数据库作为承载数据的核心,也必将持续发挥重要作用。有幸一直在从事这个领域的工作,期待与广大同仁一道为人类数字化技术的进步贡献力量。
Zilliz 以重新定义数据科学为愿景,致力于打造一家全球领先的开源技术创新公司,并通过开源和云原生解决方案为企业解锁非结构化数据的隐藏价值。 Zilliz 构建了 Milvus 向量数据库,以加快下一代数据平台的发展。 Milvus 数据库是 LF AI & Data 基金会的毕业项目,能够管理大量非结构化数据集,在新药发现、推荐系统、聊天机器人等方面具有广泛的应用。