三、数据库存储层(Advanced Database Storage)
Disk Manager 简介背景(Background)传统的 DBMS 架构都属于 disk-oriented architecture,即假设数据主要存储在非易失的磁盘(non-volatile disk)上。于是 DBMS 中一般都有磁盘管理模块(disk manager),它主要负责数据在非易失与易失(volatile)的存储器之间的移动。这里需要理解两点: 为什么需要将数据在不同的存储器之间移动? 为什么要自己来做数据移动的管理,而非利用 OS 自带的磁盘管理模块? 存储结构 非易失性存储器上的随机访问几乎总是比顺序访问慢得多,「磁盘管理模块」的存在就是为了同时获得易失性存储器的性能和非易失性存储器的容量,让 DBMS 的数据看起来像在内存中一样。 为什么不使用 OS 自带的磁盘管理模块OS 为开发者提供了如 mmap 这样的系统调用,使开发者能够依赖 OS 自动管理数据在内外存之间的移动,那么 DBMS 为什么要重复造这样的轮子?主要原因在于,OS 的磁盘管理模块并没有、也不可能会有 DBMS 中的领域知识,因此 DBMS 比 OS...
二、高阶 SQL(Advanced SQL)
回顾在 「Relational Model」 下构建查询语句的方式分为两种:Procedural 和 Non-Procedural。第一节课中已经介绍了 Relational Algebra,它属于 Procedural 类型,而本节将介绍的 SQL 属于 Non-Procedural 类型。使用 SQL 构建查询时,用户只需要指定它们想要的数据,而不需要关心数据获取的方式,DBMS 负责理解用户的查询语义,选择最优的方式构建查询计划。 SQL 历史 SEQUAL from IBM’s System R prototype Structured English Query Language Adopted by Oracle in the 1970s IBM releases DB2 in 1983 ANSI Standard in 1986. ISO in 1987 Structued Query Language当前 SQL 的标准是 SQL 2016,而目前大部分 DBMSs 至少支持 「SQL-92」 标准 SQL...
一、关系数据模型(Relational Data Model)
为什需要 DataBase? 假设我们要存储数据: 艺术家(Artists)信息 艺术家发行的专辑(Albums)信息 我们可以用连个 CSV 文件分别存储艺术家和专辑信息,然后用程序来解析和序列化相关数据。 艺术家信息表: 123"Wu Tang Clan",1992,"USA""Notorious BIG",1992,"USA""Ice Cube",1989,"USA" 专辑信息表: 123"Enter the Wu Tang","Wu Tang Clan",1993"St.Ides Mix Tape","Wu Tang Clan",1994"AmeriKKKa's Most Wanted","Ice Cube",1990 假设我们想知道 “Ice Cube 在哪年首发”,就会写这样的查询脚本: 1234for line...
Centos8 yum 源更新
Centos8 于 2021 年年底停止了服务,大家再在使用yum源安装时候,出现下面错误 错误:Failed to download metadata for repo ‘AppStream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist 解决方式如下 1、进入yum的repos目录1cd /etc/yum.repos.d/ 2、修改所有的CentOS文件内容12sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* 3、yum安装测试是否可以yum安装1yum install wget 4、更新yum源为阿里镜像123wget -O...
Centos7 虚拟机链接慢解决
原因:使用shell连接虚拟机时连接等待时长太长,ssh的服务端在连接时会自动检测dns环境是否一致导致的,修改为不检测即可。 解决:修改 /ect/ssh/sshd_config 中的 UseDNS 为 no即可:Step1:1UseDNS=noStep2:然后重启服务:1systemctl restart sshd