数据库的类型

一说到数据库,大多数人可能像我一样,首先想到的就是 MySQL、Oracle 这样的关系型数据库。因为我们平时接触的最多,而且大学课程中有关于数据库的,也是以关系型数据库为主的。

其实,除了关系型数据库外,还有其他类型的用作数据存储的结构,也可以叫做数据库。有些我们平时也经常用到,有的呢,需要做到具体的业务才会接触。

接下来,我们就总结一下到底有哪些数据库类型。

关系型数据库

像MySQL、PostgreSQL、Oracle 都是关系型数据库,在关系型数据库中,表和表之间是存在关系的。例如用户表和订单表这两张表,订单表中一般会有一个用户ID的字段,用来表示这个订单是哪个用户产生的。

在关系型数据库中,一个表中,包含多个列(字段),每一个列都有指定的字段类型。每一条记录就是一行。

关系型数据库通常遵循ACID属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),以确保数据在各种情况下都能够保持正确状态。

在关系型数据库中,我们才会用到 SQL 语句,使用各种各样的关键字、规则等,用来实现各种各样的业务操作。

Key-Value 型数据库

Key-Value 型的数据库中我们最熟悉的就是 Redis了。这是一种 NoSQL,这种类型的数据库结构比较简单,就是一个键对应一个值,当然,值的类型可能有很多。

由于结构简单,所以这种类型的存储可以有很高的读取写入速度,所以对读写性能要求比较高的环境可以用 key-value型的数据库。

通过 Redis 的使用场景,我们也能知道,这种数据库多用来做内存型数据库,处理高并发场景,例如应用缓存。

文档型数据库

同样是一种 NoSQL,这里所说的文档指的是结构化的数据,例如 JSON或 XML,最熟悉的就是 MongoDB了,它以 JSON 作为存储数据的格式。

我们平时在开发接口的时候,传给前端的都是 JSON 数据。使用文档型数据库,你就可以把传给前端的JSON内容直接存到数据库中,这样的一条记录叫做一个 Document。

例如一个商品详情页,商品的属性有很多,关联的内容也有很多,我们可以把这些内容直接存储成一个 Document。

不同的商品种类有不同的属性,例如电脑和书的属性大相径庭,对应的它们的属性字段也就不一样,不光是属性的值不一样,连属性的个数都不一样,对于这种结构多样性的数据,用文档型数据库就最合适了。

纵列数据库

大多数数据库都是按行存储的,一行包括多个字段。而纵列数据库呢,是按列存储的。

这样一来,每一列都是一个独立的数据结构。带来的好处就是,我们可以选择性的获取某一列或某几列数据,查询读取的速度是非常快的。

纵列数据库适用于需要对一组列进行聚合、筛选和计算的分析查询,应用于大数据量的场景。

所以,纵列数据库常见于一些大型的数据仓库,平时如果业务不涉及的话, 我们很难接触到。

图数据库

图数据库以图(Graph)的形式来表示数据,并且强调数据之间的关系和连接。图数据库适用于需要处理复杂的关系和连接的应用场景,例如社交网络分析、推荐系统、知识图谱、地理信息系统等。

图数据库允许在节点、边和属性之间建立复杂的关系,这使得它们能够有效地处理大量的关联数据。

图数据库这种特殊的结构非常适合复杂关系的查询,例如查找两个节点之间的最短路径、查找共同的邻居等。结合到社交网络中来看,可以查询两个人的共同好友、共同关注等等。

比较流行的图数据库有 Neo4j 、Amazon Neptune等。

时间序列数据库

时间序列数据库是一种专门用于存储、管理和分析时间相关数据的数据库类型。它们专注于处理时间序列数据,这是一系列按时间顺序排列的数据点或事件,通常在相等的时间间隔内采集。时间序列数据库适用于各种应用场景,如监测、传感器数据、金融数据、日志记录、网络流量分析等。

时间序列数据库以时间作为主要的索引方式,而且写入性能极高。就拿传感器和日志来说,这些都是高频操作,一个流量高的系统,每天产生的日志量是非常大的,所以必须要快,不快就麻烦了。

我们的系统中通常都会有日志监控平台,比如 Grafana ,有各种指标图表,以及方便的检索方式, Grafana 是一个可视化的平台,需要接入数据源,而数据源一般就是时间序列数据库,例如 InfluxDB。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/110140.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为云Stack的学习(三)

四、华为云Stack公共组件 1.华为云Stack公共负载均衡方案介绍 1.1 LVS原理 LVS是四层负载均衡,建立在OSI模型的传输层之上,所以效率非常高。 LVS有两种转发模式: NAT模式的转发主要通过修改IP地址(位于OSI模型的第三层网络层&…

GFPGAN 集成Flask 接口化改造

GFPGAN是一款腾讯开源的人脸高清修复模型,基于github上提供的demo,可以简单的集成Flask以实现功能接口化。 GFPGAN的安装,Flask的安装请参见其他文章。 如若使用POSTMAN进行测试,需使用POST方式,form-data的请求体&am…

随机化快速排序(Java 实例代码)

随机化快速排序 一、概念及其介绍 快速排序由 C. A. R. Hoare 在 1960 年提出。 随机化快速排序基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数…

jupyter notebook 插件nbextensions的安装

安装步骤: 1、打开 jupyter notebook,新建一个 python 文件; 2、 分别输入以下代码,然后运行,出现 warning 不影响使用,如果出现 errors,则说明下载有问题: !python -m pip install…

【注册岩土】Python土力学与基础工程计算.PDF-土中的应力

Python 求解代码如下: 1.#计算竖向有效自重应力2.h12#m3.h21.5#m4.h31#m5.gamma1 19# kN/m^36.gamma218# kN/m^37.gamma317# kN/m^38.sigma_c gammal * h1 gamma2*h2 gamma3 *h39.print("竖向有效自重应力…

指针进阶详解

个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.字符指针 2.指针数组 3.数组指针 4.数组传…

设计模式(一)

1、适配器模式 (1)概述 适配器中有一个适配器包装类Adapter,其包装的对象为适配者Adaptee,适配器作用就是将客户端请求转化为调用适配者中的接口;当调用适配器中的方法时,适配器内部会调用适配者类的方法…

加密的PDF文件,如何解密?

PDF文件带有打开密码、限制编辑,这两种密码设置了之后如何解密? 不管是打开密码或者是限制编辑,在知道密码的情况下,解密PDF密码,我们只需要在PDF编辑器中打开文件 – 属性 – 安全,将权限状态修改为无保护…

React常见面试题

文章目录 1.1、React生命周期1.2、JSX1.3、类组件和函数组件1.4、react组件设计模式1.5、高阶组件1.6、setState的同步异步1.7、调用setState后会发生什么1.8、组件通信1.9、虚拟DOM、diff算法、key的作用1.10、什么是 React1.11、react渲染流程1.12、React Router常用API1.12、…

2023年7月京东护发市场数据分析(京东数据产品)

如今,与面部护肤相比,多数消费者认为头皮也需要认真对待,这在年轻消费群体中体现的较为明显。 随着消费者对护发理念的认同感不断加深,人们日常居家洗护的步骤也更加精细、使用产品品类也愈加多样化。除传统的护发素、发膜等护发…

TinyVue - 华为云 OpenTiny 出品的企业级前端 UI 组件库,免费开源,同时支持 Vue2 / Vue3,自带 TinyPro 中后台管理系统

华为最新发布的前端 UI 组件库,支持 PC 和移动端,自带了 admin 后台系统,完成度很高,web 项目开发又多一个选择。 关于 OpenTiny 和 TinyVue 在上个月结束的华为开发者大会2023上,官方正式进行发布了 OpenTiny&#…

大数据Flink(六十九):SQL 数据类型

文章目录 SQL 数据类型 一、原子数据类型 二、​​​​​​复合数据类型 SQL 数据类型 在介绍完一些基本概念之后,我们来认识一下

Flutter可执行屏幕动画的AnimateView

1.让动画使用起来就像使用widget。 2.可自定义动画。 3.内置平移动画。 演示: 代码: import dart:math; import package:flutter/cupertino.dart;class AnimateView extends StatefulWidget {///子Widgetfinal Widget child;///动画自定义final IAnimate? anim…

自实现getprocaddress(名称查找或者序号查找)

通过名称去找 // MyGETPRCOADDRESS.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //#include <iostream> #include<Windows.h>/*WINBASEAPI //导出不需要使用&#xff0c;那么我们注释掉*/ FARPROC WINAPI MyGetProcAddress(_In_ HMO…

AIGC - 生成模型

AIGC - 生成模型 0. 前言1. 生成模型2. 生成模型与判别模型的区别2.1 模型对比2.2 条件生成模型2.3 生成模型的发展2.4 生成模型与人工智能 3. 生成模型示例3.1 简单示例3.2 生成模型框架 4. 表示学习5. 生成模型与概率论6. 生成模型分类小结 0. 前言 生成式人工智能 (Generat…

面试中的代码写作:如何撰写清晰、高效的示例代码

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

软考A计划-网络工程师-常用计算公式汇总

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

Zabbix 5.0 媒体介质 邮箱配置例子

QQ企业邮箱 参考&#xff1a;zabbix 腾讯企业邮箱配置图_harveymomo的博客-CSDN博客

分布式计算框架:Spark、Dask、Ray

目录 什么是分布式计算 分布式计算哪家强&#xff1a;Spark、Dask、Ray 2 选择正确的框架 2.1 Spark 2.2 Dask 2.3 Ray 什么是分布式计算 分布式计算是一种计算方法&#xff0c;和集中式计算是相对的。 随着计算技术的发展&#xff0c;有些应用需要非常巨大的计算能力才…

python web GUI框架-NiceGUI 教程(二)

python web GUI框架-NiceGUI 教程&#xff08;二&#xff09; streamlit可以在一些简单的场景下仍然推荐使用&#xff0c;但是streamlit实在不灵活&#xff0c;受限于它的核心机制&#xff0c;NiceGUI是一个灵活的web框架&#xff0c;可以做web网站也可以打包成独立的exe。 基…