数据库入门概述
概念说明
数据库是什么?
是一个长期存储在计算机内的、有组织的、可共享的大量数据的集合。
它是一个用于存储数据的仓库,可以按照数据结构进行组织、存储和管理。数据库中的数据通常以表格的形式呈现,并按照一定的规则和模式进行存储。
简单理解和比喻:我们编写的execl文件(里面存放我们编写的表格数据),偏向于存储数据。
数据库管理系统(DBMS)是什么?
DBMS是一个大型复杂的基础软件系统,位于用户与操作系统之间的一层数据管理软件,为应用程序和用户提供了访问数据库的接口。
DBMS具有数据定义(提供数据库定义语言DDL),数据组织、存储和管理(提供数据操作语言DML),数据库的事务管理和运行管理(安全性等),数据库的建立和维护等功能。(简单理解,提供对数据的增删改查功能,数据一致性、并发性的管理功能、数据库创建和维护的功能等)
现实世界中更多的简称为数据库系统。
简单理解和比喻:创建、查询、更新、维护和管理execl的软件,例如office软件、wps软件,这里更偏向于软件。
数据库系统是什么?
数据库系统是一个更广泛的术语,它不仅仅包括数据库本身,还包括了整个与数据库相关的系统。
简单来说,数据库系统是一个完整的系统,它包括了计算机硬件、操作系统、数据库管理系统以及其他软件和工具。
为什么有execl这类电子表格,我们还需要开发和使用数据库?
简单列出几点:
1、数据量,execl文档存放的数据量有限,数据库存储的数据量可以理解为无限。
2、并发性,execl文档,只能一个用户进行更新,其他人只能读(打开查看),数据库允许对数据的最大并发访问,(只要不是同一行数据,可以同时并发更新),同时确保数据的完整性。
3、数据一致性,execl中的更新动作都是原子性。数据库中通过事务机制,可以保证一组逻辑上相关的操作要么全部完成,要么全部不做。
4、稳定性,专业的数据库软件实现数据的保存、管理、增删改查等,更加稳定可靠。
5、权限控制,数据库软件具备更精细化的权限控制。
当然,数据库还有很多很多execl不具备的优点,例如更高的性能、更高的用户访问、更适合的开发和调用、更专业的数据备份、数据保护等等,不再一一列举。
数据库系统的目的
收集、存储和检索相关的信息, 以供数据库应用程序使用(增删改查)。
基本数据库模型
***层次型:*层次数据库把数据组织在树状结构中。 每个父记录有一个或多个子记录,类似于文件系统的结构。
***网络型:*网络数据库类似于层次数据库,但有一个区别,即记录之间是多对多的关系,而不是一对多的关系。
上述两种数据模型需要按照严格的、预定义的关系存储数据。不存在任何数据定义语言,更改数据结构非常困难。 同时又缺乏一种简单的查询语言, 除非极度适合该类的场景,其它情况下,我们很少接触和使用到这类数据库。
关系型:
关系数据库将数据存储在一组简单的关系中(简单理解关系就是表格,我们将数据存储在表格中)。
关系是一个元组(数据行)的集合, 一个元组是一些属性值(列)的无序的集合。
表是一个关系的二维表示, 关系由行 (元组) 和列 (属性) 的形式构成。表中的每一行具有相同的列集。
关系数据库是一个将数据存储在关系(表)中的数据库。
NoSQL数据模型:
在传统的关系型数据库(SQL)统治的数据存储领域,NoSQL(Not Only SQL)数据库以其灵活性和可扩展性异军突起。与SQL数据库相比,NoSQL数据库通常不严格遵循表格模式,更易于水平扩展,适合处理大规模数据集。SQL数据库强调ACID(原子性、一致性、隔离性、持久性),而NoSQL则倾向于BASE(基本可用、软状态、最终一致性)原则,以牺牲一定程度的一致性换取高性能。
NoSQL数据模型概览:文档、列族、图形、键值
关系数据库管理系统(RDBMS)
作用
RDBMS将数据移入数据库、在数据库中存储和检索数据(增删改查),以便应用程序能对其进行操作。
逻辑操作
由应用程序指定需要哪些内容。例如,应用程序请求一个查询一行数据,或者向表中插入一条数据等。
物理操作
由RDBMS确定如何操作,并执行该操作。
例如,应用程序对表发出查询后,数据库可能会使用索引来查找请求的行、将数据读入内存,并执行许多其他步骤,最后向用户返回一个结果。
由RDBMS存储和检索数据,因此物理操作对于数据库应用程序是透明的。
从概念来补充理解
1)从概念来理解,我们常说的mysql、oracle等数据库,当我们只选择安装软件时,例如oracle安装时选择仅安装软件,mysql安装时,安装完不初始化(创建库),此时,我们安装的这些软件,我们更偏向于称为数据库软件,可以理解为数据库管理系统。
2)当我们创建数据库时,例如oracle dbca创建数据库,mysql初始化(或者初始化后,登录后create database创建库),我们在磁盘上会创建相应的一系列数据文件,例如oracle的数据文件、控制文件、日志文件;mysql体现为ibd类型的文件、日志文件,这些存储在磁盘上的,用于存储我们业务数据的文件(当然也包含数据库初始化后的元数据),这些可以理解为数据库。
从数据库补丁和升级角度理解
1)当我们只是进行小补丁、小版本升级时,往往只需要更新数据库软件,例如oracle单个补丁,都不需要更新数据字典(数据库),mysql小版本升级,也只需要软件替换即可,不需要更新数据字典(数据库)。
这一类对数据库软件进行修复的小补丁,一般只涉及软件代码修复和更新,不会涉及元数据的更新(因此无需更新数据库)。
2)当我们进行大补丁集、大版本升级时,需要同时更新数据库软件和数据库内部数据字典信息,例如Oracle psu/ru补丁集,版本升级,MySQL大版本升级,第一步需要更新升级数据库软件(或者替换),然后我们需要继续对数据库进行更新升级(因为大版本升级,数据库的功能、特性方面往往有很大的变动,那么数据库中的数据字典需要跟随调整,来实现这些升级变化)。