精华内容
下载资源
问答
  • 数据库基本原理

    千次阅读 2019-05-09 19:58:14
    数据库基本原理我对DB的理解1、数据库的组成:存储+实例不必多说,数据当然需要存储;存储了还不够,显然需要提供程序对存储的操作进行封装,对外提供增删改查的API,即实例。一个存储,可以对应多个实例,这将提高...
    前言

    今天我将站在程序员的角度以MySQL为例探索数据库的奥秘!

    数据库基本原理

    我对DB的理解

    1、数据库的组成:存储+实例

    不必多说,数据当然需要存储;存储了还不够,显然需要提供程序对存储的操作进行封装,对外提供增删改查的API,即实例。

    一个存储,可以对应多个实例,这将提高这个存储的负载能力以及高可用;多个存储可以分布在不同的机房、地域,将实现容灾。

    2、按Block or Page读取数据

    用大腿想也知道,数据库不可能按行读取数据(Why?^_^)。实质上,数据库,如Oracle/MySQL,都是基于固定大小(比如16K)的物理块(BlockorPage,我这里就不区分统一称为Block)来实现调度和管理的。要知道Block是数据库的概念,如何对应到文件系统呢?显然需要指出“这个Block的地址在哪里”,当查找到地址后,读取固定大小的数据就相当于完成了Block的读取了。

    数据库很聪明的,它不会仅仅只读取需要读取的Block,它还会替我们把附近的Block块都读取加载至内存。实际上,这是为了减少IO次数,提高命中率。事实上,一个Block块的附近Block也是热点数据,这种处理方式很有必要!

    3、磁盘IO是数据库的性能瓶颈

    毫无疑问,数据在磁盘上,少不了磁盘IO。什么磁头旋转,定位磁道,寻址的过程,就不说了,我们是程序员,也管不了这些。但是这个过程确实是非常耗时的,和内存读取不是一个数量级,所以后来出现了很多方式来减少IO,提升数据库性能。

    比如,增加内存,让数据库把数据更多的加载至内存。内存虽好,但也不能滥用,为什么这么说呢?假设数据库中有100G数据,如果都加载至内存,也就说数据库要管理100G磁盘数据+100G内存数据,你说累不累?(数据库要处理磁盘和内存的映射关系,数据的同步,还要对内存数据进行清理,如果涉及数据库事务,又是一系列复杂操作......)不过这里需要指出的是,为了加快内存查找速度,数据库一般对内存进行HASH存放。

    比如,利用索引,索引相比内存,是一个性价比非常高的东西,后文详细介绍MySQL的索引原理。

    比如,利用性能更好的磁盘...(和咱们就没关系呢)

    4、提出一些问题思考下:

    为什么我们说利用delete删除一个表的数据较trancate一个表要慢?

    【一个按行查找删除,多费劲;一个基于Block的体系结构删除】

    为什么我们说要小表驱动大表?

    【小表驱动大表会快?什么鬼?M*N和N*M不是一样的么?有鬼的地方,就有索引!】

    探索MySQL索引背后的原理

    对于绝大数的应用系统,读写比例在10:1,甚至100:1,而且insert/update很难出现性能问题,遇到最多的,最棘手的就是select了,select优化是重中之重,显然少不了索引!

    说起MySQL的索引,我们会冒出很多这些东西:BTree索引/B+Tree索引/Hash索引/聚集索引/非聚集索引...这么多,晕头!

    索引到底是什么,想解决什么问题?

    老生常谈了,官网说MySQL索引是一种数据结构,索引的目的就是为了提高查询效率。

    说白了,不使用索引的话,磁盘IO次数比较多!要想减少磁盘IO次数,怎么办?

    我们想通过不断缩小想要获取的数据的范围来筛选出最终想要的结果,把每次查找数据的磁盘IO次数控制在一个很小的数量级,最好是常数数量级。

    为了应对上述问题,B+Tree索引出来了!

    Hello,B+Tree

    在MySQL中,不同存储引擎对索引的实现方式是不同的,这里将重点分析MyISAM和Innodb。

    MyISAM引擎的B+Tree索引结构

    我们知道对于MyISAM引擎而言,数据文件和索引文件是分离的。从图中也可以看出,通过索引查找到后,就得到了数据的物理地址,然后根据地址定位数据文件中的记录即可。这种方式也叫"非聚集索引"。

    而对于Innodb引擎而言,数据文件本身是索引文件!通俗点说,叶子节点上,MyISAM存储的是记录的物理地址,而Innodb上存储的是数据内容,这种方式即"聚集索引"。

    另外一点需要注意的是,对于Innodb而言,主键索引中叶子节点存储的是数据内容,而普通索引的叶子节点中存储的是主键值!也就是说,对于Innodb的普通索引字段查找,先通过普通索引的B+Tree查找到主键后,然后通过主键索引的B+Tree进行查找。从这里你可以看出,对于Innodb而言,主键的建立非常重要!

    而对于MyISAM而言,主键索引和普通索引仅仅的区别在于主键只需要查找到一条记录即可停止,而普通索引允许重复,找到一条记录后需要继续查找,在结构上没有区别,如上图所示。

    深入B+Tree

    提几个问题:

    ①.为什么B+Tree把真实的数据放到叶子节点,而不是内层节点?

    ②.为什么我们说索引字段要尽可能短,最好是单调递增的?

    ③.为什么复合索引存在最左匹配原则?

    ④.范围查询(>,<,between,like)对最左匹配有什么影响?

    关于B+Tree的一些数学理论,咱们就不玩了,至少一点可以肯定的是:数据表的数据量N=F(树的高度h,每个Block存储的索引的个数m)。在N一定的情况下,索引字段越小,那么m会越大,这意味着h将越小!树越低,当然查找的更快!

    如果内层节点存放真实的数据,显然m会变小,树将变高。

    在实际应用中,我们应该尽可能采用单调递增的字段作为主键,一方面不会使得索引的数据结构变大,减小了索引占用的空间;另一方面也不会频繁的分裂B+Tree,使得效率下降。

    比如复合索引(name,age,sex),B+Tree会优先比较name来确定下一步的搜索方向。如果突然来了个(age,sex),根本上就无从下手。这也是符合常理的,对于一本书,我们说“找到第几章第几节的XXX”,从没有听说过“找到第几节的XXX”!这是复合索引的重要特性,即最左匹配特性。

    假设存在复合索引(name,age,sex),我们在进行select的时候,并没有按照这个顺序进行,而是sex='man'andname='zfz'andage=27,是否会使用索引呢?数据库是很聪明的,在SQL优化的时候,会自动帮助我们调整!但是如果缺失了复合索引的第一列,数据库也将无能为力呢。

    对于最左匹配,MySQL会一直向右匹配直到遇到范围查询就停止匹配。什么意思?比如复合索引(name,age,sex),对于name='zhangfengzhe'andage>26andsex='man',实际上只利用到了复合索引的name列。

    想利用索引,就得“干净”

    什么叫“干净”?就是不要让索引参与计算!比如在索引上应用函数,很可能导致索引失效。为什么呢?

    其实不用想,B+Tree上存储的是数据,要比较的话,需要把所有的数据都应用上函数,显然成本太大。

    想建立索引,看看区分度

    索引虽然物美价廉,但是也别乱来。count(distinctcol)/count(*)可以算一下col的区分度,显然对于主键而言,就是1。区分度太低的话,可以考虑下,是否还有必要建立索引呢?

    Hash索引

    这里并不是要深入分析Hash索引,而是要说明一下Hash的思想真是无处不在!

    在MySQL的Memory存储引擎中,存在hash函数,给一个key,通过hash函数进行计算得到地址,所以通常情况下,hash索引查找,会非常快,O(1)的速度。但是也存在hash冲突,和HashMap一样,通过单链表的形式解决。

    思考下,hash索引是否支持范围查询呢?

    显然是不支持的,它只能给一个KEY去查找。就如同HashMap一样,查找key包含"zhangfengzhe"的,会很快么?

    SQL优化神器:explain

    SQL优化的场景很多,网上的技巧也很多,完全记不住!

    要想彻底解决这个问题,我想只有把索引背后的数据结构和原理做适当的理解,遇到书写SQL或者SQL慢查询的时候,我们有基础去分析,再利用好explain工具去验证,就应该问题不大呢。

    explain查询的结果,可以告诉你哪些索引正在被使用,表是如何被扫描的等等。这里我将演示个Demo。

    数据表student:

    注意复合索引(age,address)

    符合最左前缀匹配

    复合索引失效

    OK,到这里,准备结束了,查询容易,优化不易,且写且珍惜!

    扩展阅读

    一个不可思议的MySQL慢查分析与解决

    MySQL大数据量分页查询方法及其优化

    MySQL性能优化:索引和查询优化

    深入理解synchronized关键字

    深入了解Java之虚拟机内存

    Redis为何这么快--数据存储角度

    来源:https://www.jianshu.com/p/aa1f0f29b4f8

    展开全文
  • 数据库基本原理(持续更新)

    千次阅读 2020-04-04 14:11:50
    文件:文件是操作系统提供的最简单的,最基本的存储数据的机制,文件是没有结构的,就是单纯的字符流; 数据库可以通过DBMS直接进行很多操作,而文件的话只提供了简单的操作,文件只能用文件系统提供的几个函数,比如read...

    一.概述

    1.什么是数据库

    数据库是数据的集合;是对现实中一个企业的建模;

    2.数据库管理系统

    用来存储和管理数据库的一种系统软件

    3.为什么要用数据库而不是文件

    文件:文件是操作系统提供的最简单的,最基本的存储数据的机制,文件是没有结构的,就是单纯的字符流;

    • 数据库可以通过DBMS直接进行很多操作,而文件的话只提供了简单的操作,文件只能用文件系统提供的几个函数,比如read,write
    • 当多个用户并发访问数据库,文件要加锁,而DBMS会帮你做
    • 文件不具有故障处理的能力,但是DBMS可以自动恢复
    • 访问控制,文件只有可读可写可执行

    4.一些基本术语

    数据:是用来描述现实世界事物的符号
    数据模型:用来描述数据的一种方法,可以理解为数据结构
    数据模式:用给定的数据模型来对特定企业进行描述;
    这里举个例子:给定一个树形结构,来对班级和学生进行描述;
    在这里插入图片描述
    这就是一种模式,它可以有很多实例:
    在这里插入图片描述


    关系 : 就是表
    元组:表中的一行
    属性:表中的一列
    三级模式:
    在这里插入图片描述

    • 第一级:Physical Schema[物理模式]描述数据在磁盘上是怎么存的,用的什么索引,是按照哪个属性的排序存储的…
    • 第二级:Conceptal Schema [概念模式] 也叫作逻辑模式,描述数据的逻辑结构,在mysql中就是对表的定义,比如用户表里面有姓名 varchar(10)这就是一种模式;
    • 第三极:外模式也是视图层,一个数据库可以有多个外模式,而这些外模式都是根据逻辑模式中的中的属性算出来的; 外模式是保证数据库安全性的一个有力措施。每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的。

    两级映射

    • 外模式/逻辑模式映像:一个DB只有一个模式,但可以有多个外模式。
      所以,对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了这个外模式与模式的对应关系。外模式的描述中通常包含了这些映像的定义。
      当模式改变时(增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式/模式映像作相应的改变,可以使得外模式保持不变。而又由于应用程序应该是依据外模式编写的,从而应用程序不必修改,这就保证了数据与程序的逻辑独立性。

    • 逻辑模式/内模式映像:由上可知:一个DB只有一个模式,也只有一个内模式,所有模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。
      当数据库的存储结构改变时(例如选用了另一个存储结构),由数据库管理员对模式/内模式映像作出相应的改变,可以使得模式保持不变,从而应用程序也不必改变。这就保证了数据和程序的物理独立性。

    二.数据模型

    1.层次模型

    在现实中很多事情都是有层次的,就是数据结构中的树;
    在数据库中,层次模型用一种双亲子女关系来表示现实世界中,两个不同记录之间的一对多关系;
    记录:用来表达实体
    :用来描述实体
    在这里插入图片描述
    但是现实中不是一个学生只选一门课的,往往会出现多对多映射;
    层次结构引入一个虚记录这里我们假设上图中的学生1选择了课程1课程2;
    在这里插入图片描述

    2.层次模型

    网状模型的基本数据结构为set【系】,一个set表达现实世界中两个数据类型的一对多关系。其中一为主记录,多为属记录。
    在这里插入图片描述

    在层次模型中怎么描述一对多关系呢?

    这里是引入LINK记录在这里插入图片描述

    3.关系模型

    关系模型的基本数据结构是表,即关系。将现实生活中实体和实体之间的联系全部用表来表示。将表看出多个元组【记录】的集合,可以采用数学的研究方法进行研究。
    特点:

    • 基于数学集合论,有更高的抽象级别
    • 屏蔽了所有的底层细节,易于理解
    • 可以建立新的代数系统----关系代数
    • 定义一个非过程化的查询语言----SQL
      在这里插入图片描述
    1.主键(primary key)
    1. 一个关系中任意两个元祖的这组属性的值都不一样
    2. 这组属性的任何一个子集都没有这个特性

    同时满足1和2的叫做候补键;
    满足1不满足2的叫做超键;
    如果有多个候补键可以选择一个成为主键;
    如果主键是由这个关系的所有属性组成称为全键;

    2.外键(foreign key)

    一个关系中有一组属性用它来引用另一关系里的主键属性,那么这组属性被称为外键;

    3.完整性约束

    域完整性约束:插入属性的值是否符合值域
    实体完整性约束:主键不能为空

    三.关系代数

    是关系模型的理论基础

    • 选择操作σ 从一个表中把满足条件的元组选出来
    • projection 投影操作π 将需要的属性列出来
    • 笛卡尔乘积× 两个关系的拼接
    • 集合差- 把属于关系A不属于关系B的元组找出来
    • 把两个模式相同的元组并起来

    并兼容:属性的个数一样,对应属性的类型一样;
    满足并兼容的关系才可以做并,交,差操作;

    这5种操作是关系代数的基本操作,剩下的操作都可以用这5种操作表示;

    连接操作:笛卡尔积与选择操作的组合;

    • 条件连接操作:

      • 由笛卡尔乘积和选择操作的结合
      • 结果模式和迪卡尔乘积的模式相同
      • 连接操作的结果的元组数比笛卡尔乘积的结果元组要少
      • 也称为theta-join
    • 等值连接操作

      • 一种特殊的条件连接,连接条件只有等值的条件
      • 结果模式和笛卡尔乘积的模式类似,把等值的属性去掉一列
    • 自然连接:

      • 两张表在所有的公共属性上做等值连接【应用开发最常用的】

    除法操作:
    先举例
    在这里插入图片描述
    这种操作适合回答一种问题:
    比如找到选择了所有课程的学生;

    计算思路:比如对于A/B来说,我们要找在关系A中跟关系B中所有c值都有联系的s值

    • 先在A中找不满足除法条件的s
      • 先把A做一个投影,投影到s属性
      • 将投影结果和关系B做一个笛卡尔乘积
      • 用笛卡尔乘积结果-A
      • 对上一步结果做一个投影,投影到s
      • 把关系A所有的s值减去所有不满足条件的s值
      • 把关系A投影到s
    • 投影结果减去上一操作找到的所有不满足条件的s值

    外连接
    解决情况:在自然连接中不满足连接操作的元组想要保留下来。
    分类
    左外连接
    把连接运算符的左边的所有元组都要保留,找不到匹配的补空值
    右外连接
    把连接运算符的右边的所有元组都保留下来,找不到匹配的补空值
    全外连接
    把连接运算符的左右两边的所有元组都保留下来,找不到匹配的补空值
    在这里插入图片描述
    外并操作:
    有一些不满足并兼容的关系要做并交差;(类比迪卡尔积,没有的补空值)

    四.SQL

    • 数据定义语言【DDL】数据库定义 : 定义数据库中Table的名称、标题(内含的属性名称及对该属性的值的要求)等
      • DBMS提供一套数据定义语言(DDL:Data Definition Language)给用户
      • 用户使用DDL描述其所要建立表的格式
      • DBMS依照用户的定义,创建数据库及其中的Table

    在这里插入图片描述

    • 数据操纵语言【DML】数据库操纵 : 向数据库的Table中增加/删除/更新数据及对数据进行查询、检索、统计等
      • DBMS提供一套数据操纵语言(DML:Data Manipulation Language)给用户
      • 用户使用DML描述其所要进行的增、删、改、查等操作
      • DBMS依照用户的操作描述,实际执行这些操作
        在这里插入图片描述
    • 数据控制语言【DCL】数据库控制 : 控制数据库中数据的使用—哪些用户可以使用,哪些不可以
      • DBMS提供一套数据控制语言(DCL:Data Control Language)给用户
      • 用户使用DCL描述其对数据库所要实施的控制
      • DBMS依照用户的描述,实际进行控制在这里插入图片描述
    • 查询语言【QL】:select语句

    SELECT [DISTINCT] target-list
    FROM relation-list
    WHERE qualification

    • 关系列表 relation-list 【查询设计的表】
    • 目标列表 target-list 【要查询的东西】
    • 条件 qualification 【布尔表达式】
    • DISTINCT 可选字符,加了的话表明要求系统对查询结果的重复元组要消除。

    查询语句执行的基本策略

    • 把FROM子句里出现的表做笛卡尔乘积
    • 把笛卡尔乘积的觉果用qualification做筛选
    • 根据target-list 内的对上一步结果做投影
    • 如果有DISTINCT,将重复元组筛选

    复杂的查询:
    在这里插入图片描述
    找到A表中既在Class a里又在Class b里的id
    select id from A where class = ‘a’ and class = ‘b’;
    这种是错的

    正确的:
    要对表A做自连接(笛卡尔积)
    select A1.id from A A1, A A2 where A1.id = A2.id and A1.class = 'a' and A2.class = 'b'
    但是这种效率不高;
    可以用集合的交来做,就不会产生多余的数据:
    select id from A where class = 'a' intersect select id from A where class = 'b';
    mysql中要这样写
    select id from A where class = 'a' and id in(select id from A where class = 'b');
    这种叫做非关联嵌套子查询;

    在这里插入图片描述

    找到b班上人的姓名
    select B.name From B where EXISTS (select *from A where A.class = 'b' and A.id = B.id);
    这种叫做关联嵌套子查询
    exists是存在的意思,也就是前面的id后面那个不令后面的查询为空,
    可以看成一个二层循环;

    展开全文
  • 数据库_基本原理

    2016-07-06 12:56:06
    数据库在日常的Web开发中基本是必需品,我们开发人员除了会基本的SQL操作语言外,还是需要对数据库基本原理有所了解的,我想结合这篇文章做个自己的总结: “如果有人问你数据库的原理,叫他看这篇文章” 主要记录...

    数据库在日常的Web开发中基本是必需品,我们开发人员除了会基本的SQL操作语言外,还是需要对数据库的基本原理有所了解的,我想结合这篇文章做个自己的总结:

    如果有人问你数据库的原理,叫他看这篇文章

    主要记录我对数据库一般架构、索引、查询优化的理解。

    从开发人员的角度看,数据库一般由如下的架构:


    客户端访问数据库服务端时,一个查询主要会经过Client Manager, Query Manager, Data Manager。我理解的数据库最核心的地方应该是Query Manager中的查询优化算法以及Data Manager中的数据存储结构。

    现代的数据库都在采用基于成本的优化算法来优化查询,数据库大多数时候瓶颈在于磁盘I/O


    展开全文
  • 数据库系统原理数据库系统概述基本概念

    千次阅读 热门讨论 2021-03-04 22:40:56
    数据库系统概述基本概念 主要内容: 一、数据 (1)数据的性质 (2)数据的一种分类形式 二、数据库 (1)数据库的概念 1.数据库技术本质是一种数据管理技术 2.数据库的定义 (2)数据库的特点 (3)数据库的操作 1.数据库的...

    数据库系统概述基本概念

    在这里插入图片描述

    一、数据

    (1)数据的性质

    • 数据和其语义环境密切相关
    • 关系模型中数据通过型来给出数据的语义
    • 现实生活中的数据往往不是孤立存在的,它们之间是有联系的

    数据通常有型和值之分 数据的型指的是数据的结构,数据的值指的是数据的具体取值

    (2)数据的一种分类形式

    • 结构化数据:二维表

    • 半结构化数据:HTML文档

    • 非结构化数据:文档、文本、图片、各类报表、图像、音频、视频等

    二、数据库

    (1)数据库的概念

    1.数据库技术本质是一种数据管理技术

    • 数据管理的定义

      • 数据管理顾名思义就是对数据的管理,具体来说是指使用电子计算机对数据进行分类、组织、存储、检索和维护
    • 数据管理的例子

      • 零售业:管理产品、客户和购买信息
      • 银行业:管理客户、帐户和存贷款
      • 制造业:管理订单、库存、销售等
      • 图书馆:管理图书、读者和借阅信息
      • 学校:管理学生、教师、课程和成绩

    2.数据库的定义

    数据库(Database,简称DB)是持久储存在计算机中、有组织的 、可共享的大量数据的集合

    (2)数据库的特点

    • 数据库中的数据按一定的数据模型组织、描述和存储
    • 可以被各种用户共享
    • 具有较小的冗余度
    • 较高的数据独立性
    • 并且易于扩展

    (3)数据库的操作

    1.数据库的基本操作

    • 数据查询

      从数据库系统中(我们暂且称它为数据库)查找用户需要的信息。

    • 数据插入

      将新的数据输入到数据库中 用数据库的术语,这种操作称作“插入“

    • 数据修改

      修改数据库中某些数据,质上,修改可以用删除+插入实现 然而,修改作为 种单独的操作是方便的

    • 数据删除

      从数据库删除不再需要的数据

    2.实际应用对数据操作的要求

    • 并发访问

      允许多个用户同时对数据库中的数据进行访问

    • 面临故障

      各种各样的故障都可能发生,必须确保数据在任何情况下都不被破坏

    • 数据的安全性

      防止用户对数据进行未经授权的访问

    • 数据的完整性

      防止不符合语义的数据进入数据库

    • 数据的一致性

      防止数据库进入不 致状态 有些操作必须作为 个整体(原子性)

    三、数据库管理系统

    (1)数据库管理系统的定义

    数据库管理系统(Database Management System,简称DBMS)是位于用户和计算机操作系统之间的数据管理软件,专门用来管理数据,是计算机系统的基础软件

    (2)数据库管理系统的主要功能

    • 数据定义

      提供数据定义语言 (Data Definition Language, DDL), 用千定义数据库中的数据对象和它们的结构。

    • 数据操纵

      提供数据操作语言 (Data Manipulation Language, DML), 用千操作数据,实现对数据库的基本操作(查询、插入、删除和修改)。

    • 事务管理和运行管理

      统一管理数据、控制对数据的并发访问,保证数据的安全性、完整性,确保故障时数据库中数据不被破坏,并且能够恢复到一致状态。

    • 数据存储和查询处理

      确定数据的物理组织和存取方式,提供数据的待久存储和有效访问;确定查询处理方法,优化查询处理过程。

    • 数据库的建立和维护

      提供实用程序,完成数据库数据批量装载、数据库转储、介质故障恢复、数据库的重组和性能监测等。

    • 其他功能

      包括 DBMS 与其他软件通信、异构数据库之间数据转换和互操作等

    四、数据库系统

    (1)数据库系统的组成

    在这里插入图片描述

    • 数据库应用(DBAP): DataBase Application

      • 用户

        • 初级用户

          • 不必知道数据库的逻辑结构,通过预先编制的数据库系统应用软件或浏览器访问数据库
        • 应用程序员

          • 编写数据库应用程序的计算机专业人员
        • 富有经验的用户

          • 可以直接使用数据库查询语言来表达他们的查询请求。查询被直接提交查询处理器解释执行。这类用户通常是数据分析人员
        • 专业用户

          • 主要使用数据库存储和管理他们的数据。由于数据的处理不同于传统的事务处理,他们需要编写专门的程序处理数据。这类程序包括计算机辅助设计系统、专家系统、多媒体系统等。
    • 应用开发工具

    • 数据库管理系统(DBMS): Database Management System

    • 数据库(DB): Database

    • 数据库管理员(DBA): DataBase Administrator

      • 使用数据库可以对数据的访问进行集中控制。负责管理数据库,实施数据的集中控制

        • 决定数据库中的信息内容和数据的逻辑结构
        • 决定数据库的存储结构和存取策略
        • 定义数据的安全性要求和完整性约束条件。
        • 数据库系统的日常维护
        • 数据库的重组和重构

    (2)数据库系统结构

    1.数据库系统的外部结构

    • 单用户系统

      最简单的结构是单用户数据库系统。在这种系统中,整个数据库系统(包括应用程序、DBMS 、数据)都安装在一台计算机上,为一个用户所独占,不同机器之间不能共享数据。

      • 缺点:
        • 一个用户独占,不同机器之间不能共享数据
    • 主从式系统

      一台主机带多个终端的多用户系统。数据库系统(包括应用程序、 DBMS、数据)都集中存放在主机上。所有处理任务都由主机来完成。用户通过主机的终端并发地访问数据库,共享数据资源。

      • 优点:

        • 系统简单,数据易于管理、维护
      • 缺点:

        • (1)终端用户数增加,导致系统性能大幅度下降;
        • (2)系统的可靠性不高, 当主机出现故障时,整个系统都不能使用
    • 分布式系统

      数据在逻辑上是一个整体,但物理地分布在计算机网络的不同节点上。网络中的每个节点都可以独立处理本地数据库中的数据,执行局部应用;也可以同时存取和处理多个异地数据库中的数据,执行全局应用。

      • 优点:

        • 适合地理上分散的公司、团体和组织对于数据库应用的需求;提高系统的可靠性

        • 缺点:

          • 数据的分布存放给数据的处理、管理与维护带来一定困难;当用户需要经常访问远程数据时,系统效率会明显地受到网络交通的制约
    • 客户服务器系统

      把 DBMS 功能和应用分开。网络中某些节点上的计算机专门用千执行 DBMS功能,称为数据库服务器(简称服务器)。其他节点上的计算机安装DBMS 的外围应用开发工具,支待用户的应用,称为客户机。

      • 优点

        • 客户端的用户请求被传送到数据库服务器,数据库服务器进行处理后只将结果返回给用户,从而显著减少了数据传输量;数据库更加开放
        • 客户与服务器一般都能在多种不同的硬件和软件平台上运行,可以使用不同厂商的数据库应用开发工具,应用程序具有更强的可移植性,可以减少软件维护开销
    • 浏览器-服务器系统

      B/S系统中,用户通过浏览器向分布在网络上的许多服务器发出请求。简化了客户机的工作,客户机上只需安装、配置少量的客户端软件,服务器将担负更多的工作,对数据库的访问和应用程序的执行在服务器上完成

      • 优点

        • 只要能上网,由系统管理员分配一个用户名和密码,就可以使用
        • 分布性强、维护方便、开发简单且共享性强、总体拥有成本低
      • 缺点

        • 数据安全性对服务器要求过高、数据传输速度慢、软件的个性化特点明显降低
        • 难以实现传统模式下的特殊功能要求。例如通过浏览器进行大量的数据输入或进行报表的应答、专用性打印输出都比较困难和不便

    2.数据库系统的内部结构

    在这里插入图片描述

    ①三级模式
    • 外模式

      • 外模式(external schema)也称子模式或用户模式

        • 介于模式与应用之间,是特定数据库用户的数据视图,是与某一具体应用相关的数据局部逻辑结构的描述
        • 理想地,所有的应用都建立在一个外模式上,但是实际上,DBMS都允许应用程序直接访问模式
    • 模式

      • 模式是数据库中全体数据的总体逻辑结构描述,是所有用户的公共数据视图
      • 模式处于数据库系统模式结构的中间层
      • 模式的定义包括:数据项的名字、类型、取值范围、数据之间的联系、数据有关的安全性和完整性要求
    • 内模式

      • 内模式(internal schema)也称存储模式或物理模式

      • 内模式是数据物理结构和存储方式的描述,定义数据在数据库内部的表示方式

      • 内模式到物理存储器的映射通常由操作系统实现

    ②二级映像
    • 外模式-模式映像

      • 外模式-模式映像定义外模式与模式之间的对应关系

        • 每一个外模式都有一个对应的外模式-模式映像,建立外模式中的数据对象与模式中的数据对象之间的对应关系
        • 外模式-模式映像可以保证外模式的相对稳定性,为数据的逻辑独立性提供了保证
    • 模式-内模式映像

      • 模式-内模式映像定义数据全局逻辑结构与存储结构之间的对应关系

        • 模式-内模式映像可以保证模式,进而保证外模式的相对稳定性
        • 当数据的存储结构(内模式)改变时,数据库管理员可以修改模式-内模式映像,使得模式保持不变。这为数据的物理独立性提供了保证
    数据独立性

    数据独立性是指数据与应用程序相互独立,分数据的逻辑独立性和数据的物理独立性两种。

    • 逻辑独立性
      数据的逻辑独立性是指应用程序与数据库的逻辑结构之间的相互独立性。当数据的逻辑结构改变时,通过修改外模式-模式映像,保待外模式不变,从而使得建立在外模式上的应用程序也可以不变。
    • 物理独立性
      数据的物理独立性是指应用程序与存储在磁盘上的数据库中数据之间的相互独立性。当数据的物理存储结构改变时,通过修改模式-内模式映像,保待模式不变 。由千外模式是定义在模式上的,模式不变,则外模式不需要改变,从而使得建立在外模式上的应用程序也可以不变。
    展开全文
  • 数据库系统原理 - - (5)数据库编程

    万次阅读 2020-07-19 12:09:42
    数据库系统原理
  • 数据库原理

    2018-12-26 22:33:06
    一、数据库基本原理   数据库技术是应数据管理任务的需要而产生的。数据管理经历了三个阶段:人工管理阶段、文件管理阶段、数据库系统阶段。数据库系统与其他两个系统比,有许多优点:1)数据结构化 ;2)数据的...
  • 数据库原理基本概念

    千次阅读 多人点赞 2020-02-28 18:16:02
    数据库原理这门课已经学了一周多了,基础概念知识比较多,也比较杂,下面整理一下,也算是增加一点记忆。 ** 数据库的四个基本概念 ** 数据(Data):数据是描述事物的符号记录,数字,文字,图像,音频,视频,学生...
  • 数据库系统原理 - - (3)数据库设计

    万次阅读 2020-07-03 08:55:25
    上一篇:数据库系统原理【一】 文章目录第三章:数据库设计1.数据库设计概念1)数据库的生命周期2)数据库设计的目标3)数据库设计的内容4)数据库设计的方法a. 直观设计法b.规范设计法c.计算机辅助设计法5)数据库...
  • 丑小鸭进化 之 数据库系统原理基本概念

    千次阅读 热门讨论 2014-01-26 21:44:25
    数据管理技术的发展经历了人工管理、文件系统、数据库和高级数据库阶段。  从事物的特性到计算机的具体表示,数据描述经历了三个阶段-概念设计、逻辑设计和物理设计。
  • 数据库原理数据库基本概念

    千次阅读 2018-12-01 10:53:45
    数据(Data)是数据库中存储的基本对象 数据的定义:描述事物的符号记录 数据的类型:文本,图像,图形,音频,视频,学生档案记录,货物的运输情况等 数据的特点:数据与其语义是不可分的 数据库 数据库的...
  • 数据库原理习题

    万次阅读 2020-09-07 18:39:47
    数据库原理是每个计算机专业的学生必须掌握的课程之一,所以学好数据库原理对日后实际工作和项目十分重要。这篇博客通过总结广州大学数据库原理课程和教材中的例题,希望能够对数据库原理加深理解。
  • 数据库系统原理(一)——数据库系统基本概念

    千次阅读 热门讨论 2014-08-30 14:36:48
     (1)表达了DB的整体逻辑结构,它是设计人员对整个应用项目数据库的全面描述。(整体)  (2)是从数据库实现的观点出发,对数据建模。(观点)  (3)独立于硬件,但依赖软件。(独立性)  (4)是...
  • 数据库系统原理

    千次阅读 热门讨论 2017-08-07 20:29:42
    第二阶段的自考课本开始几天了,最近一直再看数据库系统原理,什么函数依赖?什么模型之间的转换?确实有点压力,不过难度有是一定的,看到大家都如此努力的学习,那就加紧脚步吧! 下面是我对数据库原理系统前三章...
  • mysql01-数据库系统的基本原理 数据库系统的概念 数据(Data) 数据库储存的基本对象,描述现实世界中各种事物的符号记录 特点:数据与其语意是不可分的 数据库(DB) 长期存储在计算机内,有组织,可共享的大量数据...
  • Java应用程序访问数据库基本原理  在Java语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁,  即Java语言通过JDBC技术访问数据库。JDBC是一种“开放”的方案,它为数据库应用开发人员﹑...
  • 文章目录一、考试介绍第一章:数据库系统概论1、数据库基本概念a、什么是数据?b、什么是数据库?c、数据库中存储的数据的三个基本特点d、数据库管理系统及其功能e、数据库系统的构成2、数据管理技术的发展a、人工...
  • 关系数据库 一、关系操作 1.基本关系操作: 关系模型中常用的关系操作包括查询(query) 操作和插入(insert)、 删除(delete)、修改(update) 操作两大部分。 关系的查询表达能力很强,是关系操作中最主要的部分。...
  • 处理机制的简单原理和应用。 当 JAVA 程序 违反了JAVA 的 语义规则时,JAVA 虚 拟机就会将发生的错误表示为一个异常。违反语义规则包括2 种情况。一种是 JAVA 类库内置的语义检查。例如数组下标越界, 会引 发...
  • 数据库审计系统简介 什么是数据库审计? 数据库审计是记录数据库被访问行为的日志系统。 访问数据库的一般有两种行为,一种是应用服务区的访问,一种是数据库运维人员的访问。 数据库审计(简称DBAudit)能够实时...
  • 数据库连接池的作用与基本原理

    万次阅读 2016-12-14 10:55:43
    1. 基本原理:在内部对象池中,维护一定数量的数据库连接,并对外暴露数据库连接的获取和返回方法。 如外部使用者可通过getConnection方法获取数据库连接,使用完毕后再通过releaseConnection方法将连接返回,注意...
  • 数据库原理——基本概念

    千次阅读 热门讨论 2014-08-29 16:30:37
    那就是我们怎样操作数据库中的数据啊,不能让数据库只能存储一次数据啊,我们还需要对数据进行 增 删 改 查 操作,这就是我们介绍的数据库管理系统(DBMS)这里我们要和数据库系统(DBS)区分开,DBMS的操作对象时...
  • 数据库系统原理之第一章数据系统基本概念总结

    千次阅读 热门讨论 2014-08-26 20:33:06
    昨天,听了米老师的讲课之后突然对原本“晕晕乎乎”的数据库有了新的认识,一下便是听了米老师的讲解之后又结合我自己的理解还有小童师姐的帮助下对《数据库系统原理》第一章的认识:  首先,将第一章分了三大类:...
  • 本场 Chat 将带你全面了解图数据库的使用场景、基本原理、以及入门。 现实世界什么情况下可以使用图数据库; 图数据库 Neo4j 的原生图处理和原生图存储的基本原理; 构建基于图数据库 Neo4j 应用的入...
  • 数据库设计原理

    千次阅读 2016-12-06 22:09:22
    数据库设计原理 数据库设计要解决的两个问题: (1)如何把数据组织到一组相关的表中? (2)在每个表中应该放什么样的数据元素? 18.1 规范化 规范化的目标: (1)消除冗余数据。 (2)消除...
  • 数据库系统原理总结

    千次阅读 热门讨论 2014-09-24 19:14:04
    重新拿起数据库原理,感觉明显不一样了。重新学习,学到的东西多了很多,出来混总是要还的,上次不会的,这次都得重新学一次。 关于数据库系统原理,我来讲讲我自己的理解: 1.数据库基础 2.关系运算 3.数据库...
  • 数据库基本构成和原理

    千次阅读 2018-09-30 13:57:11
    数据库基本构成和原理 1.数据库(Database,DB)是什么 数据库是按一定结构组织并可以长期存储在计算机内、在逻辑上保持一致的、可共享的大量相关联数据的集合。数据库中的数据按一定的数据模型组织、描述和储存,...
  • 自考《数据库系统原理》(1)之基本概念

    千次阅读 热门讨论 2014-08-11 11:27:58
    数据库系统原理》的课后习题解答在这里应有尽有,一定能帮到你。复习的时候看着这个效果相当不错! 以上图的内容是我对本章节的宏观上的一些了解,细化的知识点书本上都有,就不在这里一一总结了。 注意:在...
  • 数据库系统原理填空题

    万次阅读 2020-08-11 17:27:39
    66、关系模型的基本数据结构是(关系 (或二维表 ) ),其数据库存储时基本组织方式是 ( 文件)。 67、SQL语言的使用方式有两种, 一种是 (交互式 ) ,另一种是 ( 嵌入式)。 68、视图是一种虚表,它是从 ( 基本表 )...
  • 数据库索引原理及优化

    千次阅读 2019-03-07 09:20:00
    点击上方“方志朋”,选择“置顶或者星标”你的关注意义重大!摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引...
  • MySQL数据库原理

    千次阅读 2018-05-21 18:03:47
    首先要了解原理。不得不说说。MySQL的执行流程。MySQL是一个单进程的服务,对于每一个请求都是用线程来响应的。这就需要一个连接器来处理新用户的请求、响应以及销毁。 1.客户端请求,服务端(连接器)开启线程响应...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 376,800
精华内容 150,720
关键字:

数据库的基本原理