这是我参与「第五届青训营」伴学笔记创作活动的第 13 天
本节课主要介绍:
一.经典案例
1.1从一场红包雨说起
从抖音的账户上扣除一个小目标:
UPDATE account table SET balance=balance-'小目标' WHERE name='抖音';
给羊老师的账户加上一个小目标:
UPDATE account table SET balance-balance+'小目标' WHERE name='羊老师';
1.2 RDBMS事务ACID
事务(Transaction):是由一组SQL语句组成的一个程序执行单元(Unit),它需要满足ACID特性。
ACID:
1.原子性(Atomicity):事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生
2.一致性(Consistency):数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
3.隔离性(Isolatio):多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
4.持久性(Durability):在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
1.3红包雨与ACID
Case1:抖音的账户上扣了一个亿之后,假设服务器挂了,还没来得及给羊老师账户上加一个亿
原子性Atomicity: 两个操作要么同时成功,要么同时失败,不存在中间状态。
Case2:假设抖音的账户上只有0.5个亿,但是扣减1个亿的操作成功了。
致性Consistency: 每个操作都必须是合法的,账户信息应该从一个有效的状态变为另一个有效的状态。
Cse3:羊老师从抖音抢了一个亿红包,又从头条抢了一个亿,两个转账同时进行,假设他们都以为是从零开始 更新羊老师的账户余额,羊老师最后得到一个亿。
隔离性Isolation: 两个操作在对同一个账户并发进行操作时,应该是相互不影 响,表现的像是串行操作。
Case4:抖音的账户上扣了一个亿,然后羊老师账户上加一个小目标,但都还没写到磁盘上。这个时候,如果服 务器挂了
持久性Durability: 操作更新成功之后,更新的结果应该永久性的保留下来,不会因为宕机等问题而丢失。
红包雨与高并发: Case5:全国14亿人,假设有10亿人同时开抢红包,每秒处理一个请求,那需要31年才能完成。春节完了,抖音 可能也被大家嫌弃了。--高并发Concurrency
红包雨与高可靠:
Case6:假设除夕晚上大家正在愉快的从抖音身上"薅羊毛”,这时候服务器挂了,程序员花了一个小时,头发都 掉光了,终于修好了。这时候发现李谷一老师《难忘今宵》都唱完了。“抖音宕机”秒上热搜……- High Reliability/Availability
二.发展历史
2.1前DBMS时代-人工管理
在现代计算机发明出来以前,通过人工的方式进行数据记录和管理
2.2前DBMS时代-文件系统
1950s,现代计算机的雏形基本出现。1956年IBM发布了第一个的磁盘驱动器-Modl305 RAMAC,从此数据存储进入磁盘时代。在这个 阶段,数据管理直接通过文件系统来实现。
2.3DBMS时代
1960s,传统的文件系统已经不能满足人们的需要,数据库管理系统(DBMS)应运而生。
DBMS:按照某种数据模型来组织、存储和管理数据的仓库。 所以通常按照数据模型的特点将传统数据库系统分成网状数据库、层次数据库和关系数据库三类。
2.3.1DBMS数据模型-网状模型
网状数据库所基于的网状数据模型建立的数据之间的联系,能反映现实世界中信息的关联,是许多空间对象的自然表达形式。
1964年,世界上第一个数据库系统一集成数据存储(Integrated Data Storage,IDS)延生于通用电气公司。IDS是世界上第一个网状数据库,奠定了数据库发展的基础,在当时得到了广泛的应用。在1970s网状数据库系统十分流行,在数据库系统产品中占据主导地位。
2.3.2DBMS数据模型-层次模型
1968年,世界上第一个层次数据库一信息管理系统(Information Management System,IMS)延生于IBM公司,这也是世界上第一个大型商用的数据库系统。层次数据模型,即使用树形结构来描述实体及其之间关系的数据模型。
2.3.3DBMS数据模型-关系模型
1970年,BM的研究员E.F.Codd博士发表了一篇论文,提出了关系模型的概念,奠定了关系模型的理论基础。1979年Oracle首次将关系型数据库商业化,后续DB2,SAP Sysbase ASE,and Informix等知名数据库产品也纷纷面世。
2.4DBMS数据模型
2.5 SQL语言
1.语法风格接近自然语言
2.高度非过程化
3.面向集合的操作方式
4.语言简洁,易学易用。