架构师备考-数据库基础

news2024/11/6 6:49:19

基本概念

  • 数据(Data):是描述事物的符号记录,它具有多种表现形式,可以是文字、图形、图像、声音和语言等。
  • 信息(information):是现实世界事物的存在方式或状态的反映。信息具有可感知、可存储、可加工、可传递和可再生等自然属性,信息已是各行各业不可缺少的资源,这也是信息的社会属性。
  • 数据是信息的符号表示,而信息是具有特定释义和意义的数据。
  • 数据库(DataBase,DB):是统一管理的、长期存储在计算机内的,有组织的相关数据的集合。其特点是数据间关联密切、冗余度小、独立性较高、易扩展,并且可为各类用户共享。一般主要指的是存储数据的各种物理设备以及数据本身。
  • 数据库系统(DBS):DBS 是采用了数据库技术,有组织地、动态地存储大量相关关联数据,从而方便多用户访问的计算机系统。广义上讲,DBS 包括了数据库管理系统(DBMS)
  • DBMS:DBMS 是数据库系统的核心软件,是由一组互相关联的数据集合和一组用以访问这些数据的软件组成。DBMS 要在操作系统的支持下工作,它是一种解决如何科学地组织和存储数据,如何高效的获取和维护数据的系统软件。其主要功能包括数据定义功能、数据操纵功能、数据库的运行管理和数据库的建立与维护。

数据库分类

时期

类型

早期

层次式数据库

早期

网络式数据库

早期

关系型数据库

现代

关系型数据库

现代

非关系型数据库

数据库存储体系分类

关系型数据库

数据库存储体系分类

键值(Key-Value)数据库

数据库存储体系分类

列存储数据库

数据库存储体系分类

文档数据库

数据库存储体系分类

索引数据库

层次和网状数据库系统

        层次模型采用树形结构表示数据与数据间的联系。在层次模型中,每个结点表示一个记录类型(实体),记录之间的联系用结点之间的连线表示,并且根结点以外的其他结点有且仅有一个双亲结点。上层和下一层类型的联系是1:n 联系(包括1:1联系)。

        采用网络结构表示数据间联系的数据模型称为网状模型。在网状模型中,允许一个以上的结点无双亲,或者一个结点可以有多于一个的双亲。

        网状模型是一个比层次模型更具有普遍性的数据结构,层次模型是网状模型的一个特例。网状模型可以直接的描述现实世界,因为去掉了层次模型的两个限制,允许两个结点之间有多种联系(称之为复合联系)。需要说明的是,网状模型不能表示记录之间的多对多联系,需要引入联结记录来表示多对多联系。

        层次或网状模型,底层的数据结构均可用图来表示。二者的共同特点如下。

  • 支持三级模式的体系结构;
  • 用存取路径来表示数据之间的联系;
  • 独立的数据定义语言;
  • 导航的数据操纵语言;

关系型数据库系统

        关系模型是目前最常用的数据模型之一。关系数据库系统采用关系模型作为数据的组织方式,在关系模型中用表格结构表达实体集以及实体集之间的联系,其最大特色是描述的一致性。

        关系模型是由若干个关系模式组成的集合。一个关系模式相当于一个记录型,对应于程序设计语言中类型定义的概念。关系是一个实例,也是一张表,对应于程序设计语言中变量的概念。变量的值随时间可能会发生变化,类似的,当关系被更新时,关系实例的内容也发生了变化。

        由于关系模型比网状、层次模型更为简单灵活,因此,数据处理领域中,关系数据库的使用已相当普遍。

非关系型数据库系统

        No SQL 一词最早出现于 1998 年,是Carlo Strozzi 开发的一个轻量、开源、不提供SQL 功能的关系数据库。2009年,Last.fm 的 Johan Oskarsson 发起了一次关于分布式开源数据库的讨论,来自 Rackspace 的 Eric Evans 再次提出了 No SQL 的概念,这时的 No SQL 主要指非关系型、分布式、不提供 ACID 的数据库设计模式。

        随着互联网Web 2.0网站的兴起,传统的关系数据库在处理 Web 2.0 网站,特别是超大规模和高并发的SNS 类型的 Web2.0 纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型数据库则由于其本身的特点得到了非常迅速的发展。NoSQL 数据库的产生就是为了面对大规模数据集合和多重数据种类带来的挑战,特别是大数据应用难题。

DBMS 功能

        DBMS 功能包括数据定义、数据库操作、数据运行管理、数据组织、存储和管理、数据库的建立和维护、其他功能

  1. 数据定义:DBMS 提供数据定义语言(Data Definition Language,DDL),可以对数据库的结构进行描述,包括外模式、模式和内模式的定义;数据的完整性定义;安全保密定义,入口令、级别和存取权限等。这些定义存储在数据字典中,是DBMS 运行的基本依据。
  2. 数据库操作:DBMS 向用户提供数据操纵语言(Data Manipulation Language,DML),实现对数据库中数据的基本操作,如检索、插入、修改和删除。
  3. 数据运行管理:数据库在运行期间,多用户环境下的并发控制、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理、事务管理和自动恢复等都是DBMS 的重要组成部分。这些功能可以保证数据库系统的正常运行。
  4. 数据组织、存储和管理:DBMS 分类组织、存储和管理各种数据,包括数据字典、用户数据和存取路径等。要确定以何种文件结构和存取方式在存储级别上组织这些数据,以提高存取效率。实现数据间的联系,数据组织和存储的基本目标是提高存储空间的利用率。
  5. 数据库的建立和维护:数据库的建立和维护,包括数据库的初始建立、数据的转换、数据库的转储和恢复、数据的重组和重构、性能检测和分析等。
  6. 其他功能:如DBMS 与网络中其他软件系统的通信功能,一个DBMS 与另一个DBMS 或文件系统的数据转换功能等。

DBMS 特点

  • 数据结构化且统一管理。数据库中的数据由DBMS 统一管理。由于数据系统采用数据模型表示数据结构,数据模型不仅描述数据本身的特点,还描述数据之间的联系。数据不再面向某个应用,而是面向整个企业内的所有应用。数据易维护,易扩展,数据冗余明显减少,真正实现了数据的共享。
  • 有较高的数据独立性。数据的独立性是指数据与程序独立,将数据的定义从程序中分离出去,由DBMS 负责数据的存储,应用程序关心的只是数据的逻辑结构,无需了解数据在磁盘上的存储形式,从而简化应用程序,大大减少应用程序编制的工作量。数据的独立性包括数据的物理独立性和数据的逻辑独立性。
  • 数据控制功能
    • 数据的安全性。是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。这样,用户只能按规定对数据进行处理,例如,划分了不同的权限,有的用户只有读数据的权限,用户只能在规定的权限范围内操作数据库。
    • 数据的完整性。是指数据库正确性和相容性,是防止合法用户使用数据库时向数据库加入不符合语义的数据。保证数据库中数据是正确的,避免非法的更新。
    • 并发控制。是指在多用户共享的系统中,许多用户可能同时对同一数据进行操作。DBMS 的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,避免用户得到不正确的数据。
    • 故障恢复。数据库中的常见故障是事务内部故障、系统故障、介质故障以及计算机病毒等。故障恢复主要是指恢复数据库本身,即在故障导致数据库状态不一致时,将数据库恢复到某个正确状态或一致状态。恢复的原理非常简单,就是要建立冗余数据。换句话说,确定数据库是否可恢复的方法就是其包含的每一条信息是否都可以利用冗余的存储在别处的信息重构。

数据库三级模式

开发人员角度的

  • 视图层:是最高层次的抽象,描述整个数据库的某个部分的数据。因为数据库系统的很多用户并不关心数据库中的所有信息,而只关心需要的那部分数据。可以通过构造视图层来实现用户的数据需求,这样做不仅使用户与系统交互简化,而且还可以保证数据的保密性和安全性。
  • 逻辑层:比物理层更高一层的抽象,描述数据库中存储的数据以及这些数据间存在的关系。逻辑层通过相对简单的结构描述了整个数据库。尽管逻辑层简单结构的实现涉及了复杂的物理层结构,但逻辑层的用户不必知道这些复杂性。因为逻辑层抽象是数据库管理员的职责,管理员确定数据库应保存哪些信息。
  • 物理层:最低层次的抽象,描述数据在存储器中是如何存储的。物理层详细地描述复杂的底层结构。

管理数据库系统的角度

  • 外模式:也称用户模式或子模式;用以描述用户看到或使用的那部分数据的逻辑结构,用户根据外模式用数据操作语句或应用程序去操作数据库中的数据
  • 概念模式:概念模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图
  • 内模式:也称存储模式,内模式是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,定义所有的内部记录类型、索引和文件的组织方式

两级映像

  • 逻辑独立性:外模式和概念模式之间的映射。应用程序与数据库中的逻辑结构独立,当数据的逻辑结构改变时,应用程序不变。
  • 物理独立性:概念模式和内模式之间的映射。应用程序与磁盘中的数据相互独立。当数据的物理存储改变时,应用程序不变。

数据模型

        数据库的基础结构是数据模型,是用来描述数据的一组概念和定义。

        数据模型的三要素是:数据结构、数据操作和数据的约束条件。

  • 数据结构。对象类型的集合,是对系统静态特性的描述
  • 数据操作。对数据库中各种对象的实例允许执行的操作集合,包括操作及操作规则。如操作有检索、插入、删除和修改,操作规则有优先级等。数据操作是对系统动态特性的描述。
  • 数据的约束条件。是一组完整性规则的集合。也就是说,对于具体的应用数据必须遵循特定的语义约束条件,以保证数据的正确、有效和相容。
  • 数据模型分为概念数据模型(实体-联系模型模型)和基本数据模型
    • 概念数据模型是按照用户的观点来对数据和信息建模,主要用于数据库设计。概念模型主要用实体-联系方法表示,所以也称E-R 模型。
    • 基本数据模型是按照计算机系统的观点来对数据和信息建模,主要用于DBMS 的实现。基本数据模型是数据库系统的核心和基础。常用的基本数据模型有层次模型、网状模型、关系模型和面向对象模型。

应用函数与数据库的交互

库函数级别访问接口

  • 如Oracle 数据库的 Oracle Call Interface(OCI),开发者可以使用高级程序语言编写程序实现人机交互和业务逻辑,而使用OCI 来访问数据库。OCI 是或一组应用程序开发接口(API)组成的,Oracle 提供API 的方式提供一组库。这组库包含一系列的函数调用。
  • 包括:连接数据库、调用SQL、事务控制
  • OCI 的缺点是往往依赖于特定的数据库,需要数据库开发人员对该数据库机制有较深的理解,开发效率不高。

嵌入SQL 访问接口

        为了实现对于嵌入式SQL 的支持,技术上必须解决以下问题

  1. 宿主语言的编译器不能识别和接收SQL 程序,需要解决如何将SQL 的宿主语言源代码编译成可执行的代码
  2. 宿主语言的应用程序如何与DBMS 之间传递数据和消息
  3. 如何把对数据的查询结果逐次赋值给宿主语言程序中的变量,以供其处理
  4. 数据库的数据类型和宿主语言的数据类型有时不完全对应或等价、如何解决必要的数据类型转换问题。

通用数据接口标准

        开放数据库连接(ODBC)是为解决异构数据库间的数据共享而产生的

        在具体操作时,首先必须用ODBC 管理器注册一个数据源,管理器根据数据源提供的数据库位置,数据库类型即ODBC 驱动程序等信息,建立起ODBC 与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC 就能建立起与相应数据库的连接。

  1. 数据库访问对象 (DAO)
  2. 远程数据库对象 (RDO)
  3. ActiveX 数据对象 (ADO)
  4. ADO.NET 是微软在.NET 框架下开发设计的一组用于和数据源进行交互的面向对象类库。
  5. JDBC Java 数据库连接

ORM 访问接口

        对象关系映射(ORM) 是一种程序设计技术,用于实现面向对象编程语言里不同类型系统数据之间的转换。ORM 是通过使用描述对象和数据库之间映射的元数据,将程序中的对象与关系数据库相互映射;ORM 可以解决数据库与程序间的异构性。

        ORM 是一种将内存的对象保存到关系型数据库中的技术,主要负责实体域对象的持久化,封装数据库访问细节,提供了实现持久化层的另一种模式,采用映射元数据来描述对象-关系的映射细节,使得ORM 中间件能在任何一个应用的业务逻辑层和数据库之间充当桥梁。

  • HIbernate :全自动的框架,强大、复杂、笨重、学习成本高
  • Mybatis:半自动的框架
  • JPA:JPA 通过JDK5.0 注解或XML 描述对象-关系表的映射关系,是Java 自带的框架

大型数据库管理系统的特点

  • 基于网络环境的数据库管理系统。可以用于C/S 结构的数据库应用系统,也可以用于B/S 结构的数据库应用系统
  • 支持大规模的应用。可支持数千个并发用户,多达上百万的事务处理和超过数百GB 的数据容量
  • 提供的自动锁功能使得并发用户可以安全而高效的访问数据
  • 可以保证系统的高度安全性
  • 提供方便而灵活的数据备份和恢复方法即设备镜像功能,还可以利用操作系统提供容错功能,确保设计良好的应用中的数据发生意外的情况下可以最大限度地被恢复
  • 提供多种维护数据完整性的手段
  • 提供了方便易用的分布式处理功能

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

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

相关文章

【牛客刷题实战】二叉树遍历

大家好,我是小卡皮巴拉 文章目录 目录 牛客题目: 二叉树遍历 题目描述 输入描述: 输出描述: 示例1 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码(C语言) 兄弟们共勉 !&…

ESP-HaloPanel:用 ESP32-C2 打造超低成本智能家居面板

项目简介 在生活品质日益提升的今天,智能家居系统已经走进了千家万户,并逐渐成为现代生活的一部份。与此同时,一款设计精致、体积轻盈、操作简便的全屋智能家居控制面板,已经成为众多家庭的新宠。这种高效、直观的智能化的解决方…

西北工业大学Journal of Applied Ecology最新研究进展:野生食草动物破坏了干旱自然保护区的土壤种子库及植被恢复潜力

本文首发于“生态学者”微信公众号! 自然保护区(protected areas)是全球生物保护的重要支柱。其中,植物是生物多样性和生态系统的核心组成部分,是实现生物保护目标的前提和基础。土壤种子库(soil seed ban…

Kotlin协程-async分析

概述 本章讲解协程中async,await的原理。前提条件是知道父子协程是如何关联的,可以看这篇协程之间父子关系1-Job如何关联的了解。 这里简单讲一下原理:使用await方法,这是一个挂载方法,协程执行到这里就会挂载&#…

推荐一款功能强大的AI实时变声器:FliFlik Voice Changer

FliFlik VoiCE Changer是一款专注于声音变换与音频处理的创新软件,旨在满足从日常娱乐、游戏直播到播客制作、专业音频编辑的多种应用场景需求。无论是想在游戏中变换声音逗乐队友,还是在播客中塑造个性化的音效,这款软件都能提供灵活而强大的…

LeetCode总结-链表

一、遍历链表 1290.二进制链表转整数 2058.找出临界点之间的最小和最大距离 2181.合并零之间的节点 二、删除节点 问:为什么没有修改 dummy,但 dummy.next 却是新链表的头节点?如果删除了 head,那么最后返回的是不是原链表的头…

Apache Dubbo (RPC框架)

本文参考官方文档:Apache Dubbo 1. Dubbo 简介与核心功能 Apache Dubbo 是一个高性能、轻量级的开源Java RPC框架,用于快速开发高性能的服务。它提供了服务的注册、发现、调用、监控等核心功能,以及负载均衡、流量控制、服务降级等高级功能。…

【Flask】二、Flask 路由机制

目录 什么是路由? Flask中的路由 基本路由 动态路由 路由中的HTTP方法 路由函数返回 在Web开发中,路由是将URL映射到相应的处理函数的过程。Flask是一个轻量级的Web应用框架,提供了简单而强大的路由机制,使得开发者能够轻松…

强势改进!TCN-Transformer时间序列预测

强势改进!TCN-Transformer时间序列预测 目录 强势改进!TCN-Transformer时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现TCN-Transformer时间序列预测; 2.运行环境为Matlab2023b; 3.单个变量时间序…

六西格玛项目助力,手术机器人零部件国产化稳中求胜——张驰咨询

项目背景 XR-1000型腔镜手术机器人是某头部手术机器人企业推出的高端手术设备,专注于微创手术领域,具有高度的精确性和稳定性。而XR-1000型机器人使用的部分核心零部件长期依赖进口,特别是高精度电机、关节执行机构和视觉系统等,…

C++ 优先算法——复写零(双指针)

目录 题目:复写零 1. 题目解析 2. 算法原理 一. 先找到最后一个“复写”数 处理边界情况 二. 复写操作 3. 代码实现 题目:复写零 1. 题目解析 题目截图: 该题目要求的与移动零相似,都要在一个数组上进行操作,…

掌握DFMEA,让潜在设计缺陷无处遁形!

一个微小的设计缺陷,就可能让一款产品从市场宠儿变成过客。那么,如何在设计初期就精准识别并扼杀这些潜在威胁呢?答案就是——巧妙运用DFMEA(设计失效模式与效应分析)。本文,天行健企业管理咨询公司将详细阐…

时间序列预测(十)——长短期记忆网络(LSTM)

目录 一、LSTM结构 二、LSTM 核心思想 三、LSTM分步演练 (一)初始化 1、权重和偏置初始化 2、初始细胞状态和隐藏状态初始化 (二)前向传播 1、遗忘门计算(决定从上一时刻隐状态中丢弃多少信息) 2、…

FlaskFastAPIgunicornunicorn并发调用

Flask VS. FastAPI Flask和FastAPI是Python中两种流行的Web框架,它们各自具有不同的特点和适用场景。以下是它们之间的一些主要区别: 1. 框架类型 Flask:Flask是一个轻量级的微框架,适合构建小型到中型的Web应用。它灵活且易于扩展…

安装scrcpy-client模块av模块异常,环境问题解决方案

背景 使用 pip install scrcpy-client命令出现以下报错 performance hint: av\logging.pyx:232:5: Exception check on log_callback will always require the GIL to be acquired. Possible solutions: 1. Declare log_callback as noexcept if you control the definition …

Linux——常见指令及其权限理解(正在更新中)

1.指令 1.1 快速了解指令 pwd 首次登录,默认所处的路径 whoami 当前所用的用户的名称 ls 显示当前路径下,文件名称 mkdir 在当前目录下,创建一个文件夹/目录 cd 进入一个目录 touch 新建一个文…

胡壮麟《语言学教程》第五版PDF英文版+中文版翻译

胡壮麟《语言学教程》中文版:https://pan.quark.cn/s/9491130ec572 《语言学教程》(英文版)是一部经典的语言学教材,自 1988 年面世以来,被众多高校广泛采用,长销不衰。该教材自出版以来不断修订&#xff…

项目模块十二:TcpServer模块

一、模块设计思路 1、目的 对所有模块整合,实现一个服务器模块供外部快速搭建服务器。 2、管理 监听套接字 主 Reactor,创建 EventLoop _baseloop 对象,进行对监听套接字的管理 哈希表管理所有新连接的 Channel 创建线程池进行连接的事…

【Spring源码核心篇-01】精通Spring的bean的生命周期

Spring源码核心篇整体栏目 内容链接地址【一】Spring的bean的生命周期https://zhenghuisheng.blog.csdn.net/article/details/143441012 spring的bean的生命周期 一,spring中bean的生命周期1,生成BeanDefinition1.1,初始化context和BeanFacto…

IAR出现,Error [e12].Unable to open file "xxxx:_app.xcl"怎么办?

编译时出现,一般是拷贝过来出现这个问题。解决方法: 1,点击到最左边“code -Debug”上 2,点Project>>>options for node "code" 3,选项卡“linker”>>"linker configuration fil…