NoSQL爆炸时代,数据库的分类及使用场景怎样总结?

news/2024/6/17 2:11:40 标签: 数据库, nosql

十年前,人家问常见的数据库分类有哪些?问题比较好回答:分为关系型数据库和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进行明确的归类。

50434231a1c31369bc7fc045e62be8ca.png

最终,我放弃了将各种NoSq按照树形结构归类归纳的打算,这大概就是在这个NoSQL爆炸时代的典型特点:在扁平的结构中百家争鸣。

以下是暂时能分清楚的大类:数据库可以按照不同的标准进行分类,以下是一些常见的数据库分类及使用场景的总结:

  1. 按照数据模型分类:

  • 层次数据库:适用于需要表示层次结构数据的场景,如组织结构、目录结构等。

  • 关系数据库:适用于需要进行复杂查询和数据分析的场景,如企业应用系统、金融系统等。

  • 面向对象数据库:适用于需要将数据和操作封装在一起的场景,如面向对象的应用程序开发、工程设计等。

按照部署方式分类:

  • 传统数据库:部署在本地服务器上,适用于需要高度定制化、数据安全要求高的场景。

  • 数据库:部署在云平台上,适用于需要快速部署、弹性扩展、成本控制的场景。

按照数据处理方式分类:

  • OLTP数据库:适用于需要进行大量事务处理的场景,如银行交易系统、电子商务系统等。

  • OLAP数据库:适用于需要进行复杂分析和报表的场景,如数据仓库、商业智能系统等。

按照数据存储方式分类:

  • 关系型数据库:适用于需要使用SQL进行数据操作和管理的场景。

  • 非关系型数据库:适用于需要处理大数据、半结构化数据、高并发读写的场景。


http://www.niftyadmin.cn/n/5454646.html

相关文章

ubuntu20搭建Gitlab本地服务器(简洁版)

参考:ubuntu20搭建Gitlab本地服务器(简洁版)_ubuntu20安装gitlab-CSDN博客 Ubuntu 20.04安装配置GitLab_云服务器ubuntu20 gitlab-CSDN博客 gitlab下载地址:Index of /gitlab-ce/ubuntu/pool/focal/main/g/gitlab-ce/ | 清华大学开源软件镜像站 | Tsin…

亚马逊云科技:基于老服务器打造的旧实例类型

内容摘要: 2021年,距离第一个EC2实例上线已经十五周年了。 在漫长的开发过程中,很多EC2实例自然会基于旧服务器构建。 随着时间的推移,旧的服务器总是需要更换硬件,实例也得更换,但并不是所有的用户都想迁…

ClickHouse10-ClickHouse中Kafka表引擎

Kafka表引擎也是一种常见的表引擎,在很多大数据量的场景下,会从源通过Kafka将数据输送到ClickHouse,Kafka作为输送的方式,ClickHouse作为存储引擎与查询引擎,大数据量的数据可以得到快速的、高压缩的存储。 Kafka大家…

canvas画图历史记录撤销与恢复

提示&#xff1a;canvas画图历史记录撤销与恢复 文章目录 前言一、历史记录撤销与恢复总结 前言 一、历史记录撤销与恢复 test.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport…

加密/解密 PDF:使用Python为PDF文档设置、移除密码

在数字化时代&#xff0c;文档的安全性变得越来越重要。特别是对于包含敏感信息的PDF文件&#xff0c;确保其不被未经授权的人员访问或修改是至关重要的。本文将介绍如何使用Python在PDF文档中设置密码&#xff0c;以及如何移除已经设置的密码。 目录 PDF加密基础知识 Pytho…

如何在ArcGIS中查看栅格数据的值类型(整数或浮点数)

在 ArcGIS 中查看栅格数据的值类型&#xff08;整数或浮点数&#xff09;&#xff0c;您可以按照以下步骤操作&#xff1a; 1. **点击栅格单元格**&#xff1a; - 使用“信息”工具&#xff08;Identify Tool&#xff0c;通常是一个带放大镜和一个字母 i 的图标&#xff09…

微信小程序的页面交互练习——实现比较两数大小功能

前提&#xff1a;配置好页面后 一、在wxml里面搭建好框架&#xff1a; <navigation-bar title"Weixin" back"{{false}}" color"black" background"#FFF"></navigation-bar> <scroll-view class"scrollarea"…

TCP/IP:互联网通信的核心协议

引言 在当今数字化时代&#xff0c;互联网已经成为人类社会不可或缺的一部分&#xff0c;而TCP/IP协议则是支撑互联网运作的关键。无论是发送电子邮件、浏览网页&#xff0c;还是进行视频通话&#xff0c;TCP/IP协议都在背后默默地发挥着作用。本文将引领读者深入了解TCP/IP协…