引文
计算机科学领域的所有问题,都可以通过添加一层中间层来解决。通过在用户和计算机中间添加一层逻辑层(概念模型层),于是就有了“数据库的三级模式”:数据库在三个级别 (层次)上进行抽象,使用户能够逻辑地、抽象地处理数据,而不必关心数据在计算机中的物理表示和存储。 光剑,2021.
数据库简介
当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。
数据库是一个按数据结构来存储和管理数据的计算机软件系统。数据库的概念实际包括两层意思:
(1)数据库是一个实体,它是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理的事务数据,“数据”和“库”两个概念结合成为数据库。
(2)数据库是数据管理的新方法和技术,它能更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。
数据库发展历史
数据库的演变
数据建模和数据库一起发展,它们的历史可以追溯到 1960 年代。
数据库演变发生在五个“浪潮”中:
1.第一波由网络、分层、倒排列表和(在 1990 年代)面向对象的 DBMS 组成;它大约发生在 1960 年至 1999 年之间。
2.关系浪潮在 1990 年左右推出了所有 SQL 产品(以及一些非 SQL),并在 2008 年左右开始失去用户。
3.决策支持浪潮在 1990 年左右引入了在线分析处理 (OLAP) 和专门的 DBMS,并且今天仍然有效。
4.图浪潮始于 1999 年万维网联盟的语义网络堆栈,2008 年左右出现了属性图
5.NoSQL 浪潮包括大数据等等;它始于2008年。
1973 年:查尔斯·巴赫曼 (Charles Bachman) 的“作为导航员的程序员”
1981 年:E.F. (Ted) Codd : “关系数据库:生产力的实用基础”
2001 年:Ole-Johan Dahl 和 Kristen Nygaard 提出了面向对象编程出现的基本思想
2014 年:Michael Stonebraker 的 “The Land Sharkx are on the Squawk Box”。
1973: Charles Bachman with “The Programmer as Navigator”
1981: E. F. (Ted) Codd with “Relational Database: A Practical Foundation for Productivity”
2001: Ole-Johan Dahl and Kristen Nygaard for ideas fundamental to the emergence of object-oriented programming
2014: Michael Stonebraker with “The Land Sharkx are on the Squawk Box.”
在数据库的发展历史上,数据库先后经历了:
1.层次数据库
2.网状数据库
3.关系数据库
等阶段。随着云计算的发展和大数据时代的到来,关系型数据库越来越无法满足需要,这主要是由于,越来越多的半关系型和非关系型数据,需要用数据库进行存储管理。以此同时,分布式技术等新技术的出现也对数据库的技术提出了新的要求。
于是越来越多的非关系型数据库就开始出现,这类数据库与传统的关系型数据库在设计和数据结构有了很大的不同, 它们更强调数据库数据的高并发读写和存储大数据,这类数据库一般被称为NoSQL(Not only SQL)数据库。 而传统的关系型数据库在一些传统领域依然保持了强大的生命力。
关系数据库
关系型数据库,存储的格式可以直观地反映实体间的关系。关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关系的。 常见的关系型数据库有Mysql,SqlServer等。在轻量或者小型的应用中,使用不同的关系型数据库对系统的性能影响不大,但是在构建大型应用时,则需要根据应用的业务需求和性能需求,选择合适的关系型数据库。
标准SQL语句
虽然关系型数据库有很多,但是大多数都遵循SQL(结构化查询语言,Structured Query Language)标准。 常见的操作有查询,新增,更新,删除,求和,排序等。
查询语句:SELECT param FROM table WHERE condition 该语句可以理解为从 table 中查询出满足 condition 条件的字段 param。
新增语句:INSERT INTO table (param1,param2,param3) VALUES (value1,value2,value3) 该语句可以理解为向table中的param1,param2,param3字段中分别插入value1,value2,value3。
更新语句:UPDATE table SET param=new_value WHERE condition 该语句可以理解为将满足condition条件的字段param更新为 new_value 值。
删除语句:DELETE FROM table WHERE condition 该语句可以理解为将满足condition条件的数据全部删除。
去重查询:SELECT DISTINCT param FROM table WHERE condition 该语句可以理解为从表table中查询出满足条件condition的字段param,但是param中重复的值只能出现一次。
排序查询:SELECT param FROM table WHERE condition ORDER BY param1该语句可以理解为从表table 中查询出满足condition条件的param,并且要按照param1升序的顺序进行排序。
总体来说, 数据库的SELECT,INSERT,UPDATE,DELETE对应了我们常用的增删改查四种操作。
关系型数据库对于结构化数据的处理更合适,如学生成绩、地址等,这样的数据一般情况下需要使用结构化的查询,例如join,这样的情况下,关系型数据库就会比NoSQL数据库性能更优,而且精确度更高。由于结构化数据的规模不算太大,数据规模的增长通常也是可预期的,所以针对结构化数据使用关系型数据库更好。关系型数据库十分注意数据操作的事务性、一致性,如果对这方面的要求关系型数据库无疑可以很好的满足。
非关系型数据库(NoSQL)
随着近些年技术方向的不断拓展,大量的NoSql数据库如MongoDB、Redis、Memcache出于简化数据库结构、避免冗余、影响性能的表连接、摒弃复杂分布式的目的被设计。
NoSQL 指分布式的、非关系型的、不保证遵循ACID原则的数据存储系统。
NoSQL数据库技术与CAP理论、一致性哈希算法有密切关系。
所谓CAP理论,简单来说就是一个分布式系统不可能满足可用性、一致性与分区容错性这三个要求,一次性满足两种要求是该系统的上限。
而一致性哈希算法则指的是NoSQL数据库在应用过程中,为满足工作需求而在通常情况下产生的一种数据算法,该算法能有效解决工作方面的诸多问题但也存在弊端,即工作完成质量会随着节点的变化而产生波动,当节点过多时,相关工作结果就无法那么准确。这一问题使整个系统的工作效率受到影响,导致整个数据库系统的数据乱码与出错率大大提高,甚至会出现数据节点的内容迁移,产生错误的代码信息。
但尽管如此,NoSQL数据库技术还是具有非常明显的应用优势,如数据库结构相对简单,在大数据量下的读写性能好;能满足随时存储自定义数据格式需求,非常适用于大数据处理工作。
NoSQL数据库适合追求速度和可扩展性、业务多变的应用场景。
对于非结构化数据的处理更合适,如文章、评论。这些数据通常只用于模糊处理(全文搜索、机器学习),并不需要像结构化数据一样,进行精确查询。而且这类数据的数据规模往往是海量的,数据规模的增长往往也是不可能预期的 —— 而NoSQL数据库的扩展能力几乎也是无限的,所以NoSQL数据库可以很好的满足这一类数据的存储。NoSQL数据库利用key-value可以大量的获取大量的非结构化数据,并且数据的获取效率很高,但用它查询结构化数据效果就比较差。
目前NoSQL数据库仍然没有一个统一的标准,它现在有四种大的分类:
(1)键值对存储(key-value):代表软件Redis,它的优点能够进行数据的快速查询,而缺点是需要存储数据之间的关系。
(2)列存储:代表软件Hbase,它的优点是对数据能快速查询,数据存储的扩展性强。而缺点是数据库的功能有局限性。ClickHouse 也是列存储。
(3)文档数据库存储:代表软件MongoDB,它的优点是对数据结构要求不特别的严格。而缺点是查询性的性能不好,同时缺少一种统一查询语言。
(4)图形数据库存储:代表软件InfoGrid,它的优点可以方便的利用图结构相关算法进行计算。而缺点是要想得到结果必须进行整个图的计算,而且遇到不适合的数据模型时,图形数据库很难使用。
数据库管理系统:Database Management System
数据库管理系统(DBMS,Database Management System)是操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。
SQL 数据库管理软件
MySQL:最流行的开源数据库,它是基于 Web 的应用程序的领先解决方案,因为它支持 SQL 作为其数据库语言并包含与 SQL 查询相关的视图,从而可以查看数据库的特定部分.
Oracle RDBMS:领先的全球关系数据库管理系统,它实现了面向对象的特性,例如用户定义的类型、继承和多态。
PostgreSQL:对象关系数据库系统,可在所有主要操作系统上运行,并允许需要关系数据库的内部或商业 Web 开发。它包括一个关系系统目录,该目录支持每个数据库的多个模式。
MS SQL:Microsoft 开发的关系数据库管理系统,可根据其他软件应用程序的要求存储和检索数据。
MariaDB:由原始 MySQL 开发人员制作的流行数据库服务器,可将数据转换为各种应用程序中的结构化信息。MariaDB 具有快速、可扩展和强大的存储引擎、插件和其他工具组合,旨在提供 SQL 接口来访问数据。
SQLite:广泛使用的 C 语言库,它实现了 SQL 数据库引擎,内置于所有手机和大多数计算机中。
DATAPINE:帮助用户探索、可视化和共享数据的商业智能软件。它有助于从多个现有数据库、外部应用程序和 Excel 数据创建数据库。
DbVisualizer:适用于所有主要数据库的数据库管理和分析工具。借助拖放功能,它可以促进数据库的开发、分析和管理。
RazorSQL:适用于 Windows macOS、Mac OS X、Linux 和 Solaris 的 SQL 编辑器、SQL 查询工具、数据库查询工具和数据库管理工具,使用户能够浏览数据库对象并管理数据库。
NoSQL 数据库管理软件
Redis:开源的内存数据结构存储,用作数据库、缓存和消息代理,支持字符串、哈希、列表、集合、位图、地理空间索引、流等数据结构。
MongoDB:文档数据库,将数据存储在灵活的类似 JSON 的文档中,以映射对象并简化数据管理。它的核心是一个具有高可用性、水平扩展和地理分布的分布式数据库。
GraphQL:用于 API 的开源查询和操作语言,还可用作运行时以使用现有数据填充查询。
Apache CouchDB:开源数据库软件,侧重于面向文档的 NoSQL 的易用性和可扩展架构。它使用 JSON 存储数据,使用 JavaScript 作为查询语言,使用 HTTP 作为 API。
Neo4j:用于任务关键型企业应用程序的图形数据库管理平台。它被认为是最流行的图形事务数据库之一,具有本机存储和处理功能。
内存数据库管理系统
Apache Ignite:开源分布式数据库、缓存和处理平台,可跨节点集群存储和计算大量数据。
Memcached:分布式内存缓存系统,用于加速动态数据库驱动的网站,将数据和对象缓存在 RAM 中。
基于云的数据管理系统
Amazon Relational Database:使用户能够在云中设置、操作和扩展关系数据库的 Web 服务。
Microsoft Azure SQL 数据库:支持关系数据、JSON、空间和 XML 等结构的关系数据库即服务。
Rackspace 云:云计算产品和服务的集合,例如 Web 应用程序托管、平台即服务、云存储、虚拟专用服务器、负载平衡器、数据库、备份、监控等。
SAP Cloud 平台:开放式平台即服务,提供独特的内存数据库和业务应用程序服务,为数字企业提供支持。
数据库管理的挑战
数据库管理中一些最显着的挑战是:
维护 DBMS 解决方案的硬件和软件的高成本。
DBMS 很复杂,因此需要培训和专门的内部经验资源。
由于数据库管理系统提供集中式解决方案,任何故障或数据损坏都可能影响整个数据库。
如果多个用户同时访问同一个程序,则存在数据丢失的风险。
在 DBMS 故障期间,可能会因忽视维护系统的最佳功能而招致重大损失。
如果数据库存储大量数据,性能可能会受到影响。
小结:数据不会消失。在数据驱动的世界中,企业需要有效处理和管理数据:能够从数据存储、数据组织、数据检索、数据分析等全方位管理数据。DBMS 使企业能够对数据进行排序、过滤、发现、定位、学习和更新,以从客户那里获取关键信息,并分析其他关键业务活动并在决策中实施这些知识。
DBMS系统的7大功能
1.数据定义:DBMS提供数据定义语言DDL(Data Definition Language),供用户定义数据库的三级模式结构、两级映像以及完整性约束和保密限制等约束。DDL主要用于建立、修改数据库的库结构。DDL所描述的库结构仅仅给出了数据库的框架,数据库的框架信息被存放在数据字典(Data Dictionary)中。
2.数据操作:DBMS提供数据操作语言DML(Data Manipulation Language),供用户实现对数据的追加、删除、更新、查询等操作。
3.数据库的运行管理:数据库的运行管理功能是DBMS的运行控制、管理功能,包括多用户环境下的并发控制、安全性检查和存取限制控制、完整性检查和执行、运行日志的组织管理、事务的管理和自动恢复,即保证事务的原子性。这些功能保证了数据库系统的正常运行。
4.数据组织、存储与管理:DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等,需确定以何种文件结构和存取方式在存储级上组织这些数据,如何实现数据之间的联系。数据组织和存储的基本目标是提高存储空间利用率,选择合适的存取方法提高存取效率。
5.数据库的保护:数据库中的数据是信息社会的战略资源,所以数据的保护至关重要。DBMS对数据库的保护通过4个方面来实现:数据库的恢复、数据库的并发控制、数据库的完整性控制、数据库安全性控制。DBMS的其他保护功能还有系统缓冲区的管理以及数据存储的某些自适应调节机制等。
6.数据库的维护:这一部分包括数据库的数据载入、转换、转储、数据库的重组合重构以及性能监控等功能,这些功能分别由各个使用程序来完成。
7.通信:DBMS具有与操作系统的联机处理、分时系统及远程作业输入的相关接口,负责处理数据的传送。对网络环境下的数据库系统,还应该包括DBMS与网络中其他软件系统的通信功能以及数据库之间的互操作功能。
数据库管理系统的三层模式架构:Three Level Architecture of DBMS
计算机科学领域的所有问题,都可以通过添加一层中间层来解决。通过在用户和计算机中间添加一层逻辑层(概念模型层),于是就有了“数据库的三级模式”:数据库在三个级别 (层次)上进行抽象,使用户能够逻辑地、抽象地处理数据,而不必关心数据在计算机中的物理表示和存储。
BY 光剑,2021.
例如,操作系统就是在用户跟计算机硬件之间的抽象层。
操作系统(operating system,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
对于理想的层次式计算机系统体系结构来说,其之间的联系不仅仅是单向依赖性的,同时各个层级之间也要具备相互的独立性,且只能对低层次的模块和功能进行调用
数据实际上以位、数字和字符串的形式存储,但是在这个级别处理数据的多样性和复杂性是极其困难的。
Data are actually stored as bits, or numbers and strings, but it is extremely difficult to work with the variety and complexity of data at this level.
名词说明 :Schema
This is the term for a description of the data organization at some level. Each level has its own schema.
这是在某种程度上描述数据组织的术语。每个级别都有自己的模式。
We will be concerned with three forms of schemas:
1.external or user view
2.conceptual or logical
3.internal or physical
1. 外部数据层
外部模式,根据概念级别,指定数据视图。为特定用户需求量身定制。某些用户不应看到部分存储数据,权限&安全性控制。
External Data Level
An external schema specifies aviewof the data in terms of the conceptual level. It is tailored to the needs of a particular category of users. Portions of stored data should not be seen by some users and begins to implement a level of security and simplifies the view for these users.
在关系模型中,外部模式也将数据表示为一组关系。例子:
In the relational model, theexternal schemaalso presents data as a set of relations.
Examples:
学生不应该看到教职员工的工资。
教职员工不应看到帐单或付款数据。
可以从存储的数据中导出的信息可能被视为以这种方式存储。
GPA 不存储,需要时计算。
Students should not see faculty salaries.
Faculty should not see billing or payment data.
Information that can be derived from stored data might be viewed as if it were stored in that manner.
GPA not stored, calculated when needed.
应用程序是根据外部模式编写的。访问时计算外部视图。它不被存储。可以向不同类别的用户提供不同的外部模式。DBMS 在运行时,自动完成从外部级别到概念级别的转换。可以在不更改应用程序的情况下更改概念模式(改变从外部到概念的映射)——称之为“概念数据独立性”。
Applications are written in terms of an external schema. The external view is computed when accessed. It is not stored. Different external schemas can be provided to different categories of users. Translation from external level to conceptual level is done automatically by DBMS at run time. The conceptual schema can be changed without changing application:Mapping from external to conceptual must be changed. Referred to as conceptual data independence.
This is a first level of security that can be imposed on the various users of the system.
这是系统第一级安全性。
2. 概念数据层
当概念级别实现到特定数据库架构时,也称为逻辑级别。
隐藏内部/物理层的存储细节。
在关系模型中,概念模式将数据表示为一组表。
DBMS 自动将逻辑模式之间的数据访问映射到内部/物理模式。
无需更改应用程序即可更改物理/内部架构:例如,我们可以添加或删除索引,DBMS 必须将映射从概念变为物理。简称物理数据独立。
我们将使用实体关系建模将逻辑视图抽象为概念视图,实体关系建模与数据库架构无关。
Conceptual Data Level
Also referred to as the Logical level when the conceptual level is implemented to a particular database architecture.
Hides storage details of the internal/physical level.
In the relational model, the conceptual schema presents data as a set of tables.
The DBMS automatically maps data access between the logical to internal/physical schemas .
Physical/internal schema can be changed without changing application: e.g. we may add or remove an index,DBMS must change mapping from conceptual to physical.
Referred to as physical data independence.
We will abstract the logical view as a conceptual view using Entity-Relationship Modeling, which is database architecture independent.
3.内部数据层
内部层的物理模式描述了数据如何存储的细节:随机存取磁盘系统上的文件、索引等。它还通常描述文件的记录布局和文件类型(散列、b 树、平面等)。
早期的应用程序(1960 年代)仅在此级别工作 - 明确处理这些内部细节。例如,最小化相关数据之间的物理距离并组织文件内的数据结构(块记录、块链表等)
问题:
1.为了处理物理数据,程序被硬编码。
2.对数据结构的更改很难进行。
3.应用程序代码变得复杂,因为它必须处理细节。
4.新功能的快速实施非常困难。
Internal Data Level
The physical schema of the internal level describes details of how data is stored: files, indices, etc. on the random access disk system. It also typically describes the record layout of files and type of files (hash, b-tree, flat).
Early applications (1960's) only worked at this level - explicitly dealt with these internal details. E.g., minimizing physical distances between related data and organizing the data structures within the file (blocked records, linked lists of blocks, etc.)
Problem:
1.Routines are hardcoded to deal with physical representation.
2.Changes to data structures are difficult to make.
3.Application code becomes complex since it must deal with details.
4.Rapid implementation of new features very difficult.
数据建模
Schema : 某种级别的数据描述(例如,表、属性、约束、域)
模型:用于描述的工具和语言:
由数据定义语言 (DDL) 描述的概念/逻辑和外部模式
完整性约束,DDL 描述的域
数据操作语言 (DML) 描述的数据操作
影响物理模式(影响性能,而不是语义)的指令由存储定义语言 (SDL) 描述
Data Modeling
Schema: description of data at some level (e.g., tables, attributes, constraints, domains)
Model: tools and languages for describing:
Conceptual/logical and external schema described by the data definition language (DDL)
Integrity constraints, domains described by DDL
Operations on data described by the data manipulation language (DML)
Directives that influence the physical schema (affects performance, not semantics) are described by the storage definition language (SDL)
数据独立
逻辑数据独立
外部模型对逻辑模型变化的免疫力
发生在用户界面级别
物理数据独立性
逻辑模型对内部模型变化的免疫力
发生在逻辑接口级别
Logical data independence
Immunity of external models to changes in the logical model
Occurs at user interface level
Physical data independence
Immunity of logical model to changes in internal model
Occurs at logical interface level
实体关系模型
语义模型捕获含义和意图
ER 建模是概念级模型
1970年代由PP Chen提出
实体是我们收集数据的现实世界对象
属性进一步描述具有特定值的实体
关系是实体之间的关联
实体集——相同类型的实体集
关系集——一组相同类型的关系
关系集也可能具有描述性属性
用ER图表示
Entity-Relationship Model
A semantic model (语义模型)captures meanings and intents
E-R modeling is a conceptual level model
Proposed by P.P. Chen in 1970s
Entities are real-world objects about which we collect data
Attributes further describe the entities with particular values
Relationships are associations among entities
Entity set – set of entities of the same type
Relationship set – set of relationships of same type
Relationships sets may also have descriptive attributes
Represented by E-R diagrams
关系模型
基于记录和表的模型
关系数据库建模是一种逻辑级模型
由 EF Codd 提出
基于数学关系
使用关系,表示为表格
表格的列代表属性
表代表关系和实体
早期基于记录的模型的继承者——网络和分层
Relational Model
Record and Table based model
Relational database modeling is a logical-level model
Proposed by E.F. Codd
Based on mathematical relations(关系代数)
Uses relations, represented as tables
Columns of tables represent attributes
Tables represent relationships as well as entities
Successor to earlier record-based models—network and hierarchical
面向对象模型
使用 ER 建模作为基础,但扩展到包括封装、继承。
对象既有状态又有行为。
状态由属性定义
行为由方法(函数或过程)定义
设计器定义具有属性、方法和关系的类
类构造方法创建对象实例
每个对象都有一个唯一的对象 ID
类层次结构相关的类
数据库对象具有持久性
两个概念上的级和逻辑级模型
Object-oriented Model
Uses the E-R modeling as a basis but extended to include encapsulation, inheritance.
Objects have both state and behavior
State is defined by attributes
Behavior is defined by methods (functions or procedures)
Designer defines classes with attributes, methods, and relationships
Class constructor method creates object instances
Each object has a unique object ID
Classes related by class hierarchies
Database objects have persistence
Both conceptual-level and logical-level model
对象关系模型
向关系模型添加新的复杂数据类型
添加具有属性和方法的对象
添加继承
SQL 扩展到处理 SQL:1999 中的对象
Object-relational model
Adds new complex datatypes to relational model
Adds objects with attributes and methods
Adds inheritance
SQL extended to handle objects in SQL:1999
半结构化模型
节点的集合,每个节点都有数据和不同的模式
每个节点都包含对其自身内容的描述
可用于集成现有数据库
添加到文档的 XML 标签来描述结构
XML 标签标识文档中的元素、子元素、属性
用于定义结构的 XML DTD(文档类型定义)或 XML Schem
Semi-structured Model
Collection of nodes, each with data, and with different schemas
Each node contains a description of its own contents
Can be used for integrating existing databases
XML tags added to documents to describe structure
XML tags identify elements, sub-elements, attributes in documents
XML DTD (Document Type Definition) or XML Schema used to define structure
(Discussed later in the course in greater detail)
Phases of database design
Database designing for a real-world application starts from capturing the requirements to physical implementation using DBMS software which consists of following steps shown below:
Conceptual Design: The requirements of database are captured using high level conceptual data model. For Example, the ER model is used for the conceptual design of the database.
Logical Design: Logical Design represents data in the form of relational model. ER diagram produced in the conceptual design phase is used to convert the data into the Relational Model.
Physical Design: In physical design, data in relational model is implemented using commercial DBMS like Oracle, DB2.
Advantages of DBMS
DBMS helps in efficient organization of data in database which has following advantages over typical file system:
Minimized redundancy and data inconsistency: Data is normalized in DBMS to minimize the redundancy which helps in keeping data consistent. For Example, student information can be kept at one place in DBMS and accessed by different users.This minimized redundancy is due to primary key and foreign keys
Simplified Data Access: A user need only name of the relation not exact location to access data, so the process is very simple.
Multiple data views: Different views of same data can be created to cater the needs of different users. For Example, faculty salary information can be hidden from student view of data but shown in admin view.
Data Security: Only authorized users are allowed to access the data in DBMS. Also, data can be encrypted by DBMS which makes it secure.
Concurrent access to data: Data can be accessed concurrently by different users at same time in DBMS.
Backup and Recovery mechanism: DBMS backup and recovery mechanism helps to avoid data loss and data inconsistency in case of catastrophic failures.
关系代数
关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。
关系代数的运算对象是关系,运算结果亦为关系。
关系代数用到的运算符包括四类:
1.集合运算符
2.关系运算符
3.算术比较符
4.逻辑运算符
比较运算符和逻辑运算符,是用来辅助专门的关系运算符进行操作的。
所以按照运算符的不同,主要将关系代数分为传统的集合运算和专门的关系运算两类。
集合运算
传统的集合运算是二目运算,包括并、交、差、广义笛卡尔积四种运算。
⒈ 并(Union)
设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则关系R与关系S的并由属于R且属于S的元组组成。其结果关系仍为n目关系。记作:
R∪S={t|t∈R∨t∈S}
⒉ 差(Difference)
设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的差由属于R而不属于S的所有元组组成。其结果关系仍为n目关系。记作:
R - S={t|t∈R∧t∉S}
⒊ 交(Intersection Referential integrity)
设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的交由既属于R又属于S的元组组成。其结果关系仍为n目关系。记作:
R∩S={t|t∈R∧t∈S}
⒋ 广义笛卡尔积(Extended cartesian product)
这里的笛卡尔积严格地讲是广义笛卡尔积(Extended Cartesian Product)。在不会出现混淆的情况下广义笛卡尔积也称为笛卡尔积。
两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1×k2个元组。
记作:
R×S={(t_r, t_s ) |t_r∈R,t_s∈S}
专门的关系运算
专门的关系运算(Specific relation operations)包括:选择、投影、连接、除等。
为了叙述上的方便,我们先引入几个记号。
1. 设关系模式为 R(A1, A2, …, An)。它的一个关系设为R。t∈R表示t是R的一个元组。t[Ai]则表示元组t中相应于属性Ai的一个分量 。
2. 若A={Ai1, Ai2, …, Aik},其中Ai1, Ai2, …, Aik是A1, A2, …, An中的一部分,则A称为属性列或域列。フA则表示{A1, A2, …, An}中去掉{Ai1, Ai2, …, Aik}后剩余的属性组。t[A]=(t[Ai1], t[Ai2], …, t[Aik])表示元组t在属性列A上诸分量的集合。
3. R为n目关系,S为m目关系。设tr∈R(r为下标),ts∈S(s为下标),则trts(整个式子上方加一个半弧,r和s为下标) 称为元组的连接(Concatenation)。它是一个(n+m)列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。
4. 给定一个关系R(X,Z),X和Z为属性组。我们定义,当t[X]=x时,x在R中的象集(Images Set)为:
Zx={t[Z]|t∈R, t[X]=x}
x在R中的像集为R中Z属性对应分量的集合,而这些分量所对应的元组中的属性组X上的值为x。
例如,x_1在R中的像集Z_(x_1 )={Z_1,Z_2,Z_3,Z_4}, x_2在R中的像集Z_(x_2 )={Z_2,Z_3},x_3在R中的像集Z_(x_3 )={Z_1,Z_3}。
X1Z1
X1Z2
X1Z3
X1Z4
X2Z2
X2Z3
X3Z1
X3Z3
1. 选择(Selection)
选择又称为限制(Restriction)。它是在关系R中选择满足给定条件的诸元组,记作:
σF(R) = {t|t∈R ∧ F(t)='真'}
其中F表示选择条件,它是一个逻辑表达式,取逻辑值‘真’或‘假’。
逻辑表达式F的基本形式为:
X1 θ Y1 [ φ X2 θ Y2 ]
θ表示比较运算符,它可以是>、≥、<、≤、=或≠。X1、Y1等是属性名或常量或简单函数。属性名也可以用它的序号来代替。φ表示逻辑运算符,它可以是フ、∧或∨。[ ]表示任选项,即[ ]中的部分可以要也可以不要,...表示上述格式可以重复下去。
因此选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算。
2. 投影(Projection)
关系R上的投影是从R中选择出若干属性列组成新的关系。记作:
ΠA(R) = { t[A] | t∈R }
其中A为R中的属性列。
3. 连接(Join)
Join 是从两个关系的笛卡尔积中,选取属性间满足一定条件的元组。
连接运算从R和S的笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组。
连接运算中有两种最为重要也最为常用的连接:
1.等值连接(Equal join)
2.自然连接(Natural join)
θ为“=”的连接运算称为等值连接。它是从关系R与S的笛卡尔积中选取A、B属性值相等的那些元组。
自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。
一般的连接操作是从行的角度进行运算。但自然连接还需要取消了重复列,所以是同时从行和列的角度进行运算。
4. 除(Division)
除法运算是一个复合的二目运算。如果把笛卡尔积看作“乘法”运算,则除法运算可以看作这个“乘法”的逆运算。
给定关系R(X,Y)和S(Y,Z),其中X、Y、Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上的分量值x的像集YX包含S在Y上投影的集合。记作:
R÷S={t_r [X]|t_r∈R, π_r(S)Y_x}
其中,Y_x 为 x在R中的像集,x=t_r [X]。显然,除操作是同时从行和列的角度进行运算。
根据关系运算的除法定义,可以得出它的运算步骤。
(1) 将被除关系的属性分为像集属性和结果属性两部分;与除关系相同的属性属于像集属性;不相同的属性属于结果属性。
(2) 在除关系中,对像集属性投影,得到除目标数据集。
(3) 将被除关系分组。分组原则是:结果属性值一样的元组分为一组。
(4) 逐一考察每个组,如果它的像集属性值中包括目标数据集,则对应的结果属性应属于该除法运算结果集。
番外篇
历史小传:美国国家标准协会(American National Standard Institute, ANSI)的数据库管理系统研究小组于1978年提出了标准化的建议,将数据库结构分为3级:
1.面向用户或应用程序员的用户级、
2.面向建立和维护数据库人员的概念级、
3.面向系统程序员的物理级。
Database 3-Level Architecture: Three Schema Architecture of DBMS
The three schema architecture describes how the data is represented or viewed by the user in the database. This architecture is also known as three-level architecture and is sometimes called ANSI/ SPARC architecture.
The three schema architecture divides the database into three-level to create a separation between the physical database and the user application. In simple words, this architecture hides the details of physical storage from the user. The database administrator (DBA) should be able to change the structure of database storage without affecting the user’s view.
This architecture contains three layers or levels of the database management system:
External level
Conceptual level
Internal level
Three Schema Architecture of DBMS
1. External or View level: This is the highest level of database abstraction. External or view level describes the actual view of data that is relevant to the particular user. This level also provides different views of the same database for a specific user or a group of users. An external view provides a powerful and flexible security mechanism by hiding the parts of the database from a particular user.
2. Conceptual or Logical level: The conceptual level describes the structure of the whole database. This level acts as a middle layer between the physical storage and user view. It explains what data to be stored in the database, what relationship exists among those data, and what the datatypes are. There is only one conceptual schema per database.
Database administrator and the programmers work at this level. This level does not provide any access or storage details but concentrates on the relational model of the database. The conceptual schema also includes features that specify the checks to retain integrity and consistency.
3. Internal or Physical level: This is the lowest level of database abstraction. It describes how the data is actually stored in the database and provides methods to access data from the database. It allows viewing the physical representation of the database on the computer system. The interface between the conceptual schema and the internal schema identifies how an element in the conceptual schema is stored and how it may be accessed.
If there is any change in the internal or physical schema, it needs to be addressed to the interface between the conceptual and internal schema. But there is no need to change in the interface of a conceptual and external schema. It means that the changes in physical storage devices such as hard disks, and the files organized on storage devices, are transparent to application programs and users.
Advantages of Three-schema Architecture
Following are the advantages of three schema architecture:
1.This architecture makes the database abstract. It is used to hide the details of how data is physically stored in a computer system, which makes it easier to use for a user.
2.This architecture allows each user to access the same database with a different customized view of data.
3.This architecture enables a database admin to change the storage structure of the database without affecting the user currently on the system.
DBMS Schemas: Internal, Conceptual, External
Database systems comprise of complex data structures. Thus, to make the system efficient for retrieval of data and reduce the complexity of the users, developers use the method of Data Abstraction.
There are mainly three levels of data abstraction:
Internal Level: Actual PHYSICAL storage structure and access paths.
Conceptual or Logical Level: Structure and constraints for the entire database
External or View level: Describes various user views
Let’s study them in detail.
Internal Level/Schema
内部模式定义了数据库的物理存储结构。内部模式是整个数据库的非常低级的表示。它包含多次出现的多种类型的内部记录。在 ANSI 术语中,它也被称为“存储记录”。
The internal schema defines the physical storage structure of the database. The internal schema is a very low-level representation of the entire database. It contains multiple occurrences of multiple types of internal record. In the ANSI term, it is also called “stored record’.
关于内部架构的事实:
内部架构是数据抽象的最低级别,它帮助您保留有关整个数据库的实际表示的信息。就像将数据以记录的形式实际存储在磁盘上一样,内部视图告诉我们数据库中存储了哪些数据以及如何处理它从不与物理设备打交道,内部模式将物理设备视为物理页面的集合。
Facts about Internal schema:
The internal schema is the lowest level of data abstraction
It helps you to keeps information about the actual representation of the entire database. Like the actual storage of the data on the disk in the form of records
The internal view tells us what data is stored in the database and how
It never deals with the physical devices. Instead, internal schema views a physical device as a collection of physical pages
Conceptual Schema/Level
概念模式是for用户的。描述了数据库的逻辑结构。该模式隐藏了有关物理存储结构的信息,侧重于描述数据类型、实体、关系等。
该逻辑级别介于用户级别和物理存储视图之间。
The conceptual schema describes the Database structure of the whole database for the community of users. This schema hides information about the physical storage structures and focuses on describing data types, entities, relationships, etc.
This logical level comes between the user level and physical storage view.
关于概念模式的事实:
定义所有数据库实体、它们的属性和它们的关系
安全和完整性信息
在概念层面,用户可用的数据必须包含在物理层面或从物理层面推导出来。
Facts about Conceptual schema:
Defines all database entities, their attributes, and their relationships
Security and integrity (完整性)information
In the conceptual level, the data available to a user must be contained in or derivable (推导)from the physical level。
External Schema/Level
外部架构/级别
外部模式描述了特定用户感兴趣的数据库部分。它向用户隐藏了数据库的无关细节。每个数据库可能有“n”个外部视图。
每个外部视图都使用外部模式定义,该模式由该特定视图的各种类型的外部记录的定义组成。
外部视图只是某些特定用户看到的数据库内容。例如,销售部门的用户将只能看到与销售相关的数据。
An external schema describes the part of the database which specific user is interested in. It hides the unrelated details of the database from the user. There may be “n” number of external views for each database.
Each external view is defined using an external schema, which consists of definitions of various types of external record of that specific view.
An external view is just the content of the database as it is seen by some specific particular user. For example, a user from the sales department will see only sales related data.
关于外部架构的事实:
外部级别仅与特定最终用户查看的数据相关。
此级别包括一些外部模式。
外部架构级别离用户最近
外部模式描述了特定用户组所需的数据库段,并对特定用户组隐藏了数据库中的其余详细信息
Facts about external schema:
An external level is only related to the data which is viewed by specific end users.
This level includes some external schemas.
External schema level is nearest to the user
The external schema describes the segment of the database which is needed for a certain user group and hides the remaining details from the database from the specific user group
Goal of 3 level/schema of Database
数据库的 3 级/模式的目标
以下是使用三模式架构的一些目标:
每个用户都应该能够访问相同的数据,也能自定义视图。
用户无需直接处理物理数据库存储细节。
DBA 应该能够在不干扰用户视图的情况下,更改数据库存储结构。
当对存储的物理方面进行更改时,数据库的内部结构应保持不受影响。
Here, are some Objectives of using Three schema Architecture:
Every user should be able to access the same data but able to see a customized view of the data.
The user need not to deal directly with physical database storage detail.
The DBA should be able to change the database storage structure without disturbing the user’s views
The internal structure of the database should remain unaffected when changes made to the physical aspects of storage.
Advantages Database Schema
您可以独立于物理存储管理数据
更快地迁移到新的图形环境
DBMS 体系结构允许您在表示级别进行更改而不影响其他两层
由于每一层都是独立的,因此可以使用不同的开发人员集
由于客户端无法直接访问数据库业务逻辑,因此更安全
如果一层发生故障,则不会丢失数据,因为您始终可以通过访问另一层来确保安全
You can manage data independent of the physical storage
Faster Migration to new graphical environments
DBMS Architecture allows you to make changes on the presentation level without affecting the other two layers
As each tier is separate, it is possible to use different sets of developers
It is more secure as the client doesn’t have direct access to the database business logic
In case of the failure of the one-tier no data loss as you are always secure by accessing the other tier
Disadvantages Database Schema
1.复杂性:完整的 DB Schema 是一个复杂的结构,每个人都难以理解
2.运维:成本高,难。
3.性能:层的物理分离会影响数据库的性能。
Complete DB Schema is a complex structure which is difficult to understand for every one
Difficult to set up and maintain
The physical separation of the tiers can affect the performance of the Database
Summary
1.数据抽象主要有三个层次:物理层(内部模式)、逻辑层(概念模式)、用户层(外部模式)。
2.内部模式定义了数据库的物理存储结构
3.概念模式为用户社区描述了整个数据库的数据库结构
4.外部模式描述了特定用户感兴趣的数据库部分
5.DBMS 体系结构允许您在表示级别进行更改而不影响其他两层。
There are mainly three levels of data abstraction: Internal Level, Conceptual or Logical Level or External or View level
The internal schema defines the physical storage structure of the database
The conceptual schema describes the Database structure of the whole database for the community of users
An external schema describe the part of the database which specific user is interested in
DBMS Architecture allows you to make changes on the presentation level without affecting the other two layers
Following are the three levels of database architecture,
1. Physical Level
2. Conceptual Level
3. External Level
In the above diagram, It shows the architecture of DBMS.
Mapping is the process of transforming request response between various database levels of architecture. Mapping is not good for small database, because it takes more time.
In External - Conceptual (User - Logical)mapping, DBMS transforms a request on an external schema against the conceptual schema.
In Conceptual - Internal mapping(Logical - Physical), it is necessary to transform the request from the conceptual to internal levels.
1. External Level
External level is related to the data which is viewed by individual end users.
This level includes a no. of user views or external schemas.
This level is closest to the user.
External view describes the segment of the database that is required for a particular user group and hides the rest of the database from that user group.
2. Conceptual Level
Conceptual level describes the structure of the whole database for a group of users.
It is also called as the data model.
Conceptual schema is a representation of the entire content of the database.
These schema contains all the information to build relevant external records.
It hides the internal details of physical storage.
3. Physical Level
Physical level describes the physical storage structure of data in database.
It is also known as Internal Level.This level is very close to physical storage of data.
At lowest level, it is stored in the form of bits with the physical addresses on the secondary storage device.
At highest level, it can be viewed in the form of files.
The internal schema defines the various stored data types. It uses a physical data model.
1.外模式(用户层)
外模式又称子模式或用户模式,对应于用户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据。用户可以通过外模式描述语言来描述、定义对应于用户的数据记录(外模式),也可以利用数据操纵语言(Data Manipulation Language,DML)对这些数据记录进行操作。外模式反映了数据库系统的用户观。
2.概念模式(逻辑层)
概念模式又称模式或逻辑模式,对应于概念级。它是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图)。它是由数据库管理系统提供的数据模式描述语言(Data Description Language,DDL)来描述、定义的。概念模式反映了数据库系统的整体观。
3.内模式(物理存储层)
内模式又称存储模式,对应于物理级。它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式和物理结构,对应着实际存储在外存储介质上的数据库。内模式由内模式描述语言来描述、定义的。内模式反映了数据库系统的存储观。
数据库的三级模式,是数据库在三个级别 (层次)上的抽象,使用户能够逻辑地、抽象地处理数据,而不必关心数据在计算机中的物理表示和存储。
实际上 ,对于一个数据库系统而言:
1.物理级数据库是进行数据库操作的基础。
2.概念级数据库中不过是物理数据库的一种逻辑的、抽象的描述(即模式)。
3.用户级数据库则是用户与数据库的接口,它是概念级数据库的一个子集(外模式)。
用户应用程序根据外模式进行数据操作,通过外模式一模式映射,定义和建立某个外模式与模式间的对应关系,将外模式与模式联系起来,当模式发生改变时,只要改变其映射,就可以使外模式保持不变,对应的应用程序也可保持不变;
另一方面,通过模式一内模式映射,定义建立数据的逻辑结构(模式)与存储结构(内模式)间的对应关系,当数据的存储结构发生变化时,只需改变模式一内模式映射,就能保持模式不变,因此应用程序也可以保持不变。
数据库的两级映射
数据库系统在三级模式之间提供了两级映像:
逻辑层(模式)-物理层(内模式)的映像:实现概念模式到内模式之间的相互转换。
用户层(外模式)-逻辑层(模式)的映像:实现外模式到概念模式之间的相互转换。
数据的独立性是指数据与程序独立,将数据的定义从程序中分离出来,由DBMS(数据库管理系统)负责数据的存储,从而简化应用程序,大大减少应用程序编制的工作量。
数据的独立性是由DBMS的二级映像功能来保证的。数据的独立性包括数据的物理独立性和数据的逻辑独立性。
什么是数据的物理独立性?
答:数据的物理独立性是指当数据库的内模式发生改变时,数据的的逻辑结构不变。由于应用程序处理的只是数据的逻辑结构,这样物理独立性可以保证,当数据的物理结构改变了,应用程序不用改变。但是,为了保证应用程序能够正确执行,需要修改概念模式/内模式之间的映像。
什么是数据的逻辑独立性?
答:数据的逻辑独立性是指用户的应用程序与数据库结构是相互独立的。数据的逻辑结构发生变化后,用户程序也可以不修改。但是,为了保证应用程序能够正确执行,需要修改外模式/概念模式之间的映像。
一句话总结一下:
通俗来讲就是如果改变了某个模式,只需要修改上一层的映像。
即改变内模式,只需要修改模式/内模式映像(物理独立性);
改变概念模式(逻辑结构),只需要修改外模式/模式映像(逻辑独立性)
DBMS Three Level Architecture Diagram
This architecture has three levels:
1. External level
2. Conceptual level
3. Internal level
1. External level
It is also called view level. The reason this level is called “view” is because several users can view their desired data from this level which is internally fetched from database with the help of conceptual and internal level mapping.
The user doesn’t need to know the database schema details such as data structure, table definition etc. user is only concerned about data which is what returned back to the view level after it has been fetched from database (present at the internal level).
External level is the “top level” of the Three Level DBMS Architecture.
2. Conceptual level
It is also called logical level. The whole design of the database such as relationship among data, schema of data etc. are described in this level.
Database constraints and security are also implemented in this level of architecture. This level is maintained by DBA (database administrator).
3. Internal level
This level is also known as physical level. This level describes how the data is actually stored in the storage devices. This level is also responsible for allocating space to the data. This is the lowest level of the architecture.
数据仓库:Data Warehousing
关键词:数据仓库,物理设计,非关系型数据库,OLAP查询处理,HBase,星型模式基准。
Data Warehousing, Physical Design, NoSQL, OLAP Query Processing, HBase, Star Schema Benchmark.
数据仓库和在线分析处理(OLAP)是当今商业智能研究的核心技术,近十年来受到了研究者的广泛关注。OLAP查询的流转时长,受到物理数据仓库设计和访问的维度和数据量的影响。使用不同的属性分布列族可以提高HBase中的OLAP查询性能,从而形成基准更适合非关系型数据库的OLAP。
Three-level DW architecture for NoSQL column-oriented(列式存储) databases:
小结
1.三级模式结构:外模式(用户级)、概念模式(概念级)、内模式(物理级)。
2.目的:更加有效地组织、管理数据,提高数据库的逻辑独立性和物理独立性。不同级别的用户,对数据库形成不同的视图。所谓视图,就是指观察、认识和理解数据的范围、角度和方法,是数据库在用户“眼中"的反映,很显然,不同层次(级别)用户所“看到”的数据库是不相同的。
3.好处:解耦,隔离。数据按外模式的描述提供给用户;按内模式的描述存储在磁盘上;而概念模式提供了连接这两级模式的相对稳定的中间层,并使得两级中任意一级的改变都不受另一级的牵制。
参考资料
https://svitla.com/blog/database-management-software
http://jcsites.juniata.edu/faculty/rhodes/dbms/dbarch.htm
https://www.geeksforgeeks.org/introduction-of-3-tier-architecture-in-dbms-set-2/
https://www.guru99.com/dbms-schemas.html
《ClickHouse 实战:企业级大数据分析引擎教程》
内容简介
Create scalable, fault-tolerant, and reliable online analytical applications with a feature-rich DBMS designed for speed.
Key Features
● Hands-on approach towards learning ClickHouse from basic to advanced level.
● Numerous examples demonstrating how to use ClickHouse for analytical tasks.
● Straightforward explanations for complex concepts on ClickHouse and its vast features.
● Integration with a variety of technologies such as MySQL, PostgreSQL, Kafka, and Amazon S3.
Description
This book provides a hands-on approach for data professionals to onboard ClickHouse and empowers the readers to perform real-time analytics using ClickHouse SQL.
The readers will understand the fundamentals of database technologies and frequently used relational database concepts such as keys, database normalisation etc. The readers will learn to query the data using SQL (ClickHouse dialect), configure databases and tables in ClickHouse and use the various types of core table engines available in ClickHouse, including the MergeTree and Log family engines. The readers will be able to investigate and practically integrate ClickHouse with various external data sources and work with unique table engines shipped with ClickHouse. With help of the examples provided, readers will be able to gain experience in configuring the ClickHouse setup and perform administrative tasks in the ClickHouse Server.
Throughout this journey, readers will reinforce their learning by using numerous working examples and the question and answer section at the end of each chapter. By the end of this book, readers will be able to apply their knowledge and utilize ClickHouse in real-world applications.
What you will learn
● Querying the tables in ClickHouse and performing analytical tasks using ClickHouse SQL.
● Integrating and running queries with popular RDBMS, including MySQL and PostgreSQL.
● Integrating with cloud storage and streaming platforms such as S3 and Kafka.
● Working with Core engines and special engines.
● Configure the ClickHouse setup and carry out administrative tasks.
Who this book is for
This book is intended for data engineers, application developers, database administrators and software architects who want to learn ClickHouse.
Table of Contents
1. Introduction
2. The Relational Database Model and Database Design
3. Setting up the Environment
4. ClickHouse SQL
5. SQL Functions in ClickHouse
6. SQL Functions for Data Aggregation
7. Table Engines (表引擎)- MergeTree Family
8. Table Engines - Log Family
9. External Data Sources(ClickHouse与外部应用程序集成)
10. Special Engines
11. Configuring the ClickHouse Setup – Part 1
12. Configuring the ClickHouse Setup – Part 2
名词说明
Big Data:大数据
data engineering:数据工程
data science:数据科学
database design:数据库设计
machine learning:机器学习