《计算思维导论》笔记:10.2 什么是数据库与数据库系统?

《大学计算机—计算思维导论》(战德臣 哈尔滨工业大学)
《10.2 什么是数据库与数据库系统?》

数据库

简单来讲,数据库就是相互有关联关系的数据的集合。

  • 一个表聚集了具有相同结构类型的若干个对象
  • 一行数据反映了某一对象的相关内容
  • 一列数据具有相同的数据类型
  • 表与表间也存在着相互关联

数据库系统

数据库系统包含数据库数据库管理系统应用程序和数据库管理员

  • 数据库(DB): Database
  • 数据库管理系统(DBMS): Database Management System
  • 数据库应用(DBAP): DataBase Application
  • 数据库管理员(DBA): DataBase Administrator
  • 计算机基本系统

在这里插入图片描述

数据库系统是一个大的环境,其核心组件是数据库。数据库实质上是一个由相互关联的数据所构成的集合,我们通常将这个数据集合称为 Database,简称DB。

为了有效地管理和控制数据库,必须配备一种特定的系统软件。这种专门用于管理数据库的系统软件被称为数据库管理系统,即Database Management System,简称DBMS。

应用程序是为普通用户与数据库进行交互而特别设计开发的软件工具。用户通过这些应用程序,间接地与数据库管理系统(DBMS)进行交流,从而实现对数据库的访问和使用。换句话说,普通用户借助应用程序这一中介,通过数据库管理系统来操作和利用数据库中的数据资源。

数据库管理员,即 DBA,可能是一个人,也可能是一个组织,他使用DBMS来管理和维护数据库。

数据库管理系统的基本功能

数据库定义

定义数据库中数据表的名称、标题(内含的属性名称及对该属性的值的要求)等。

  • DBMS提供一套数据定义语言(DDL:Data Definition Language) 给用户
  • 用户使用DDL描述其所要建立表的格式
  • DBMS依照用户的定义,创建数据库及其中的Table

数据库操纵

向数据库的Table中增加/删除/更新数据及对数据进行查询、检索、统计等

  • DBMS提供一套数据操纵语言(DML:Data Manipulation Language) 给用户
  • 用户使用DML描述其所要进行的增、删、改、查等操作
  • DBMS依照用户的操作描述,实际执行这些操作

数据库控制

控制数据库中数据的使用:哪些用户可以使用,哪些不可以

  • DBMS提供一套数据控制语言(DCL:Data Control Language)给用户
  • 用户使用DCL描述其对数据库所要实施的控制
  • DBMS依照用户的描述,实际进行控制

数据库维护

转储/恢复/重组/性能监测/分析…

  • DBMS提供一系列程序(实用程序/例行程序) 给用户
  • 在这些程序中提供了对数据库维护的各种功能
  • 用户使用这些程序进行各种数据库维护操作

数据库维护的实用程序,一般都是由数据库管理员(DBA)来使用和掌握的

DBMS后台程序

DBMS为完成DB管理,在后台运行着一系列程序…

  • 数据库物理存储
  • 数据库查询执行及查询优化
  • 并发控制
  • 故障恢复
  • 安全性控制
  • 完整性控制
  • 数据字典管理
  • 应用程序接口(API)
  • … …

从系统的底层运作角度看,数据库管理系统(DBMS)背后运行着一系列复杂的程序。

这些后台程序负责至关重要的任务,比如如何有效地将数据库物理地存储在磁盘上,并确保数据能够快速且准确地从磁盘读取到内存中进行处理。

同时,当用户提交一个查询请求时,DBMS必须通过查询优化机制来高效检索和组织数据,以迅速提供用户期望的结果集。这是查询性能优化的关键所在。

此外,在多用户环境或者分布式环境下,不同的用户可能从不同地点对同一数据库进行操作。例如,在多人同时购买同一班次火车票的情况下,DBMS需要通过并发控制技术来避免出现重复购票的问题,确保数据的完整性和一致性。

最后,为了防止意外情况导致的数据丢失或不一致,如银行系统中用户账户信息因故障而受损,DBMS必须具备强大的故障恢复能力。这意味着在发生故障后,系统能及时检测、记录事务日志,并有能力将数据库恢复至故障前的正确状态,从而保障数据的安全性和可靠性。

小结

在这里插入图片描述

本节介绍了什么是数据库,什么是数据库系统。

对于数据库系统来讲,包括了数据库,数据库管理系统,数据库应用程序,数据库管理员和计算机的基本系统。这里面的核心是数据库管理系统。

数据库管理系统有数据定义功能,数据操作功能、数据控制功能。这些功能都是通过一套数据库语言(数据定义语言,数据操纵语言,数据控制语言)提供给用户。用户掌握了这套语言,就可以通过DBMS访问、管理和控制数据库。另外一方面就是数据库管理系统的背后是一系列程序,执行存储、查找、备份、解析语言等。

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

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

相关文章

Leetcode3002. 移除后集合的最多元素数

Every day a Leetcode 题目来源:3002. 移除后集合的最多元素数 解法1:贪心 可以将数组去重后分为三个部分:nums1 独有的,nums2 独有的,nums1 与 nums2 共有的。 求集合 S 时: 先选择两个数组独有的。…

(七)Java 分支结构 —— if...else、switch

目录 一. 前言 二. if 分支 2.1. if 语句 2.2. if...else 语句 2.3. if...else if...else 语句 2.4. 嵌套的 if…else 语句 三. switch 分支 四. 课后习题 一. 前言 Java 中的分支结构是程序控制流的重要组成部分,它们允许程序根据特定条件执行不同的代码块…

JVM:双亲委派机制类加载器

JVM:双亲委派机制 1. 例子2. 类加载器总结3. 类加载过程4. 双亲委派模型的执行流程:5. 双亲委派模型的好处 1. 例子 Java运行时环境有一个java.lang包,里面有一个ClassLoader类 我们自定义一个String类在java.lang包下,下面的…

C#编程-使用事件

使用事件 事件是一个动作或发生的事情,例如:鼠标点击、按键、鼠标移动或系统产生的通知。应用程序可以在事件发生的时候做出响应。通知的一个示例是中断。事件是对象发生的消息以表示事件的发生。事件是进程内通信的有效方法。它们对对象时有用的,因为它们标识了单个状态改…

YOLOv8改进 | Conv篇 | 利用YOLO-MS的MSBlock轻量化网络结构(既轻量又长点)

一、本文介绍 本文给大家带来的改进机制是利用YOLO-MS提出的一种针对于实时目标检测的MSBlock模块(其其实不能算是Conv但是其应该是一整个模块),我们将其用于C2f中组合出一种新的结构,来替换我们网络中的模块可以达到一种轻量化的作用,我将其用于我的数据集上实验,包括多个…

Leetcode 第 379 场周赛题解

Leetcode 第 379 场周赛题解 Leetcode 第 379 场周赛题解题目1:10035. 对角线最长的矩形的面积思路代码复杂度分析 题目2:10036. 捕获黑皇后需要的最少移动次数思路代码复杂度分析 题目3:10037. 移除后集合的最多元素数思路代码复杂度分析 题…

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts

继续上一节的内容,本节学习Apache ECharts,实现营业额统计、用户统计、订单统计和销量排名Top10功能。 数据统计效果图: 目录 Apache ECharts入门案例 营业额统计用户统计订单统计销量排名Top10 Apache ECharts Apache ECharts 是一款基于 …

Debezium发布历史67

原文地址: https://debezium.io/blog/2019/08/20/debezium-0-10-0-beta4-released/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. Debezium 0.10.0.Beta4 发布 八月 20, 2019 作者: Gun…

解锁 JavaScript 数组的强大功能:常用方法和属性详解(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

20240114总结:无聊周末or有聊周末

有时候,连着几个周末感觉好忙,比如要去体检、验光、复光、爬山、打球、参加婚礼、跨年、年终总结、、练习讲话、乙肝疫苗、正骨、按摩、西丽湖吃饭、每天三国一两个钟、看下电影啥的,很快,很碎片。 但是这个周末完全没任务&#…

Java中HashSet如何检查重复

HashSet是基于哈希表实现的无序的、不重复的集合类。它在添加元素时会自动检查是否存在重复元素,通过hashCode()和equals()方法来确定元素的相等性。 HashSet添加元素步骤,先通过hashCode找出位置,再通过equals()比较是否相等: …

毕业设计:基于python微博舆情分析系统+可视化+Django框架 K-means聚类算法(源码)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

C++ 完成Client分页显示log

分页显示t_log 1、获取用户的输入 1.1、写一个Input成员函数&#xff0c;处理输入进来的语句 std::string XClient::Input() {//清空缓冲//cin.ignore(4096, \n);string input "";for (;;){char a getchar();if (a < 0 || a \n || a \r)break;cout <<…

数据化思维:数据聚集与管理,数据运用与分析

数据化思维 数据化思维&#xff0c;是指在面对复杂问题时&#xff0c;通过收集、处理和分析数据&#xff0c;以数据为依据进行决策和解决问题的思维方式。它强调用事实说话&#xff0c;注重量化指标&#xff0c;能够帮助我们在海量信息中抽丝剥茧&#xff0c;发现深层次规律和…

LlamaIndex中的CustomLLM(在线加载模型)

一.使用 Flask 将模型封装为 REST 接口 主要是将 complete()和 stream_complete()方法封装为 REST 接口&#xff0c;如下所示&#xff1a; from flask import Flask, request, jsonify from transformers import AutoTokenizer, AutoModelForCausalLM app Flask(__name__)cla…

Linux comm命令教程:对比和分析文件内容(附案例详解和注意事项)

Linux comm命令介绍 comm&#xff0c;又称为_compare common lines_命令&#xff0c;是一个简易的Linux文件比较工具&#xff0c;主要用于标识出两个已排序文件中的共同部分。该命令逐行比较两个文件&#xff0c;并以三列形式显示结果。 Linux comm命令适用的Linux版本 通常…

Kubernetes 面试宝典

创建 Pod的主要流程? 客户端提交 Pod 的配置信息(可以是 yaml 文件定义的信息)到 kube-apiserver. Apiserver 收到指令后,通知 controllr-manager 创建一个资源对象 controller-manager 通过 apiserver 将 pod 的配置信息存储到 ETCD 数据中薪心中 kube-scheduler 检查到 p…

GPT编程:运行你的第一个聊天程序

环境搭建 很多机器学习框架和类库都是使用Python编写的&#xff0c;OpenAI提供的很多例子也是Python编写的&#xff0c;所以为了方便学习&#xff0c;我们这个教程也使用Python。 Python环境搭建 Python环境搭建有很多种方法&#xff0c;我们这里需要使用 Python 3.10 的环境…

一二三应用开发平台文件处理设计与实现系列之5——MinIO技术预研

背景 上篇介绍了文件读写框架设计与实现&#xff0c;同时顺便说明了本地磁盘存储模式的实现模式。 今天来说下基于文件读写框架&#xff0c;如何集成对象存储组件minio&#xff0c;集成之前&#xff0c;需要对minio进行必要的了解&#xff0c;本篇是minio的技术预研。 minio简…

两个Mesh路由、一个5口交换机,打造智能家居无缝网络覆盖

在现代家庭中&#xff0c;无线网络已经成为了必需品&#xff0c;每个人都希望享受到无缝连接的畅快体验。然而&#xff0c;由于信号覆盖范围的限制和信号干扰等问题&#xff0c;很多家庭在组网方面遇到了一些困难。 对于有需求的家庭而言&#xff0c;两个Mesh路由器是一种非常…