跳至正文

[笔记]数据库基础入门 CH2-Database System Concepts and Architecture

标签:

图书信息:Fundamentals of database systems(3rd edition),by Elmasri、Navathe

第一章介绍了数据库基础(Database and Database Users)之后,第二章开始从DB数据库和DBMS的结合体——数据库系统Database System(We will call the the database and DBMS software together a Database System. P5,CH1)

本章重点是Data Models和Architecture架构,进一步理解Data Independence特征。之后则是查询语言和系统构成。这一章的内容涵盖了本书最基础的专业术语和基本概念(terminology and basic concepts)。

/【笔记】数据库基础入门Fundamentals of Database Systems(1)

Dec 21, 2023 第一个部分2.1笔记,
Dec 30, 2023 补充2.2和2.3部分

Chapter 2 Database system concepts and architecture

2.1 Data Models, Schemas and Instance

数据库方法论的基础,是几个核心的概念,它们实现了数据抽象(data abstraction),让数据库对于用户而言简单易用。其中重点是Data Model——描述数据库架构的一组概念,其中的关键是数据类型Data types、关系relationships和约束Constraints。

One fundamental characteristic of the database approach is that it provides some level of data abstractions by hiding details of data storage that are not needed by most database users. ▪ A data model — a collection of concepts that can be used to describe the structure of a database — provides the necessary means to archieve this abstraction. ▪ By structure of a database we mean the data types, relationships and constraints that should hold on the data. Most data models also includes a set of basic operations for specifying retrievals and updates on the databases.

P24

需要注意的是,这里说的Data Model是一个非常宽泛的用词,它是一组概念的集合(collections of concepts),用以更好地描述数据库的架构。即便是在数据分析领域,这个词也一定要宽泛的理解,我们既可以把数据关系模型称之为data model,也可以把数据仓库中特定主题的多表世系、指标体系称之为data model,甚至还可以把使用机器学习完成特定任务的程序称之为一个data model。 所以,务必要在特定的场景下理解这个概念。

2.1.1 data models的分类

接下来,作者在2.1.1小节中介绍了Data models的分类(categories of data models),这是非常重要的部分。作者把描述数据如何存储相关概念的部分称之为“低阶数据模型”或“物理数据模型”(low-level or physical data models);而把靠近用户感知数据的部分称之为“高阶或概念数据模型”(high-level or conceptual data models)。还有介于这两个极端之间的部分,称之为“representational or implementation data models”(恕我不能很好的翻译),它们可能会被用户感知到,同时又距离数据底层组织不甚远;它隐藏了数据如何存储的技术细节,但又可以在计算机系统中直接执行。

  • High-level or conceptual data models , ……the way many users perceive data
  • Low-level or physical data models, …… details of how data is stored in the computer.
  • Between these two extremes is a class of representational (or implementation ) data models, …… hides some details of data storage but can be implemented on a computer system in a direct way.
P24

概念模型(高阶模型)使用entity实体、attribute属性和关系relationship来理解外部世界。其中entity实体映射真实世界的对象或概念(An entity represents a real-world object or concept, such as employee or a project. P25),Attribute属性则映射视图的特征,比如员工的姓名或薪水;Relationship关系描述两个实体之间的关系( A relationship among two or more entities represents an interactive among the entities P25)

注意,作者在介绍实体、属性和关系时,都统一使用了represent这个动词,我们可以翻译为“映射”“反映”“描述”“表示”,都表示用一个更简洁、概括的词语来表示真实世界的对象、特征或动态过程。人类早期的象形文字如此,后来的表意文字、数字也是如此,数字化世界的数字符号(从二进制、十六进制到量子、比特)莫不如此。只是represent的抽象程度有低有高,形式不同,方式不同。

接下来,represent映射、反映如何记录在计算机之中呢?数据库历史上有不同的映射方式,早期的网状和层次模型(network or hierarchical models),后来主流的关系模型(relational models),还有小众的XML、JSON,以及NoSQL、Graphic Model等等。 它们可以都视为从现实世界到虚拟世界的不同桥梁,合成Representational data models,姑且翻译为“表示模型”。

以关系数据模型为例,它把现实世界的关系表示为数据表中的一行、一行又一行,行行堆积构成行列交织的数据表,因此有时候也称之为“record-bases data models”(记录式数据模型)。 Record甚至可以作为represent的动词来使用,比如我们常说“把这个数据记录在明细表中”。

Representational data models represent data by using record structures and hence are sometimes called record-based data models.

P 25

最底层的“物理层”physical data models描述数据如何被存储,关乎记录样式、记录次序和检索路径等等。这是远离业务用户的地方,是数据库工程师等专业人员的“花园”。

2.1.2 Schemas, Instances and database state

这一部分相对而言比较技术,远离业务分析场景,因此简要概括要点。

  • Schema(模式):数据库的描述(the description of database),往往在设计之初确定;
  • Schema Diagram(模式图):绘制出来表示模式的图示,其中的对象称之为schema construct
  • snapshot(快照):数据库中某个时刻的数据,也称之为一个instance(实例)
  • meta-data(元数据):数据库管理系统中存储的关于模式

在大型数据库系统中,一个数据库可以有多个schema,它相当于一个数据库环境的架构预设,设计之后基本不做调整。架构用图文的方式表达出来,就是schema diagram,它侧重展示表的核心字段,而不关心具体的值。

图:原书Figure 2.1 的示例图

2.2 DBMS Architecture and Data Independence

这一小节的内容至关重要,DBMS的架构可以理解为一章1.3数据库核心特征的一种实现方式。这些特征是:

  • Insulation of programs and data (program-data and program-operation independence) 程序和数据隔离
  • Support of multiple user views 可以实现差异化用户视图访问,多人多视角
  • user of a catalog to store the database description(schema) 以catalog存储数据库描述(元数据、模式)

2.2.1 The Three-schema Architecture

三层模式架构的目的是分离用户应用(user applications)与物理存储(physical database)。在这个架构中,定义了三个层次的模式schema:

  • 内模式Internal schema:描述数据库的物理存储架构,它使用物理数据模型(physical data model)并描述数据仓库的整体细节以及访问路径。
  • 概念模式Conceptual schema:描述面向整个用户层面的数据库设计,它隐藏物理层的存储细节,聚焦于描述实体、数据类型、关系、用户操作以及各类约束(concentrates on describing entities, data types, relationships, user operations, and constraints)。 这里高阶数据模型相对应。
  • 外部模式External Schemas或叫用户视图User views:相比之前的schema,这里的用户模式很多,可以实现不同用户不同模式。

书中继续强调的是,数据存储只有一份,那就是在internal level中真实、具体地存储在计算机硬盘中的那个,除此之外的模式都不过是数据的描述。一层层传递的是数据的需求及其实现,这个过程则称之为mapping(映射)。特别强调的是,每一次mapping都会消耗计算机算力和时间(time-consuming),因此一些小型数据库管理系统设置不提供external views——比较典型的是一些嵌入式数据库;但概念层和内部模式的mapping还是必不可少。

The three schemas are only descriptions of data; the only data that actually exits is at the physical level.

The processes of transforming requests and results between levels are called mappings. These mappings may be time-consuming, so some DBMSs do not support external views.

P 28

喜乐君:这一小节内容至关重要,但又晦涩难懂。从数据分析的角度看,不管是SQL的查询视图(临时的query或者稳定的views),还是Tableau发起的可视化视图,都可以视为是用户层面的数据需求(data requests),Bi工具相当于数据库和DBMS之上的应用层,把用户视角的实现方式多样化、灵活化了;同时进一步实现了数据访问与数据存储,甚至数据计算的独立。

在C.J.Date的书中(可是1986年呀),也讲解了完全相同的schema架构,我认为丝毫不逊于后来任何人的讲解。而且在案例上更通俗易懂,比如下面这个讲解模式架构的图例。(P33, C.J.Date,An introduction to Database Systems, Volume 1, Fouth Edition,1986)

C.J.Date更喜欢用representation这个词,我感觉非常准确。比如他说概念模式是数据库完整信息的反映(The conceptual view is a representation of the entire information content of the database),而内部模式则是数据库的低阶反映(internal schema is a low-level representation of the entire database). 所有的schema都不同于physically物理存储数据,都只是representation,而不同层面之间的关系则称之为mapping。

2.2.2 Data independence 数据独立

数据独立使得数据库可以在无需改变更高层次的模式的前提下,随时更改某个层次的模式。具体又分为两个类型:

  • 逻辑数据独立性logical data independence,即改变概念模式无需改变外部模式或应用程序。比如增加了一个数据表、约束条件等等。
  • 物理数据独立性physical data independence,即改变内部模式无需更改上层概念或外部模式。比如数据库可能更新或者重建(甚至可以迁移到其他数据服务器中)。

当然,当一个层次的模式发生了变化,虽然更高层次的模式无需改变,但是mapping映射关系发生了变化,而这个mapping往往有DBMS的软件自动完成。每一次mapping,本质是是在把数据需求和数据建立关系(map requests and data among the various levels).

当然,数据独立也有额外的代价,虽然三层模式让数据独立变得容易实现,但是两次映射意味着额外的开销(overhead),这就导致系统的低效率(inefficiencies)。因此,很少有DBMS会完整地支持这三层模式设计。

XILEJUN: 基于这样的理解,我们可以把BI工具视为是用户层面的模式设计,是DBMS之上的扩展。虽然多层设计意味着额外开销,但随着算力越来越便宜,多层设计带来的易用性更令人向往——在分析的领域中,数倍于传统IT分析师的业务分析师正在快速成长起来,成为企业数字化应用的中坚力量。

2.3 Database languages and interfaces

数据库语言是与数据库及其数据交互的程序定义。其中的关键是定义数据库描述的DDL(数据定义语言)和数据操纵的DML(数据操作语言)

在数据库中,内部模式internal schema和概念模式conceptual schema一旦确定,就需要数据定义语言(data definition language,DDL)定义它们。DBMS中有解析器负责把DDL传递到数据库中,它们定义的数据库描述并存在于catalog之中。有一些DMBS严格区分物理层部分,此时就会有额外的存储定义语言(Storage Definition Language),用来具体化内部模式(specify the internal schema)。而如果还有外部模式,那么就会有视图定义语言(view definition language),用来具体化用户视图并建立与概念层的映射(specify the user views and mappings to the conceptual schema)。 不过,在大部分DBMS都可以用DDL同时定义内部模式和外部模式——就是我们用SQL所做的一样。

在定义好数据库之后,就是操作数据库(manipulate database)。典型的数据库操纵包含查询、插入、删除、修改操作(Typical manipulations include retrieval, insertion, deletion, and modification of the data). DBMS提供数据操纵语言(DML,data manipulation language)来实现这些部分。

接下来,作者说了一个非常重要的内容。DML也分高阶和低阶语言,高阶的DML(比如SQL)可以一次性获得多条记录,因此称之为set-at-a-time或者set-orientated DML(集合取向的DML);而低阶的DML,往往是嵌入在程序之中的,则是一次性只能获得一条数据。同时,高阶DML只需要明确想要什么,而无需阐述如何获得数据,这种语言称之为“声明式语言”(declarative)。

喜乐君:这就好关系型数据关联起来了,关系型数据是建立在集合论和谓词逻辑基础上的。SQL一次获得一个集,其实集就是一个表table。 在学习SQL的高级操作,以及DAX过程中,如果能建立这样的基础认识,非常有助于精深学习。

2.4 The database system environment

这里是略显专业的系统架构图了,附图一张,其他省略。