十年前,人家问常见的数据库分类有哪些?问题比较好回答:分为关系型数据库和NoSQL。NoSQL又可以分成键值数据库、列族数据库、文档数据库和图数据库。每种数据库举个例子,回答就很完美:有层次、有结构、有内容。
这个时代,NoSQL已经不止这四种,维度在增多:AI大火,对应用的多是向量数据库;可观测大火,对应用的多是时序数据库;还有用于存储和处理 地理空间数据的空间数据库;还有一种新型数据库,面向对象数据库。这4种数据库和传统的四种数据库并不在同一个维度。
《金字塔原理》里提出,当大脑要处理的项目超过4个或5个时就要对它进行归类分组。NoSQL要分成键值数据库、列族数据库、文档数据库、图数据库、向量数据库、时序数据库、空间数据库和面向对象数据库。已经是8种。但最关键的是这样分有没有遗漏。答案是肯定的。举个例子:zookeeper是个树形文件系统,理解成一个小型数据库一点问题也没有。但它却不属于上面提到的任何一种。所以,我们需要从数据组织方式这个角度暂时抽离出来,换个角度。
根据CAP原则分类
CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
关系型数据库是满足AC的。满足ACID,自然也满足AC。关系型数据库以表格形式存储数据,SQL为操作语言,如MySQL、Oracle、SQL Server等。特点是可以对数据进行高度组织、分类、筛选,并能够等值查找。适用于数据维护强一致性,结构变化少的应用场景。SQL数据库最大的挑战是扩展性方面的挑战。
键值数据库大多是满足AP的,具有很高的性能及扩展性。
zookeeper、文档型数据和列族数据库大多是满足CP的,但要说通用的优势还真是很难总结。最大的问题是剩下的这些数据库:图数据库、向量数据库、时序数据库、空间数据库和面向对象数据库是属于AP还是CP?看怎么用了。所以按照CAP原理来分数据库并不准确。只是和人家聊天,人家说CP的数据库、AP的数据库各举个例子,都用在什么场景,这时候要知道典型的AP和CP数据库有哪些。
按照应用分类:
- OLTP数据库(Online Transaction Processing Database):用于处理实时交易和事务处理的数据库,适合高并发、频繁插入、更新和删除操作。
- OLAP数据库(Online Analytical Processing Database):用于进行复杂的数据分析和查询的数据库,适合大规模数据的查询和多维分析。
但同样面临的问题是一种NoSQL数据库到底是OLAP还是OLTP,下面是网上找的一张图,也没有对NoSQL进行明确的归类。
最终,我放弃了将各种NoSq按照树形结构归类归纳的打算,这大概就是在这个NoSQL爆炸时代的典型特点:在扁平的结构中百家争鸣。
以下是暂时能分清楚的大类:数据库可以按照不同的标准进行分类,以下是一些常见的数据库分类及使用场景的总结:
按照数据模型分类:
层次数据库:适用于需要表示层次结构数据的场景,如组织结构、目录结构等。
关系数据库:适用于需要进行复杂查询和数据分析的场景,如企业应用系统、金融系统等。
面向对象数据库:适用于需要将数据和操作封装在一起的场景,如面向对象的应用程序开发、工程设计等。
按照部署方式分类:
按照数据处理方式分类:
按照数据存储方式分类: