Skip to content

数据库管理系统

更新: 2025/2/24 字数: 0 字 时长: 0 分钟

前言

随着社会向着智能化的道路发展,越来越多的工作都要依靠计算机来执行完成。在使用计算机的过程中,很多数据都是临时存储在了内存当中,然而内存是一种断电就无法保存数据的存储介质。通俗点讲,就是当计算机关机断电后,内存里面的数据就没有了。如果希望长久的保存数据,也就是数据持久化,就需要将数据保存在断电也能保存数据的存储介质当中。通俗点讲,就是将数据保存到硬盘中,常用如下两种方案:

  • 方案一:通过文件来保存数据。通过读写 .txt 文件、.json 文件、.xlsx 文件、.csv 文件等,来帮我们实现数据的持久化。
  • 方案二:通过数据库来保存数据。通过数据库来实现数据的持久化,而且还能通过数据库管理系统便捷的管理数据。

有人会说,用 Excel 保存数据很方便,因为它有行有列,我们可以把数据填到单元格里面,而且还可以在里面做一些数据分析、数据可视化的高级操作。既然文件能实现数据的持久化,那么学习数据库的意义在哪里呢?虽然 Excel 可以很方便的保存数据,但在许多使用场景中存在局限性,例举如下三个场景:

  • 不检查无效数据:当我们向 Excel 录入老人年龄时,不小心手一抖多按了一个 0,将老人 80 岁的年龄,录入为了 800 岁,在默认情况下 Excel 是不会给我们任何提示的。

  • 不检查重复数据:当我们向 Excel 写入数据的过程当中,假如有一条数据之前已经写入过了,但是我们忘记写入过,于是把重复的数据又写入了一遍,在保存的时候,默认情况下 Excel 也是不会给我们任何提示的。

  • 复杂查询效率低:当 Excel 中的数据量特别大,而且有多个 Sheet 工作簿的情况下,假如我们希望进行多个条件的筛选并且进行联表查询时,即使 Excel 也能完成这种复杂查询,但操作起来会非常的麻烦、复杂,而且效率也会非常的低下。

这里我们就可以回答上面的问题了,虽然通过读写文件也能实现数据的持久化,但在数据管理方面远远不如数据库的便捷、高效,这就是我们学习数据库的意义

数据库介绍

数据库(DataBase,简称 DB)是一个按照数据结构来组织、存储和管理数据的仓库。理解数据库最简单的办法就是将数据库想象为一个文件柜,文件柜里面整整齐齐的摆放着文件夹,文件夹里面就保存着数据。

timg

数据库管理系统(Database Management System,简称 DBMS)是一种操纵和管理数据库的大型软件,用于管理和控制数据库,以保证数据库的安全性和完整性。用户通过 DBMS 访问数据库中的数据,数据库管理员也通过 DBMS 进行数据库的维护工作。

图片1

[!Improtant]

人们通常用数据库这个术语来代表他们使用的数据库管理系统(DBMS),这其实是不准确的,因为你并不直接访问数据库,而是使用 DBMS 来替你访问数据库。

关系型

关系型数据库(Relational Database)是指采用了关系模型来组织数据的数据库。这个关系模型可以简单理解为二维表格,使用行和列的形式存储数据,这一系列的行和列被称为表(Table),一组表及其之间的关系所组成的一个数据组织就是一个关系型数据库

img

类型特点

关系型数据库具有以下特点:

  • 结构统一:所有关系型数据库的关系模型都是由行和列所组成的二维表结构,而且相对网状数据库、层次数据库的关系模型来说更容易理解。
  • 语言通用:关系型数据库基本都支持结构化查询语言(SQL),因此在熟悉 SQL 的情况下,操作关系型数据库非常方便。
  • 强一致性:关系型数据库十分强调数据的强一致性,对于事务的操作有很好的支持,可以控制事务原子性细粒度,并且一旦操作有误或者有需要,可以马上回滚事务。
  • 性能下降:关系型数据库十分强调数据的一致性,虽然在存储数据和处理数据的可靠性很不错,但在处理海量数据的时候,效率就会变得很差,特别是遇到高并发读写的时候,性能会下降的非常厉害。

相关产品

Oracle 是美国甲骨文公司的一款关系型数据库管理系统,它不仅拥有完整的数据管理功能,并且实现了分布式处理功能。‌由于其系统可移植性好、使用方便、功能强、效率高、可靠性好、吞吐量高,成为了目前世界上使用最为广泛的数据库管理系统。不过由于总体拥有成本较贵,因此一般都是大型企业(银行系统、证券系统)在使用。

QQ截图20201110235137

MySQL 最早是由瑞典的 MySQL AB 公司开发的一个关系型数据库管理系统。由于其性能高、成本低、可靠性好,成为了目前世界上最流行的数据库管理系统,一般中小型网站的开发都选择它来管理网站数据。

MySQL

提醒

在 2008 年,MySQL AB 公司被昇阳微系统(Sun Microsystems)收购。在 2009 年,甲骨文公司(Oracle)收购昇阳微系统公司,因此 MySQL 现在是 Oracle 旗下产品。

SQL Server 由 Microsoft 开发和推广的一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的关系型数据库管理系统。由于其实现了与 Windows NT 的有机结合,提供了基于事务的企业级信息管理系统方案,最初适用于中小企业的数据管理,但近年来它的应用范围有所扩展,部分大企业甚至是跨国公司也开始基于它来构建自己的数据管理系统。

sqlserver

提醒

虽然 SQL Server 最初是为 Windows 平台设计的,并且在 Windows 平台上运行得最为普遍和稳定。然而,随着技术的发展,Microsoft 也提供了 SQL Server 的其他版本,使其能够在 Linux 和 macOS 等操作系统上运行。

DB2 是美国 IBM 公司开发的一套关系型数据库管理系统。由于其具有较好的可伸缩性,可支持从大型机到单用户环境,因此主要运行于常见的服务器操作系统平台下,例如 UNIX(包括 IBM 自家的 AIX)、Linux、以及 Windows 服务器版本。

QQ截图20201111000254

提醒

DB2 历史悠久且被认为是最早使用 SQL 的数据库产品,它拥有较为强大的商业智能功能。

PostgreSQL 是加州大学计算机系开发的一个在 BSD 许可证下发行的开放源代码的关系型数据库管理系统。它支持大部分的 SQL 标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。

postgresql

SQLite 是一款开源的遵守 ACID 的轻型关系型数据库管理系统。它的设计目标是嵌入式的,不需要运行一个独立的服务器进程或操作系统级别的守护进程 ,而是直接读写存储在磁盘上的数据库文件。因此 SQLite 资源占用非常的低,可能只需要几百K的内存就够了,这使得 SQLite 成为嵌入式系统和应用程序的一个理想选择,特别是那些对数据库需求不高但需要关系数据库特性的场景。

SQLite

警告

SQLite 虽然在处理小到中等规模的数据集时非常高效,但在并发访问量较大时其性能可能会受到限制,这主要是因为 SQLite 的锁机制较为简单,在高并发场景下可能会导致性能瓶颈。因此,在需要高并发访问或处理大规模数据的场景下 SQLite 可能不是最佳选择

非关系型

非关系型数据库(Not Only SQL,简写 NoSQL)

非关系型数据库的设计初衷是为了解决关系型数据库在处理大规模数据集、高并发读写操作、以及数据结构灵活变化等场景下的性能瓶颈和扩展性问题。 将非关系型数据库视为“一种数据结构化存储方法的集合”也是合理的。每种非关系型数据库(如Redis、MongoDB、Cassandra、Neo4j等)都提供了不同的数据结构化存储和访问方法,这些方法往往比关系型数据库的表结构和SQL查询语言更加灵活和高效,特别是在处理特定类型的数据和查询模式时。 因此,虽然非关系型数据库与关系型数据库在设计和实现上有所不同,但它们都是用于存储、管理和检索数据的系统,只是方法和应用场景有所区别。

类型特点

非关系型数据库具有以下特点:

  • 结构多样:支持多种数据结构和数据模型,包括但不限于键值存储(如 Redis、Memcached)、文档存储(如 MongoDB、Couchbase)、列存储(如 Cassandra、HBase)、图数据库(如 Neo4j)等。
  • 扩展性强:非关系型数据库没有关系型数据库的关系型特性,即数据之间无关系,这样就非常容易扩展,而且无形之间也在架构的层面上带来了可扩展的能力(分布式)。
  • 读写高效:得益于数据之间的无关系性,无需经过 SQL 层的解析,非关系型数据库通常都具有非常高的读写性能,尤其是在大数据量、高并发场景下,同样表现优秀。
  • 查询低效:非关系型数据库没有标准的查询语言(SQL),而且数据之间也无关系性,所以部分非关系型数据库不支持复杂查询,就算能进行复杂查询,在效率上也不如关系型数据库来的高效了。
  • 缺乏 ACID:非关系型数据库缺乏 ACID 特性,即非关系型数据不保证事务的正确可靠。因此,在选择使用关系型数据库还是非关系型数据库时,需要根据具体的应用场景和需求进行权衡。

这些数据库系统通常不遵循传统的关系型数据库模型(如表格、行、列),而是采用更适合特定应用场景的数据模型。 非关系型数据库管理系统的优势包括:

关系型数据库(如MySQL、PostgreSQL等)在多个方面存在显著差异。非关系型数据库不是基于表结构(table-based structure)和SQL(Structured Query Language)查询语言来存储和检索数据的。相反,它们通常使用键值对(key-value pairs)、文档(documents)、列族(column families)、图(graphs)或其他非表结构化的模型来存储数据。

建议

非关系型数据库管理系统(如 MongoDB、Redis 等)与传统的关系型数据库管理系统(如 MySQL、PostgreSQL、Oracle 等)在设计和实现上有所不同,主要是为了处理大量数据、提供高并发访问、以及灵活的数据模型等需求。

相关产品

MongoDB 是一个由 C++ 语言编写的基于分布式文件存储的非关系型数据库管理系统,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。其功能丰富,支持的数据结构非常松散类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。而且它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

mongodb

Redis 是一个用 C 语言编写的、基于内存的、可持久化的、高性能的使、Key-Value完全开源免费的数据库。由于其数据放在内存,因此读写非常快(辅助存储用作缓存,也可持久存储),但对内存要求高。

Redis

术语缩写

在上面介绍数据库时,我们频繁的提到了两个术语,一个是 SQL,另一个是 ACID,这里详细进行介绍。

SQL

ACID

ACID,是指数据库管理系统(DBMS)在写入或更新数据的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性:原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)、持久性(durability)。

**数据库**中的事务是一系列操作,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。**12

事务(Transaction)在数据库管理中扮演着至关重要的角色,它确保了一系列数据库操作的完整性。这些操作通常包括对数据的读、写或修改,并且必须满足所谓的ACID属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

  • 原子性:确保事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生,没有中间状态。
  • 一致性:保持事务前后数据的完整性,确保在事务执行过程中,数据的修改符合所有定义的约束,从而保持数据的一致性和完整性。
  • 隔离性:多个事务并发执行时,一个事务不应影响其他事务。这意味着一个事务所做的修改对其他并发事务是不可见的,直到该事务被提交。
  • 持久性:一旦事务被提交,它对数据库中所做的修改就是永久性的。即使系统发生故障,已提交的事务的修改也能被保留下来。

事务的使用带来了许多好处,包括提高数据的一致性和完整性,简化错误恢复过程,以及增强应用程序的可靠性。通过使用事务,数据库管理系统能够在异常或故障情况下保持数据的一致性和完整性,从而确保数据的准确性和可靠性。

ACID特性:指数据库事务正确执行的四个基本要素的缩写。

  • A - 原子性:要么全做,要么不做
  • C - 一致性:事务前后的系统状态是一致的
  • I - 隔离性:并发执行的事物无法看到彼此的中间状态
  • D - 持久性:事务完成后所做的改变都会被持久化

Atomicity(原子性):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。 Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。 Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。 [1]

相关岗位

在做产品的数据持久化方案时,数据库往往是第一选择,而且还衍生了一系列的互联网岗位,例如:数据库管理员、数据分析师...,这些岗位的基本要求就是熟练使用数据库,可见学好数据库是走向互联网岗位的关键一步。

数据库管理员(Database Administrator,简称 DBA)是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。核心目标是保证数据库管理系统的稳定性、安全性、完整性和高性能。

QQ截图20201110233332

数据分析师(Data Analyst)是指专门从事行业数据收集、整理、分析,并根据数据进行行业研究、评估和预测的专业人员。与传统的数据分析师相比,互联网时代的数据分析师面临的不是数据短缺,而是数据过剩。因此,互联网时代的数据分析师必须学会借助技术手段(Excel 表格、SQL 结构化查询语言、Python 编程语言...)进行高效的数据处理。

image-20240704002714795

结构化查询语言(Structured Query Language,简称 SQL)是一门简单易学的数据库查询和程序设计语言。它允许用户在高层数据结构上工作,而不要求用户指定数据的存放方法,也不需要用户了解具体数据的存放方式,所以不同的数据库系统可以使用相同的 SQL 语句作为数据输入与管理的接口。另外,SQL,语句可以嵌套,这使它具有极大的灵活性和强大的功能,可以进行非常复杂和高级的数据库操作。

  1. SQL语言不是某个特定数据库的专有语言,几乎所有DBMS都支持SQL

sql

只要是关系型数据库,基本都支持 SQL 语言。这个就是我们要学习的重点,因为你学会了 SQL 后,基本都能玩转任何一种关系型数据库。

重要

不同的关系型数据库对 SQL 的支持也不尽相同,基本都能支持标准的SQL ,但每一种数据还有SQL的方言,后面我们会学习到的。所以在使用的时候要注意,当你换到别的数据库,你写的SQL可能就用不了了。

生活应用

我们所有见到的跟日常生活有关、需要记录的信息基本全部放在数据库里面:

  1. 身份证信息放在公安部的系统。
  2. 银行卡的余额和交易记录、转帐信息。
  3. 在酒店的开房信息(所以出现了数据库被盗和信息泄漏)。
  4. 飞机、火车、汽车联网购票记录。
  5. QQ聊天记录、网上购物、贴吧、喜欢听的音乐、电影的收藏信息。
  6. 手机电话机录、余额、公交卡余额、水费、电费、彩票的购买记录。
  7. 打游戏的装备、等级、魔力、力量、攻击能力等信息。

类型区别

关系型数据库和非关系型数据库最大的区别就是能不能使用外键,能使用外键则是关系型数据库,不能使用外键则是非关系型数据库。

?> 提示:外键就是关联一个数据集和另一个数据集之间的纽带。