PPT 课后习题
1.1.1. 如何区分DB、DBMS、DS、DAS
数据库:数据集合。
数据库管理系统:管理数据库的软件。
数据库系统:基于数据库进行管理的软件系统。
数据库应用系统:利用数据库开发的应用程序。
-
数据库:按特定数据模型 组织、存储、管理 数据的文件集合。可以包含各种类型的数据,如文本、数字和图像等。
-
数据库管理系统:一种软件系统,用于管理数据库的创建、访问、更新和维护等操作。它提供了数据安全、并发控制、备份和恢复等功能。
-
数据库系统:指整个数据库生态系统,包括数据库本身、数据库管理系统以及与数据库相关的工具、应用程序和支持设施。数据库系统旨在提供高效的数据管理和访问功能。
-
数据库应用系统:利用数据库和相关技术开发的应用程序系统。这些系统使用数据库存储和管理数据,并提供用户界面和功能,以满足特定的业务需求。数据库应用系统可以是管理系统、信息系统、决策支持系统等。
1.1.2. 在数据库中,数据模型有何作用?它有哪些组成部分?
-
数据模型是用于描述数据的结构、关系和约束的抽象表示方式。其作用是定义数据之间的关系,以及如何在数据库中组织和存储数据,从而提供对数据的有效管理和操作。
-
组成部分有:
-
实体:描述数据库中的实际对象或事物,如人、地点、物品等。
-
属性:描述实体的特征或属性,例如人的姓名、年龄、地址等。
-
关系:描述实体之间的关联或连接,定义了不同实体之间的联系,如一对一、一对多、多对多等。
-
约束:限制数据的值范围或行为的规则,如主键约束、外键约束、唯一约束等。
-
模式:描述数据库中所有数据和关系的总体结构,定义了实体、属性、关系和约束之间的逻辑关系。
-
举个例子,考虑一个简单的学生信息管理系统,其中包含学生和课程两个实体,它们之间存在成绩关系。对于这个系统,可以定义以下模式:
学生实体:
属性:学生ID(StudentID)、姓名(Name)、年龄(Age)、性别(Gender)等。
约束:学生ID作为主键约束,确保每个学生ID都是唯一的。
课程实体:
属性:课程ID(CourseID)、课程名称(CourseName)、学分(Credits)等。
约束:课程ID作为主键约束,确保每个课程ID都是唯一的。
成绩关系:
关系:学生与课程之间的成绩关系,一个学生可以选修多门课程,一门课程可以被多个学生选修。
属性:成绩(Grade)。
总体模式:
描述了学生实体、课程实体和成绩关系之间的结构和关系,以及每个实体和关系的属性和约束。
这个模式定义了数据库中的数据组织方式,使得数据库管理系统能够有效地存储、检索和管理学生信息和课程信息,并支持成绩查询等操作。
1.1.3. 什么是元数据?它是如何产生的?存储在哪里?
-
元数据是描述数据的数据。它包括描述性、结构性和管理性元数据。
-
元数据通常在数据创建、修改或使用时自动生成。
-
存储在数据库系统中的系统表中(或特定的元数据存储库中)。
描述性元数据:描述数据的内容、结构和特征,如数据类型、字段名称、数据长度等。
结构性元数据:描述数据的组织结构和关系,如数据库表之间的关系、数据模型等。
管理性元数据:描述数据的管理和操作信息,如数据的创建时间、更新时间、访问权限等。
1.2.1 为什么关系数据库不适合大数据应用处理
高成本、扩展困难、处理速度慢、数据结构限制和不适合实时处理
1.2.2 结构化数据与非结构化数据有何区别
-
结构化数据:以表格形式存储的数据,具有明确定义的数据模式和关系,例如关系型数据库中的数据
-
非结构化数据:没有固定的数据模式或格式,不容易以表格形式存储或解释,例如文本文档、音频、视频等
(即,结构化数据具有明确的格式和关系,而非结构化数据则不具有固定的格式或关系。)
1.2.3 NoSQL数据库与NewSQL数据库有何区别
-
NoSQL数据库(Not Only SQL):
-
用于处理大规模数据和非结构化数据(如键值对、文档型、列存储和图形数据库);
-
强调高可扩展性、高性能和灵活性。
-
通常用于社交媒体、大数据分析。
-
-
NewSQL数据库:是传统SQL数据库的扩展或改进
-
保持了SQL数据库的结构化数据模型,但提供了更好的水平扩展和性能。;
-
保持强一致性和ACID(原子性、一致性、隔离性、持久性)特性的基础上,提供了更好的分布式支持。
-
通常用于电子商务、金融服务。
-
1.2.4 通用数据库与领域数据库有何区别
-
通用数据库:
-
适用于广泛的应用需求,用于存储和管理各种类型的数据,并提供通用的查询和操作功能。
-
采用标准化的数据模型和查询语言,如关系型数据库管理系统(RDBMS)中的SQL。
-
-
领域数据库:
-
专注于特定领域或应用场景,提供针对性的优化和功能。优化了特定领域的数据模型和查询操作,以提供更高效的数据存储和访问方式。
-
可能会限制支持的数据类型和查询语言,但在特定领域内通常能够提供更好的性能和功能。
-
1.2.5 数据库和数据仓库有何区别
-
数据库主要用于支持实时的业务数据操作;
-
数据仓库用于支持数据分析和决策支持任务,存储大量历史数据,并提供高度优化的查询和分析功能。
1.3.1 银行业务信息系统应采用哪类数据库应用架构
-
应选择关系型数据库,如PostgreSQL、Oracle。
-
银行业务对数据的一致性、可靠性和安全性要求非常高,而关系型数据库通常提供了成熟稳定的事务处理机制和丰富的安全功能,能够满足银行业务系统对于数据安全性和合规性的要求。此外,关系型数据库在 处理复杂的查询和分析操作 时也表现良好,适用于银行业务系统对于数据分析和报告的需求。
1.3.2 数据架构师通常在应用系统的生命周期哪些阶段开展工作?DBA管理人员又在哪些阶段开展工作?
数据库应用系统的生命周期分为:需求分析、系统设计、系统实现、系统测试、系统运行和维护 5个周期
-
数据架构师主要在 需求分析、系统设计、系统实现 阶段工作;
-
数据库管理员主要在 系统实现、系统测试、系统运行和维护 阶段工作。
1.3.3 数据库开发人员、DBA管理人员为何须遵守职业道德与工程伦理?
-
保护数据安全
-
维护系统稳定性
-
遵守法律法规
-
维护职业声誉
-
履行社会责任
DB方面:数据安全和系统稳定
社会方面:法律、职业声誉、社会责任
1.4.1 略
1.4.2 为什么要大力发展自主知识产权的国产数据库软件
-
保护国家数据安全、技术自主可控: 使用国产数据库软件可以减少对外部技术的依赖,降低数据被外部势力窃取或操控的风险。
-
降低成本: 国产数据库软件可以减少对外部软件厂商的采购成本,同时提供定制化服务,降低维护成本。
-
促进技术创新: 投入本土数据库软件研发可以推动技术创新,带来新的解决方案和应用场景,推动整个行业的发展。
-
提升国际竞争力: 有竞争力的国产数据库软件可以输出到国际市场,增加出口收入,提高国家在全球科技产业链中的地位。
1.4.3 对发展自主知识产权的国产数据库软件有何建议
-
政策支持: 政府可以出台政策,提供资金支持和税收优惠,鼓励企业和研究机构投入数据库软件的研发和创新。
-
人才培养: 加强数据库软件领域的人才培养和引进,建立相关专业课程和研究机构,培养更多的技术人才。
-
产学研结合: 鼓励企业、高校和科研院所之间的合作,共同开展数据库软件的研发项目,加速技术创新和成果转化。
-
标准制定: 制定国家标准和规范,推动数据库软件领域的技术标准化,提高国产软件的质量和竞争力。
-
用户反馈: 加强与用户的沟通和反馈机制,及时了解用户需求,不断优化和改进数据库软件的功能和性能。
-
知识产权保护: 加强知识产权保护,建立完善的法律和制度体系,保护自主研发的数据库软件的知识产权。
-
国际交流合作: 加强与国际数据库软件领域的交流与合作,吸收国际先进经验和技术,提高国产数据库软件的国际竞争力。
国家层面:政策、人才培养、标准制定、知识产权保护、国际交流合作
社会层面:产学研结合、用户反馈
1.4.4 PostgreSQL与MySQL相比,有哪些优势
-
MySQL是开源产品但属于Oracle公司,PostgreSQL是真正的开源项目。
-
完整的 ACID 支持: PostgreSQL 提供了完整的 ACID 事务支持,确保数据的原子性、一致性、隔离性和持久性,适用于需要高数据完整性的场景。
-
丰富的数据类型: PostgreSQL 支持多种数据类型,包括数组、JSON、XML 等,为用户提供了更灵活的数据存储和操作方式。
-
复杂查询优化: PostgreSQL 在优化复杂查询方面表现较强,能够更高效地处理大规模数据和复杂查询。
-
强大的扩展性: PostgreSQL 提供了丰富的扩展接口和插件系统,使得用户可以轻松扩展其功能,满足不同应用场景的需求。
-
PL/pgSQL 支持: PostgreSQL 内置了 PL/pgSQL 编程语言,支持在数据库中编写存储过程和触发器,提供了更灵活的数据处理和逻辑控制方式。
-
地理空间功能: PostgreSQL 提供了强大的地理空间支持,包括地理数据类型和地理查询功能,适用于地理信息系统等空间数据处理应用。
-
庞大的开源社区支持: PostgreSQL 拥有庞大的开源社区,提供了丰富的文档、教程和技术支持,用户可以通过社区获取帮助和交流经验。
语言本身:真正开源、丰富的数据结构
功能:ACID支持(原子性atomicity、一致性consistency、隔离性isolation、持久性durability);
处理大型数据库和复杂查询性能更好;
接口和插件丰富,可拓展性强;
内置PL/pgSQL语言,可在DB中编写存储过程和触发器;
提供了强大的地理空间支持;
开源社区支持
1.5.1 PostgreSQL中,单个数据库的最大容量是多少?单个表的最大容量是多少?单个记录的最大容量是多少?单个字段的最大容量是多少?单表支持的最大字段数是多少?
单个数据库的最大容量受到操作系统文件系统的限制。
单个表的最大容量为32TB
单个记录的最大容量为1.6GB
-
单个数据库的最大容量: 单个数据库的最大容量通常受到操作系统文件系统的限制,一般情况下可以达到数百 TB 到数 PB 之间,具体取决于文件系统的支持和配置。
-
单个表的最大容量: 单个表的最大容量通常被认为是 32 TB,这是由于 PostgreSQL 中使用的 64 位系统的文件偏移量的限制。
-
单个记录的最大容量: 单个记录的最大容量通常被认为是 1.6 GB,这是由于 PostgreSQL 对单个记录的大小有限制。
-
单个字段的最大容量: 单个字段的最大容量取决于字段的数据类型。例如,对于
text
类型的字段,最大容量为 1 GB;对于varchar
类型的字段,最大容量为 1 GB 减去头部开销。 -
单表支持的最大字段数: PostgreSQL 没有明确规定单表支持的最大字段数,但在实际应用中,受到硬件资源和性能的限制,通常建议控制单表的字段数在几百到一千以内,以确保查询和索引等操作的性能。
学堂在线补充
1.2 向量数据库与关系数据库有哪些区别?
-
关系数据库(以行、列存储)适用于传统的结构化数据存储和 OLTP 应用,例如:企业管理系统、电子商务系统
-
向量数据库(以向量、矩阵存储,查询性能更高)适用于大规模高维度的向量数据存储和处理,例如:人脸识别、语音识别
1.3.1 什么应用场景使用OLTP数据库?什么场景下使用OLAP数据库?什么场景下使用HTAP数据库?
OLTP(Online Transaction Processing):联机事务处理
高并发、低延迟、短事务时间,主要进行数据增删查改
OLAP(Online Analytical Processing) :联机分析处理
针对大量历史数据进行复杂的聚合、分析和报表生成,支持复杂的多维度查询和数据切片
HTAP(Hybrid Transaction and Analysis Processing):混合事务分析处理
兼顾了 OLTP 和 OLAP 的特性,既能处理实时交易,又能支持复杂的分析查询,具有高吞吐量和低延迟(均衡的处理)
-
OLTP 适用于实时交易处理。
如:网上银行系统、景区门票销售系统、酒店系统。
-
OLAP 适用于复杂分析和报表查询。
如:CRM系统、金融风险预测预警系统、电信业务决策支持系统。
-
HTAP在OLTP和OLAP中寻求平衡,适用于需要同时满足事务处理和分析处理需求的场景(实时+分析)。
如:金融、零售、物流、医疗行业等。
1.3.2 数据库分布式-多主架构与数据库分布式-分片架构各有什么优缺点?
-
多主架构:
-
优点:避免单点故障风险;提升数据库写性能。
-
缺点:数据库节点数量增加导致数据同步困难;各节点间数据复制时延长。
-
-
分片架构:
-
优点:数据库系统的可拓展性、性能、可用性更高。
-
缺点:数据库管理难度更高,成本更高。
-
1.5.2 PostgreSQL数据库日志文件、数据文件分别放在安装路径下哪个目录内?
-
日志文件:PostgreSQL安装目录下的 data 目录。
-
数据文件:PostgreSQL安装目录下的 pg_log 目录。
1.5.3 PostgreSQL数据库的参数文件有哪些?它们主要什么作用?
(感觉不会考)
PostgreSQL 的参数文件通常是
postgresql.conf
,它是 PostgreSQL 的主要配置文件,用于配置数据库服务器的各种参数。以下是一些常见的 PostgreSQL 参数及其作用:
listen_addresses: 指定服务器监听的 IP 地址或主机名。
port: 指定服务器监听的端口号。
max_connections: 指定服务器支持的最大客户端连接数。
shared_buffers: 指定分配给共享内存缓冲区的内存大小,用于缓存数据和索引块。
work_mem: 指定每个工作进程使用的内存大小,用于排序和哈希表操作等内存相关的操作。
maintenance_work_mem: 指定执行维护操作(如索引重建、VACUUM)时每个工作进程使用的内存大小。
effective_cache_size: 用于估计系统中可用的操作系统缓存大小,以便 PostgreSQL 优化查询计划。
checkpoint_completion_target: 指定在检查点过程中刷新缓冲区的目标百分比,用于控制检查点过程的性能和吞吐量。
log_destination: 指定日志的输出目标,可以是文件、syslog、stderr 等。
logging_collector: 指定是否启用日志收集器进程,用于收集和写入日志文件。
1.5.4 如何查看PostgreSQL数据库的控制文件内容?
(感觉也不会考)
-
使用 psql 命令行工具:
在命令行中执行以下命令可以连接到 PostgreSQL 数据库,并通过 SQL 查询查看
postgresql.conf
文件的内容:bash 复制代码 psql -U username -d database_name -c 'SHOW config_file;'
这会显示 PostgreSQL 数据库正在使用的
postgresql.conf
文件的路径。然后,你可以使用文本编辑器打开该文件,查看其中的配置参数内容。 -
直接在操作系统中查看文件内容:
使用文本编辑器(如
vi
、nano
、gedit
等)或者命令行工具(如cat
、less
等)直接打开 PostgreSQL 数据库的postgresql.conf
文件,查看其中的配置参数内容。bash 复制代码 vi /path/to/postgresql.conf
-
使用 SQL 查询查看参数值:
连接到 PostgreSQL 数据库,并执行以下 SQL 查询,可以直接查看数据库中各个参数的当前值:
sql 复制代码 SHOW all;