【数据库】什么是关系型数据库和非关系型数据库

news/2024/11/7 22:38:42/

数据库分类

  • 关系型数据库
  • 非关系型数据库
    • 键值对存储数据库
    • 列存储数据库
    • 搜索引擎数据库
    • 面向文档数据库
    • 图形数据库
  • 数据库优缺点

应用程序都离不开数据库,那不同的数据结构,就会存放在不同的数据数据库中,所以数据库按数据结构分为关系型数据库和非关系型数据库。接下来就总结一下这两者的区别吧。
在这里插入图片描述

关系型数据库

关系型数据库呢就是把复杂的业务数据结构归结为二维表的形式展现,以MySQL为例如果我们要创建一个表的话可以使用DDL语句创建,如下:

CREATE TABLE `t_order` (`int` bigint(11) NOT NULL AUTO_INCREMENT,`user_id` bigint(20) DEFAULT NULL COMMENT '用户id',`product_id` bigint(11) DEFAULT NULL COMMENT '产品id',`count` int(11) DEFAULT NULL COMMENT '数量',`money` decimal(11,0) DEFAULT NULL COMMENT '金额',`status` int(1) DEFAULT NULL COMMENT '订单状态:  0:创建中 1:已完结',PRIMARY KEY (`int`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='订单表';

最终创建的二维表结构是这样的:
在这里插入图片描述
在关系型数据库中,对数据的操作应该都是基于数据表操作的,通常一个大型的系统都会有多个数据表组成。查询数据时候,会对一个或多个数据表进行关联查询。
那关系型数据库典型的产品有哪些呢?

MySQL,SqlServer,Oracle,PostgreSQL,SQLite等。

非关系型数据库

非关系型数据库根据应用场景分为:键值对数据库,列存储数据库,搜索引擎数据库,面向文档数据库等等。

键值对存储数据库

键值数据库就是使用简单的键值方法来存储数据,键值数据库将数据存储为键值对集合,键作为唯一标识付。比如我们常用的Redis,Memcached等。

列存储数据库

列数据库就是表中的数据以列为单位逐列存储在磁盘中,列存储主要解决数据查询问题。比如HBase产品就是列数据库。列存储是,每次读取的数据是集合的一段或者全部,不存储冗余性问题。

搜索引擎数据库

搜索引擎数据库是应用在搜索引擎领域的数据存储形式,当数据量大的时候,以特定的格式进行存储,这样检索的时候就会快速,系统性能就更好。典型的产品有:Elasticsearch,Solr等。

面向文档数据库

文档数据库就是存放的文档,就是以值可以查询的键值数据库,比如:MongoDB,couchDB等数据库

图形数据库

是一种存储图形关系的数据库,它应用图形理论存储实体之间的关系信息。如果关系型数据库存储复杂的话,就是要用图形数据库来解决问题了。常见产品:Neo4j,InfoGrid等

数据库优缺点

MySQL优缺点:

  • 性能好,服务稳定,很少出现异常宕机现象。
  • MySQL软件体积较小,安装使用简单,维护成本低。
  • MySQL支持多种操作系统,提供各种API接口,支持多种开发语言,而且源代码开放无版本制约。
  • 唯一的缺点是数据量大的时候性能没有Oracle。

Oracle优缺点:

  • Oracle大数据量时性能高,能在所有主流平台上运行。
  • Oracle获得最高认证级别的ISO标准认证。
  • Oracle缺点就是价格昂贵。

Redis优缺点:

  • 支持基于内存缓存。
  • 支持持久化存储,基于RDB和AOF。
  • 支持的数据类型丰富,string,list,set,hash,Zset等。
  • 支持主从集群,订阅,队列,分布式锁等等。

HBase优缺点:

  • 1.适用于存储半结构化或非结构化数据。
  • 2.支持高可用和海量数据以及很大的数据量瞬间写入
  • 3.为null的column数据不会被存储,这样节省空间又提高了读性能。
  • 4.缺点就是不适用于大范围查询,也不支持sql语句查询。

在实际开发过程中数据库的使用都是根据项目的业务需求来选择合适的数据库。选择了正确的数据,就会提高系统的性能。就会出现好的产品,就能为企业创造价值。


http://www.ppmy.cn/news/11454.html

相关文章

Jetpack Compose中的startActivityForResult的正确姿势

之前在 Jetpack Compose中的导航路由 里简单的提到了从 Compose 导航到其他 Activity 页面的方式,对于不带返回结果的则就是跟以前一样简单的启动Activity的代码,而如果是startActivityForResult方式的,需要使用带回调的方式去启动&#xff0…

C++ 居然超过了 Python?

很难想象,从 1983 年被正式命名开始算起,已经走过整整四十年光阴的 C,居然力挫 C、Python,摘得了 TIOBE 2022 年度编程语言的桂冠。据 TIOBE 官网显示,在过去一年里,C 因为涨幅最大,为 4.62%&am…

Win10专业版系统Docker安装、配置和使用详细教程

一、win10专业版系统首先需要开启硬件虚拟化及Hyper-V功能,才能进行Docker for Windows软件安装。 如何开启硬件虚拟化,自行百度。可在任务栏中查看虚拟化是否开启。 win10系统,打开控制面板-“应用”-“程序和功能”,开启Hyper-V…

华中科技大学计算机组成原理-计算机数据表示实验(全部通关)

计算机数据表示实验(HUST) 计算机数据表示目录 [建议收藏]计算机数据表示实验(HUST)第1关 汉字国标码转区位码实验第2关 汉字机内码获取实验第3关 偶校验编码设计第4关 偶校验解码电路设计第5关 16位海明编码电路设计第6关 16位海明解码电路设计第7关 海明编码流水传输实验第8关…

如何计算结构体的大小?结构体内存对齐【C语言】

今天我们来讲讲结构体的大小如何来计算 其中涉及到一个结构体中的热门考点:结构体内存对齐 话不多说,开始学习! 要想计算结构体的大小,首先要了解结构体的对齐规则。 目录 结构体内存对齐规则 举例 为什么存在内存对齐? 如…

Spring Boot 日志详解

Spring Boot 日志一、日志有什么用二、日志怎么用三、自定义日志打印3.1 在程序中得到日志对象3.2 使用日志对象打印日志四、日志级别4.1 日志级别有什么用4.2 日志级别的分类与使用4.3 日志级别设置五、日志持久化5.1 配置文件名5.2 配置保存路径六、更简单的日志输出 -- lomb…

python直接赋值、浅拷贝与深拷贝

本文主要参考这篇博文python浅拷贝与深拷贝 基本概念 首先了解python中的一些基本概念 变量:是一个系统表的元素,拥有指向对象的连接空间对象:被分配的一块内存,存储其所代表的值引用:是自动形成的从变量到对象的指…

118页4万字智慧检务大数据平台解决方案

【版权声明】本资料来源网络,知识分享,仅供个人学习,请勿商用。【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间删除!完整资料领取见文末,部分资料内容: 目录 第1章 前言 1.1、 政策背…