
关系数据库(Relational Database)诞生至今已有50年之久,ORACLE,SQL Server,MySQL等主流数据库都是关系数据库。时至今日,常常有各种新型的数据库或者数据管理框架被发布,并号称是未来的数据库,想要取代关系数据库的地位,如Key Value Store, Document Database和Graph Database等,而这些新型数据库虽各有优势,却始终未能彻底取代关系数据库的核心地位。
键值存储(Key Value Store)是很简单的数据库类型,它通过“键”来查询对应的“值”,每一条“键值对”都是独立的存在。它最常见的使用场景就是缓存,因为缓存的业务逻辑直截了当,也是根据“键”来查询“值”。由于键值存储的数据结构简单,它很适合做成in-memory(将数据存储和计算都放在内存中完成)的形式,得益于这一特性,Redis 这类键值存储数据库在缓存场景中大放异彩。获得成功的Redis不满足于仅仅适用于缓存场景,而开发了很多新功能和新的数据结构,但也都是对关系数据库现有方案的模仿,并且在实际的缓存以外的场景中运用时总是会带来一些意想不到的麻烦。
文档数据库(Document Database)是以文档为单位储存数据的,这些文档以XML或JSON格式为主。这类数据库最有名的就是以NoSQL为噱头的MongoDB,然而它早期连数据库最基本的数据库事务的四大特性(原子性,一致性,隔离性和持久性)都做不到。MongoDB认为关系数据库的事务,连表,模式和SQL语句都是数据库的负担,而MongoDB没有这些。但 MongoDB 早期曾多次被曝光存在数据丢失问题。
图数据库(Graph Database)用点(实体信息)和线(关系信息)的形式来存储数据,它的优势在于同样以关系串联数据的情况下,它的自由度比关系数据库更高。然而,它的一个重大缺陷是长期缺乏统一的查询语言,直到 2023 年 ISO/IEC 正式发布 GQL(Graph Query Language)国际标准(ISO/IEC 39075:2023),这一问题才得以解决。
这些关系数据库的挑战者,核心问题并非‘有短板’,而是多数仅在单一场景具备优势,且技术壁垒不足以覆盖关系数据库的全面能力,它们只是率先挖掘出了某个市场需求。然而关系数据库不仅能轻松满足这些需求,并且因为拥有更扎实的基础,关系数据库能够做出更好的效果。