00. schema和table的区别
在数据库系统中,schema(模式) 是一种逻辑结构的概念,用来定义数据库对象(如表、视图、索引等)的组织方式和关系。它主要用来提供命名空间、权限管理和逻辑分组功能。
1. Schema(模式)
• 定义: Schema 是数据库中对象的逻辑分组,用于组织和管理数据库内的结构。它类似于一个容器,可以包含表(tables)、视图(views)、存储过程(stored procedures)、函数(functions)、触发器(triggers)等。
• 作用:
• 逻辑分组:将相关的对象归类在一起。
• 权限控制:不同的 schema 可以分配给不同的用户或角色,便于管理权限。
• 命名空间:同一 database 内,不同 schema 中可以有名称相同的对象。例如,schema1.table1 和 schema2.table1 是两个独立的表。
CREATE SCHEMA sales;
CREATE TABLE sales.orders (id INT, amount DECIMAL);
2. Table(表)
• 定义: Table 是数据库的基本存储单元,用于存储结构化的数据。它由行(row)和列(column)组成,每列有一个特定的数据类型。
• 作用:
• 存储具体的数据。
• 每个表必须属于某个 schema。
• 例子: d
01. 经典案例
一条数据从产生,到数据流动,最后持久化的生命周期
注册数据:
{
"uer_name": "小明";
"password": "helloworld";
}
注册数据不可能存在后端服务器的缓存中,必须要持久化
- 校验数据合法性:比如“小明”是否存在
- 修改内存:用搞笑的数据结构组织数据
- 写入存储介质:以寿命&性能有好的方式写入硬件,磁盘有硬件寿命,有对硬件寿命友好的写入方式
数据库如何保证数据不丢?
数据库怎么处理多人同时修改的问题?
为什么用数据库,除了数据库还能存到别的存储系统吗?
数据库只能处理结构化的数据吗?
有哪些操作数据库的方式,要用什么编程语言?
02. 存储&数据库简介
数据库和存储系统背景知识,它们是什么,有什么特点
一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就能称为存储系统
用户user
介质medium
内存memory
网络Network 海量数据、计算问题-》分布式的存储系统
存储系统是后端软件的底座,性能敏感
存储系统软件架构,容易受到硬件影响-〉有新的硬件浪潮的话,可能需要开发全新的数据库软件,跟上潮流
存储系统代码,既简单又复杂-》错误处理,异常情况比较多,软件和硬件
Persistent memory
linux programming:
缓存很重要,贯穿整个存储体系
拷贝很昂贵,尽量减少拷贝,cpu很吃力
raid技术 redundant array of inexpensive disks
raid0提高性能
raid1提高容错
raid0+1 raid0两两组成raid1的基础,又有容错又有写入贷款
数据库和存储系统不一样吗?
关系型数据库
非关系型数据库
Relation:集合,任何元素组成的若干有序偶对
关系代数=对关系做运算的抽象查询语言
sql = 一种domain specific language = 方便人类阅读的关系代数表达形式
关系型数据库就是存储系统,但是存储之外,又有其他能力
对结构数据有好
支持事物
支持复杂查询语言,sql语言
非关系型数据库
半结构化有好
可能支持事务
可能支持复杂查询语言
写入文件的话,无时无刻不在和bytes打交道,需要搞定structure,所以数据库比较舒服
并且写入文件每次复杂查询要写很多嵌套循环
Example:
请查询出名字以xiao开头,且密码提示问题小于10个字的人,并按照性别分组统计人数
select gender, count(*) from user
where user_name like 'xiao%'
and len(password_hint) < 10
group by gender;
事务特点:
- Atomicity,事务内的操作要么全做,要么不做
- Consistency,事务执行前后,数据状态一致
- Isolation,可以隔离多个并发事务,避免影响
- Durability,事务一旦提交成功,数据保证持久性