CMU15-445-Spring-2023-Project #1 - 前置知识(lec01-04)

2024-01-06 18:36

本文主要是介绍CMU15-445-Spring-2023-Project #1 - 前置知识(lec01-04),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Lecture #01_ Relational Model & Relational Algebra

Databases

数据库是相互关联的数据的有组织集合,对现实世界的某些方面进行建模。区别于DBMS(MySQL、Oracle)。

Flat File Strawman

数据库以CSV文件的形式存储,并由DBMS管理。
image.png

Database Management System

DBMS是允许应用程序在数据库中存储和分析信息的软件。
数据模型(data model)是描述数据库中数据的概念集合。e.g. relational、NoSQL、vectors。
模式(schema)是对基于数据模型的特定数据集合的描述。

Relational Model

关系模型定义了一种基于关系的数据库抽象,以避免维护开销。
image.png
relation是一组无序集合,允许重复元素出现,等价于table。
tuple(domain)代表relation中的一组属性,带有n条属性的relation叫做n-ary relation。
relation中primary key唯一标识一个元组。
foreign key指定一个关系中的属性必须映射到另一个关系中的元组。

Data Manipulation Languages (DMLs)

image.png

Relational Algebra

关系代数是一组基本操作,用于检索和操作关系中的元组。

  • Selectimage.png
  • Projectionimage.png
  • Unionimage.png
  • Intersectionimage.png
  • Differenceimage.png
  • Productimage.png
  • Join:根据共有的属性中的相同值进行连接,并去除重复列。image.png

Lecture #02_ Modern SQL

Relational Languages

关系代数基于集合set(无序、无重复)。SQL基于包bag(无序,允许重复)。

SQL History

image.png

Joins

合并一个或多个表中的列,生成一个新表。用于表达涉及跨多个表的数据的查询。
image.png

Aggregates

  • aggregation functionimage.png
  • DISTINCT keyword
  • GROUP BYimage.png
  • HAVINGimage.png

String Operations

SQL标准规定字符串区分大小写,且只允许单引号。
LIKE keyword:“%”匹配任意字串,包含空;“_”匹配任意单个字符。
“||”:将两个或多个字符串连接成一个字符串。

Date and Time

操作DATE和TIME属性。

Output Redirection

image.png
列数和type需要一致,列名不需要。

Output Control

  • ORDER BYimage.png
  • LIMITimage.png

Nested Queries

image.png
image.png

Window Functions

ROW_NUMBER():当前行的编号。在窗口函数排序前计算。
RANK():当前行的顺序位置。在窗口函数排序后计算。
OVER clause:指定计算窗口函数时如何将tuple分组。 使用 PARTITION BY 指定分组。使用 GROUP BY 排序。
image.png

Common Table Expressions

临时表,其作用域仅限于单个查询。
image.png
在 WITH 后添加 RECURSIVE 关键字,可以让 CTE 引用自身。
image.png

Lecture #03_ Database Storage (Part I)

Storage

关注面向磁盘的DMS,即数据库存储在非易失磁盘上。
DBMS需要关注如何将在非易失磁盘与易失memory之间移动数据。由于从磁盘获取数据的速度非常慢,DBMS将重点关注隐藏磁盘的延迟,而不是对寄存器和高速缓存进行优化。
image.png

Disk-Oriented DBMS Overview

数据库全部在磁盘上,数据库文件中的数据按页组织,第一页是目录页。
要对数据进行操作,DBMS需要将数据带入内存。为此,数据库管理系统需要一个**缓冲池(buffer pool)**来管理数据在磁盘和内存之间的移动。DBMS还有一个执行引擎来执行查询。执行引擎会向缓冲池请求一个特定页面,缓冲池会负责将该页面带入内存,并向执行引擎提供一个指向内存中该页面的指针。缓冲池管理器将确保在执行引擎对内存中的该部分进行操作时,页面仍然存在。

DBMS vs. OS

实现虚拟内存的一种方法是使用 mmap (memory mapping)将文件内容映射到进程的地址空间,这样操作系统就可以负责在磁盘和内存之间来回移动页面。但是如果 mmap 遇到页面错误,进程就会被阻塞。
image.png

File Storage

DBMS 的最基本形式是将数据库存储为磁盘上的文件。操作系统对这些文件的内容一无所知。只有 DBMS 知道如何破译它们的内容,因为这些内容是以 DBMS 特有的方式编码的。 DBMS 的存储管理器负责管理数据库的文件。它将文件表示为页面集合。它还会跟踪哪些数据已被读取和写入页面,以及这些页面中还有多少可用空间。

Database Pages

DBMS 在一个或多个文件中以固定大小的数据块(称为页)组织数据库。页面可以包含不同类型的数据(tuple、index等)。大多数系统不会在页面中混合这些类型的数据。
每个页面都有一个唯一的标识符。如果数据库是一个单独的文件,那么页面 ID 可以只是文件偏移量。大多数数据库管理系统都有一个间接层,将页面 ID 映射到文件路径和偏移量。
大多数 DBMS 使用固定大小的页面,以避免支持可变大小页面所需的工程开销。
存储设备保证以原子方式写入硬件页的大小。如果硬件页面为 4 KB,而系统尝试向磁盘写入 4 KB,那么要么 4 KB 全部写入,要么全部不写入。

Database Heap

堆文件是一个无序的页面集合,其中的tuples以随机顺序存储。可以在磁盘上找到 DBMS 需要的页面位置。
DBMS 在给定页面 ID 的情况下找到磁盘上的页面的方法:

  • Linked List:页眉页持有指向空闲页列表和数据页列表的指针。但是,如果 DBMS 要查找特定页面,则必须对数据页列表进行顺序扫描,直到找到要查找的页面。
  • Page Directionary:DBMS 维护特殊页面,跟踪数据页面的位置以及每个页面上的可用空间。

Page Layout

image.png
image.png
image.png

Tuple Layout

image.png
非规范化元组数据(Denormalized Tuple Data):如果两个表有关联,DBMS就可以 "预连接 "它们,这样这两个表就会出现在同一个页面上。这使得读取更快,因为数据库管理系统只需加载一个页面,而不是两个独立的页面。不过,由于数据库管理系统需要为每个元组提供更多空间,因此更新成本会更高。

Lecture #04_ Database Storage (Part II)

Log-Structured Storage

page layout如果是slotted page的话,会有一些问题:tuple的删除;读取一个tuple需要读取整个block;tuple的更新可能需要花费大量时间切换block。
log structure DBMS不存储tuple,只存储log。

  • log包含元组的唯一标识符、操作类型(PUT/DELETE)以及元组的内容;
  • 倒序扫描读取记录,同时可以使用索引跳转到日志中的特定位置;
  • 由于写入是顺序的,所以速度很快;
  • 可以定期压缩日志,方法是在多个页面中只记录每个元组的最新变化;
  • 压缩后,由于每个元组只有一个,不再需要排序,因此DBMS可以按 id 排序,以加快查找速度。这些表称为排序字符串表(Sorted String Tables,SSTables);
  • 缺点是压缩成本较高,还会导致写入放大(重复写入相同的数据);

image.pngimage.png

Data Representation

有五种高级数据类型可以存储在元组中:

  • Integers
    • Examples: INTEGER, BIGINT, SMALLINT, TINYINT.
  • Variable Precision Numbers
    • Examples: FLOAT, REAL.
  • Fixed-Point Precision Numbers
    • Examples: NUMERIC, DECIMAL.
  • Variable-Length Data
    • Examples: VARCHAR, VARBINARY, TEXT, BLOB.
  • Dates and Times
    • Examples: TIME, DATE, TIMESTAMP.

System Catalogs

为了让 DBMS 能够破译元组的内容,它需要维护一个内部目录,告诉它有关数据库的元数据:

  • 表和列,以及这些表上的任何索引;
  • 数据库用户及其权限;
  • 有关表格及其包含内容的统计信息(如属性的最大值);

这篇关于CMU15-445-Spring-2023-Project #1 - 前置知识(lec01-04)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/577238

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听