目录
数据库概述
前置:LAMP LNMP
企业架构,服务定位示例
前言:
数据:图片、视频、关系、音频、字符、字符串等等。
数据的作用:持久化保存(磁盘)、高可靠(宕机不会丢失,安全性保障),高可用(HA冗余、备份),数据的快速提取( 目录、索引)。
(1)描述事物的符号记录。
(2)包括数字,文字、图形、图像、声音、档案记录等。
(3)以“记录”形式按统一的格式进行存储。
(4)使用一些介质进行存储,例如文字存在文档中。
(5)数据库可以完成数据持久化保存+快速提取。
(6)数据如何保存:最外层是mysql服务→mysql 数据库→数据表→记录为行,字段为列→数据保存在一行行记录中。
(7)对于存储在数据库中的数据进行管理、使用,需要通过编写一系列的规则→SQL语句( 命令行形式)。
(8)SQL语句按功能分类:增删改查。
(1)将不同的记录组织在一起。
(2)用来存储具体数据。
(1)表的集合,是存储数据的仓库。
(2)以一定的组织方式存储的相互有关的数据集合。
是实现对数据库资源有效组织、管理和存取的系统软件。
(1)是一个人机系统,由硬件、OS、数据库、DBMS、 应用软件和数据库用户组成。
(2)用户可以通过DBMS或应用程序操作数据库。
(1)自20世纪60年代起,第一代数据库系统问世。
(2)是层次模型与网状模型的数据库系统。
(3)为统一管理和共享数据提供了有力的支撑。
(1)20世纪70年代初,第二代数据库一关系数据库开始出现。
(2)20世纪80年代初,IBM公司的关系数据库系统DB2问世,开始逐步取代层次与网状模型的数据库,成为行业主流。
(3)到目前为止,关系数据库系统仍占领数据库应用的主要地位。
引申:SQL+NoSQL组合使用(唯一性)SQL+MQ消息队列
为了解决单台SQL数据库处理并发能力有限的问题,为了提高用户加载时的反馈效率来提高体验感
web→redis→mysql
CPU→缓存→内存→磁盘 以前
i7 i5 一级 二级 缓存
(1)自20世纪80年代开始,适应不同领域的新型数据库系统不断涌现。
(2)面向对象的数据库系统,实用性强、适应面广。
(3)20世纪90年代后期,形成了多种数据库系统共同支撑应用的局面。
(4)一些新的元素被添加进主流数据库系统中。
例如,Oracle支持的"关系对象”数据库模型。
(1)面向Windows操作系统
(2)简单、易用
(1)面向所有主流平台,
(2)安全、完善,操作复杂
(1)面向所有主流平台
(2)大型、安全、完善
免费、开源、体积小
关系型数据库、非关系型数据库
(1)关系型数据库(SQL): 存储的往往是字符、字符串、数值、布尔值等 (磁盘)
(2)非关系型数据库(NoSQL) :存储的往往是图片、视频、语音等( 内存)
(3)时序数据库(TSDB) :心电图,持续性,根据时间点进行变化的一组连续性的数据(时序数据)
主要的核心数据→ Oracle PostgreSQL
菜单、普通数据→ Mysql 缓冲层文件系统
实体-关系 E-R
记录(行)表示了一个实体(的属性)
而E-R图:
实体与实体之间的联系(关系)
即表与表的关系
客户编码:主键(类比入学学号)
主键特性:唯一、 非空
盐值加密→用于与数据库通讯时
1.关系数据库系统是基于关系模型的数据库系统。
2.关系模型的数据结构使用简单易懂的维数据表。
3.关系模型可用简单的“实体关系” (E-R)图来表示。
4.E-R图中包含了实体(数据对象)、关系和属性三个要素。
也称为实例,对应现实世界中可区别于其他对象的“事件”或事物
如银行客户、银行账户等
实体所具有的某一特性, 一个实体可以有多个属性
如“银行客户”实体集中的每个实体均具有姓名、住址、电话等属性
实体集之间的对应关系称为联系,也称为关系
如银行客户和银行账户之间存在“储蓄”的关系
所有实体及实体之间联系的集合构成一个关系数据库
表
记录:行
字段(属性):列
以行+列的形式就组成了表( 数据存储在表中)
数据库
多张表存储在数据库中
"关系型数据库"表与表字段/属性的关联
关系数据库的存储结构是二维表格。
在每个二维表中
(1)每一行称为一条记录,用来描述一个对象的信息。
(2)每一列称为一个字段,用来描述对象的一个属性。
关系型数据库 | 应用举例 |
Oracle,MySQL | 12306用户信息系统 |
SQLServer、 Sybase | 淘宝账号系统 |
Informix、access | 联通手机号信息系统 |
DB2、FoxPRO | 银行用户账号系统 网站用户信息系统. |
MongoDB 、Redis (内存数据库/缓存数据库) K-V键值对、与之类似的Memcache, K-V键值对
redis -memecache对比:
相同点:存储高热数据(在内存中高速运行)
不同点(优势) : redis可以做持 久化保存(保存在磁盘),可以存储对象
K-V: workdir=/usr/ local/nginx/
KEY - VOLUME
关系型数据库:适用于对关系很明确的数据建立模型、定义、存储数据
非关系型数据库:存储海量数据,给与”大数据“进行分析,筛选出有价值的部分
引申: redis 持久化方式
以键值存储数据,数据保存在内存中,但会定期将数据写入磁盘(持久化方式)
高德:实时分析平台,
使用非关系型数据库存储,如果需要持久化,就可以使用redis
1.非关系数据库也被称作NoSQL (Not Only SQL)
2.存储数据不以关系模型为依据,不需要固定的表格式
3.非关系型数据库的优点
(1)数据库可高并发读写
(2)对海量数据高效率存储与访问
(3)数据库具有高扩展性与高可用性
4.常用的非关系数据库:Redis、mongoDB等
1.一款深受欢迎的开源关系型数据库
2.Oracle旗下的产品
3.遵守GPD协议,可以免费使用与修改
4.特点
(1)性能良好、服务稳定
(2)开源、无版权限制、成本低
(3)多线程、多用户
(4)基于C/S (客户端/服务器)架构
(5)安全可靠
5.日志
(1)数据库日志文件用于备份,恢复,故障定位、分析是最核心的部分
(2)mysql 与oracle 日志有所区别
(3)mysql 写一条数据,同步到日志中一条
PS:insert into ky11 (id, name, score) values (1, ' zhangsan' ,20) ;
(4)oracle:重做日志组
1)一个组中至少3个日志成员,轮流存储日志
2)还会有另一个组与之同步/备份
3)阿里云OSS对象存储,一式三份备份(使用重做日志组思想)
4)对象存储:存储大都是一些静态文件,图片、音频、视频
5)不能直接在对象存储中修改数据
6)飞天平台,盘古系统,钟馗:安全,女娲:选举/调度,盘古一式三份
6.Mysql存储引擎
myisam 和innodb
1)myisam: 快速读取,不支持事务
2)innodb: 更注重写,支持事务
7.mysql数据库管理
describe user;
(1)Mysql做为SQL数据库的特性Mysql的语言SQL语句来控制增删改查
(2)增删改查按照类型划分的
(3)具体的语句操作(基操)
基于SQL语句的进阶→更好的通过SQL语句的管理、控制,让Mysql处理能力更为效率
(4)高阶SQL语句用法
1)备份、恢复
2)集群设计、集群演变的理念:
3)单台Mysql→压力过大、同时数据存在单点故障的问题,要做冗余、备份
4)引申出第一个Mysql集群架构→主从复制(主-备)→mysq1性能不均衡→ I/0读写性能不均衡
5)引申出第二个Mysql集群架构→读写分离(主-备) →备用服务器是多个,但是Master服务器单个→Master服务器又存在了单点故障问题
6)引申出第三个架构→ MHA (master HA高可用) → 学习的集群
默认不需要小数点
整数
(5)常用的数据类型
int: 整型 | 用于定义整数类型的数据1 2 3 4 5 10 100 999 |
float: 单精度浮点4字节32位 | 准确表示到小数点后六位 |
double: 双精度浮点8字节64位 | 双精度支持存储的数字小数位更多 |
char: 固定长度的字符类型 | 用于定义字符类型数据。0100 char (70) 12345000000 |
varchar: 可变长度的字符类型 | varchar设置_上限 varchar (10) 123456789 123 |
text: 文本 | |
image: 图片 | |
decimal (5,2): 5个有效长度数字,小数点后面有2位 | 指定长度数组345.21 345.899 345.891 345. 89 345.90 |
Char (10)如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错。
截取2/ 截断2
原数据 | .899 | .891 |
截取 | .90 | .89 |
截断 | .89 | .89 |
(6) 数据库管理(基础的控制语言是SQL语句)
SQL 语句
SQL语言分类:
DDL: 数据定义语言,用于创建数据库对象,如库、表、索引等
DML:数据操纵语言,用于对表中的数据进行管理
DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
DCL:数据控制语言,用于设置或者更改数据库用户或角色权限
8.数据库管理操作:
查看数据库结构
describe table_ name;
表A
姓名 年龄 身高 体重
原表(字段):
姓名(varchar(40) ) 年龄(int (4)) 身高(decimal (5,2)) 体重(varchar (10))
desc user;
Field (字段) | Iype(数据类型) | Null | Key | Default | Extra |
Host | char (60) | NO | PRI | ||
User | char(16) | NO | PRI | ||
Password | char (41) | NO | |||
Select_ priv | enum('N', 'Y') | NO | N | ||
Insert_ priv | enum('N', 'Y') | NO | N | ||
Update_ priv | enum('N', 'Y') | NO | N |
Field: 字段名称
Type: 数据类型
Null :是否允许为空
Key:主键.
Default:默认值
Extra :扩展属性,例如:标志符列(标识了种子,增量/步长) 1 2
id 1 3 5 7
auto_ increment 自增长
1.MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用。
2.MySQL社区版是由分散在世界各地的MySQL开发者、爱好者一起开发与维护,可以免费使用。
3.两者区别
(1)商业版组织管理与测试环节更加严格,会比社区版更稳定。
(2)商业版不遵守GPL,社区版遵从GPL可以免费使用。
(3)商业版可获得7*24小时的服务,社区版则没有。
1.第一阵营: 5.0-5.1阵营,可说是早期产品的延续。
2.第二阵营: 5.4-5.6阵营,整合了MySQL AB公司、社区和第三方公司开发的存储引擎,从而提高性能。
3.第三阵营: 6.0-7.1阵营,就是MySQL Cluster版本,为适应新时代对数据库的集群需求而开发。
4.下载网址
http://www.dev.mysql.com/downloads