青训营X豆包MarsCode 技术训练营第八课01 | 豆包MarsCode AI 刷题

0 阅读4分钟

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";
}

注册数据不可能存在后端服务器的缓存中,必须要持久化

数据流动

  1. 校验数据合法性:比如“小明”是否存在
  2. 修改内存:用搞笑的数据结构组织数据
  3. 写入存储介质:以寿命&性能有好的方式写入硬件,磁盘有硬件寿命,有对硬件寿命友好的写入方式

数据库如何保证数据不丢?

数据库怎么处理多人同时修改的问题?

为什么用数据库,除了数据库还能存到别的存储系统吗?

数据库只能处理结构化的数据吗?

有哪些操作数据库的方式,要用什么编程语言?

02. 存储&数据库简介

数据库和存储系统背景知识,它们是什么,有什么特点

一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就能称为存储系统

用户user

介质medium

内存memory

网络Network 海量数据、计算问题-》分布式的存储系统

存储系统是后端软件的底座,性能敏感

存储系统软件架构,容易受到硬件影响-〉有新的硬件浪潮的话,可能需要开发全新的数据库软件,跟上潮流

存储系统代码,既简单又复杂-》错误处理,异常情况比较多,软件和硬件

Persistent memory

linux programming:

存储系统

缓存很重要,贯穿整个存储体系

拷贝很昂贵,尽量减少拷贝,cpu很吃力

raid技术 redundant array of inexpensive disks

raid0提高性能

raid1提高容错

raid0+1 raid0两两组成raid1的基础,又有容错又有写入贷款

raid

数据库和存储系统不一样吗?

关系型数据库

非关系型数据库

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;

数据库vs经典存储

事务特点:

  1. Atomicity,事务内的操作要么全做,要么不做
  2. Consistency,事务执行前后,数据状态一致
  3. Isolation,可以隔离多个并发事务,避免影响
  4. Durability,事务一旦提交成功,数据保证持久性