数据库
什么是数据
人物、时间、地点、环境等信息都是数据;
什么是数据库
数据库是一个数据集合;只要是数据的集合都可以称为数据库,不限于数据类型(电子数据、卡片、纸张),也不限于系统类型(电子表格、卡片集合、DBMS);
Excel 是数据库;MySQL、Oracle 是数据库;Redis、Etcd 是数据库;一本书也是数据库;
为什么需要数据库
数据是需要被进行管理的,这样以便于进行分析,只有被管理和分析的数据才具有价值;
DBMS
什么是DBMS
广义的数据库是数据集合,而计算机领域的数据库实际上是DBMS(Database Management System);数据库只是一个数据集合,很简单,但DBMS是一个管理数据库的软件,为了使得数据操作更快,DBMS实现了索引;为了保证数据的安全性,DBMS实现了用户管理;为了使得数据操作不会出错,DBMS实现了事务,因此DBMS才是‘真正’的数据库;
MySQL / Oracle 其实是一个 DBMS 系统,因为数据库都是存储在计算机的磁盘上,而只是由于操作数据的方式不同所以出现了MySQL和Oracle以及其他一些软件,不同的DBMS软件具有一些相同和不同的特征,但所有的目的只是为了管理这些数据(数据集合即数据库);
注意:虽然MySQL、Oracle、PgSQL等都是DBMS,但在计算机领域或场景下,我们也可以将其称为数据库,毕竟名词的目的就是让我们保持共识。
MySQL is a database management system
一些DBMS的特性
事务
通常 DBMS 可以 选择是否支持 事务,RDBMS 和 NewSQL 支持 ACID 特性的事务,而一些 NoSQL 可能仅支持简单的事务或根本不支持;
如MySQL支持事务、Redis仅支持事务的批量执行,但不保证出错回滚;
并发控制
通常支持事务的 DBMS 都会支持并发控制,因为这是并发下的必然问题,因此必须解决,而一般RDBMS都支持MVCC + 其他协议的并发控制协议,一些NoSQL可能不支持或仅使用多粒度锁实现。
如Redis使用单线程保证并发操作,MySQL使用MV2PL保证并发操作,PGSQL使用MVTO保证并发操作等;
索引
数据集合本身并没有索引概念,只是DBMS在其系统上建立了一套索引机制,使得用户通过DBMS可以使用索引更快的检索数据;(MySQL通过B+树在其软件内部建立了索引结构,更快的操作数据)
DBMS 功能
- 提供各种数据操作;插入、删除、创建等;
- 提供用户管理;
- 备份与恢复;数据备份恢复和迁移;
- 事务;
参考:
DBMS 三层架构
物理层
真实的数据存储方式,数据都是存储在文件(本质也是磁盘块)或磁盘块上的;
DBMS屏蔽了数据真实的存储状态;
逻辑层
通过树状、表、网状等结构在DBMS中抽象出了这个结构;
视图层
为用户提供简单的视图抽象;
为什么需要 DBMS
数据库只是数据集合,而为了保证数据的安全性、一致性、操作速度等,需要一个软件来进行统一管理,而DBMS就是此软件,DBMS通过多用户保证安全性,通过事务保证ACID,通过索引保证操作速度,关系型的DBMS还通过表、列、行、Key等方式保证数据之间的关联性;
DBMS 与 Database 区别
- Database是数据集合;DBMS是数据库管理系统(仅仅是用来管理Database的软件);
- Database通过手动或其他方式操作数据;DBMS通过SQL操作;
| Category | Database | DBMS |
|---|---|---|
| Definition | A database is a collection of connected information about people, locations, or things. | A database management system (DBMS) is a collection of programs that allow you to create, manage, and operate a database. |
| Storage | Besides computers, databases can even be maintained in physical ledgers, books, or papers. | In a database management system (DBMS), all the records are maintained only on a computer. |
| Data Retrieval | The retrieval of information from the databases can be done manually, through queries, or by using programs (C, C++, Java, etc.). | We can retrieve the data from the database management system through queries written in SQL. |
| Speed | As databases can be handled manually or via computers, when SQL is not used to retrieve information, it can be very slow. | As a computer system is involved in a database management system, the retrieval of information is very quick. |
| Access | The databases are not designed for a large number of people who can access data at the same time, rather it is designed for a very small number of people (preferably few people) who access data at different times. | The database management system is designed for a large number of people who can access the data at the same time. |
| Data | Data is stored in databases. | A database management system (DBMS) manages and manipulates data. |
| Data Manipulation | In the case of the databases, very less information can be modified at a time. | In the database management system (DBMS), a lot of information can be changed at one time (as it can have many users using it at the same time). |
| Backup and Recovery | The databases do not ensure that the data will be available after failure arises. | The database management system (DBMS) ensures that the data will always be available even after system failures. |
www.geeksforgeeks.org/difference-…
Excel 为什么不是一个‘真正’的数据库
Excel 是一个数据库,但计算机场景下的数据库是DBMS,此‘真实’数据库需要具备一定的DBMS特性,如多用户、索引、ACID等,这些特性Excel没办法保证,因此其是一个数据库,但并非计算机场景下的数据库(DBMS);
应用场景
首先是数据集合,其次按照数据结构、数据量等特性来决定
最重要的是要存储我们的数据,不一定就先考虑到MySQL、Oracle之类的,而是针对数据集合的特性,来决定我们希望以什么样的方式存储我们的数据, 如果仅仅是存储数据用于分析,那么我们应该选择的是OLAP数据类型的DBMS;如果需要要求数据有严格的事务特性,并且是安全的,那么最好是使用OLTP数据库;深刻的理解;
DBMS 种类
不同DBMS之间的区别本质上只是根据不同需求而实现的一套管理数据的方式。
分层数据管理系统
数据是根据树形结构存储,数据库中只有一个根节点,每个记录信息都是一个节点,节点之间的关联关系通过父子节点的关系结合。
优缺点
优点:
缺点:节点只能只能是一对多关系,无法做到多对多,数据冗余;
网状数据管理系统
数据存储方式基本和分层模式一样,不同点在于网状存储支持了多对多,每一个节点可以多个节点,而分层数据库只能支持一个节点对应一个父节点。
关系型数据管理系统
数据存储方式以表+行列的结构存储,关系型数据库是现在一直在使用的模式,多用于结构化数据;
beginnersbook.com/2015/04/rel…
NoSQL 数据管理系统
数据存储方式多种多样,针对高性能读写的K-V数据库,针对大数据存储的列式存储,针对文档类型的文档型数据库;
关系型数据库存储结构化数据非常方便,但针对一些非结构化数据不太容易存储,如一个JSON结构、如一个商品描述信息长字符串等;因此出现了NoSQL数据库;
分布式数据管理系统
分布式数据库存储方式和关系型数据库类似,但不同的是传统的关系型数据库通常来说只提供单实例或简单的高可用机制,但对于互联网今天数据量大大增加,单台服务器无法承担这些数据,因此只能采用分库分表等方式人为解决;而分布式数据库就是在传统数据库的基础上增加了分布式场景下的ACID机制,并且支持了数据分片能力;
数据仓库
传统数据库更重要的是数据的存储功能,但大数据情况下,数据还需要进行分析等,此时传统的数据库在面对此情况比较乏力,因此出现了针对大数据量的数据仓库,如OLAP数据库;
参考
15445.courses.cs.cmu.edu/fall2021/
存储
Build your own DBMS from the first principles
Lecture #03: Database Storage (Part I)
CS 44800: Introduction To Relational Database Systems
Database System Internals CSE 444 - Spring 2021 Data Storage and (more) Buffer Management
索引
www.javatpoint.com/dbms-concur…