第一章---数据库介绍
一、数据库管理软件的由来
基于我们之前对数据的了解,数据想要进行永久保存,一般都是保存到文件中,但是一个文件仅仅只能存在于某一台机器上。
如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运行在一台机器上,那么用文件存取数据,并没有问题。
很不幸,这些假设都是你自己意淫出来的,上述假设存在以下几个问题。。。。。。
1、程序所有的组件就不可能运行在一台机器上
# 因为这台机器一旦挂掉则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的,受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。
# 于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行。
2、数据安全问题
# 根据1的描述,我们将程序的各个组件分布到各台机器,但需知各组件仍然是一个整体,言外之意,所有组件的数据还是要共享的。但每台机器上的组件都只能操作本机的文件,这就导致了数据必然不一致。
# 于是我们想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(用socket实现),即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理。。。。
3、并发
# 1.远程连接(支持并发)
# 2.打开文件
# 3.读写(加锁)
# 4.关闭文件
总结
我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题,总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写。
ps:mysql数据库管理软件是一个cs架构的套接字程序,该程序的基本流程就是客户端提交命令给服务端运行,然后服务端将结果返回给客户端,所以说白了数据库管理软件如mysql本质就是一个远程执行命令的套接字程序,数据库管理软件提供的这套命令称之为sql。
二、数据库基本概念
1、什么是数据(Data)
事物的状态
2、什么是记录
就是一组数据所构成,相当于文件中的一行内容,如1,Tmars,male,22
3、什么是表
文件
4、什么是库(DataBase,简称DB)
文件夹
5、什么是数据管理系统(DataBase Management System 简称DBMS)
管理数据的套接字软件,CS架构
6、什么是数据库服务器
运行有DBMS服务端的计算机,该计算机对内存和硬盘要求都相对较高
三、数据库管理软件分类
简单分为两类
- 关系型数据库(RDBMS:Relational Database Management System)
sqllite
db2
access
sql server
微软公司的产品,主要应用于大中型企业,如联想、方正等。
oracle
主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。
也是甲骨文公司的产品。
MySQL
主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码
因为开放源代码这个数据库是免费的,他现在是甲骨文公司的产品。
MariaDB
SUN被甲骨文收购后,MySQL 的原创人员有拉出另外一个分支,
命名MariaDB 。该数据库被维基百科,Facebook 甚至 Google
等技术巨头使用。 MariaDB 是一种可为 MySQL 提供插件替换功能的
数据库服务器。开发人员的首要关注点是安全性,在每个版本发布时,
开发人员还会合并所有 MySQL 的安全修补程序,
并在需要时对其进行增强。
注意:sql语句通用
- 非关系型数据库
如
mongodb(可用来作为后端数据库管理软件)
redis(多用来作为缓存)
memcache(多用来作为缓存)
可以简单的理解为:
关系型数据库需要有表结构
非关系型数据库是key-value存储的,没有表结构
MySQL介绍
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
mysql本质是一个基于socket套接字编写的C/S架构的软件
客户端软件
mysql自带:如mysql命令,mysqldump命令等
python模块:pymysql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~