数据库系统架构与数据挖掘技术解析
立即解锁
发布时间: 2025-08-23 00:18:34 阅读量: 9 订阅数: 18 


数据库管理系统的全面解析与实践
# 数据库系统架构与数据挖掘技术解析
## 1. 数据库查询策略
在公司数据库中,关系 `Employee (name, address, salary, branch)` 按分支进行水平分割,每个片段有两个副本,一个存储在站点 A,另一个存储在分支站点本地。对于在站点 B 输入的以下查询,有相应的处理策略:
- **查询所有站点 C 员工的姓名和地址**:将查询 `πname, address(Employee)` 发送到站点 C,然后将结果返回给站点 B。
- **查询所有员工的平均工资**:将查询 `£AVG(price)(Employee)` 发送到站点 A,因为站点 A 包含所有副本的副本,在站点 A 计算平均工资,然后将结果返回给站点 B。
- **查询公司中工资最低的员工**:将查询发送到站点 A,在站点 A 计算查询结果,然后将结果返回给站点 B。
## 2. 数据库相关概念选择题
|题目|选项|答案|
| ---- | ---- | ---- |
|衡量并行数据库系统效率的重要指标是?|(a) 加速比 (b) 扩展比 (c) 两者都是 (d) 都不是|(c)|
|哪种分割方式中,每个片段是原始关系中元组的子集?|(a) 水平分割 (b) 垂直分割 (c) 两者都是 (d) 都不是|(a)|
|哪种透明性允许用户像数据存储在自己的本地站点一样访问数据?|(a) 分割透明性 (b) 复制透明性 (c) 命名透明性 (d) 位置透明性|(d)|
|以下哪项不是复制的优点?|(a) 更好的性能 (b) 可靠性 (c) 更高的可用性 (d) 以上都是|(b)|
|执行连接操作时,用于降低通信成本的策略是?|(a) 等值连接 (b) 半连接 (c) 并行性 (d) 透明性|(b)|
|以下哪种事务仅在发起站点访问和更新数据?|(a) 全局事务 (b) 本地事务 (c) 水平事务 (d) 垂直事务|(b)|
|事务发起的站点被称为?|(a) 协调站点 (b) 主站点 (c) 参与站点 (d) 都不是|(a)|
|以下哪种技术被认为是真正的分布式并发控制方法?|(a) 时间戳 (b) 多数锁定 (c) 主副本 (d) 分布式锁管理器|(b)|
|以下哪种技术不用于三层客户端/服务器架构的表示层?|(a) JSP (b) 浏览器 (c) JavaScript (d) HTML|(a)|
|以下哪一层可以使用 ODBC、JDBC 等标准与一个或多个数据库进行通信?|(a) 数据库服务器 (b) 应用层 (c) 表示层 (d) 都不是|(b)|
|哪一层向数据库服务器发出 SQL 查询,格式化查询结果并发送给客户端进行展示?|(a) 应用层 (b) 表示层 (c) 数据库服务器 (d) 都不是|(a)|
## 3. 决策支持系统与相关工具
决策支持系统(DSS)旨在从传统数据库(如网络、层次、关系和面向对象数据库)中提取高级信息,并利用这些信息进行对组织重要的各种决策。支持决策活动的工具和技术包括数据仓库、在线分析处理(OLAP)和数据挖掘。
- **数据仓库**:包含来自多个来源的合并数据,增加了摘要信息,并涵盖较长的时间段。
- **OLAP**:指对数据仓库中复杂数据的分析。
- **数据挖掘**:指从大量数据中挖掘或发现新的信息,以模式或规则的形式呈现。
## 4. 数据仓库与 OLTP 系统的区别
数据仓库(DW)是一个存储从多个来源收集的合适运营数据的存储库,这些数据在统一模式下存储在单个站点。它可以成功回答任何临时、复杂、统计或分析查询,并且可以长时间存储数据,以便访问历史数据。数据仓库与传统事务处理系统(OLTP)有以下关键区别:
|比较项|数据仓库|OLTP 系统|
| ---- | ---- | ---- |
|设计目的|主要用于处理临时查询|仅支持预定义的操作,如插入、删除、更新和检索数据|
|更新方式|定期(每晚或每周)使用批量数据修改技术进行更新,由 ETL 工具完成,最终用户不允许直接更新|数据库始终是最新的,反映每个业务交易的当前状态,最终用户允许直接更新数据库|
|模式使用|通常使用非规范化或部分非规范化模式以优化查询性能|使用完全规范化模式以优化插入、删除和更新性能|
|查询记录数|典型查询访问数千或数百万条记录|典型查询一次仅访问几条记录|
|数据存储时长|通常存储数月或数年的数据以支持历史分析|通常仅存储数周或数月的数据|
## 5. 数据仓库的基本特征
数据仓库具有四个基本特征:
- **面向主题**:围绕主要主题(如客户、产品和销售)进行组织,数据按主题而非应用进行组织。例如,保险公司使用数据仓库会按客户、保费和索赔来组织数据,而不是按不同的政策。
- **非易失性**:是一个物理上独立的数据存储,不需要事务处理、恢复、并发控制等。数据一旦进入数据仓库,不会被覆盖或删除,只会被加载、刷新和用于查询。
- **时间变化**:存储数据以提供历史视角,因此数据仓库中的数据具有时间变化性或历史性。
- **集成性**:通常通过集成多个异构数据源(如关系数据库和平面文件)构建,数据库包含组织大多数或所有运营应用程序的数据,并且这些数据保持一致。
## 6. 数据仓库的架构
数据仓库主要由三个组件组成,其架构如下:
```mermaid
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A[数据来源]:::process --> B(ETL 过程):::process
B --> C[数据仓库]:::process
D[元数据仓库]:::process --> C
C --> E(OLAP):::process
C --> F(DSS):::process
C --> G(数据挖掘):::process
B -->|反向冲洗| A
```
- **数据来源**:大公司有各种数据来源,包括运营数据库和外部来源(如 Web、购买的数据等)。这些数据来源可能由不同的组独立构建,并且可能具有不同的模式。
- **ETL 过程**:获取数据到数据仓库涉及以下步骤:
1. 从多个异构数据源中提取数据。
2. 清洗数据以最小化错误并尽可能填充缺失信息,这一过程称为数据清洗。可以通过查找包含每个城市街道名称和邮政编码的数据库来纠正一些错误,这一近似匹配过程称为模糊查找。在某些情况下,组织的数据管理人员希望用清洗后的数据升级他们的数据,这一过程称为反向冲洗。然后将数据进行转换以适应语义不匹配。
3. 将清洗和转换后的数据加载到仓库中。数据进行分区,并构建索引或其他访问路径以快速高效地检索数据。由于数据量很大,加载过程很慢,因此并行性对于加载仓库很重要。在这个阶段还会进行额外的预处理,如排序和生成汇总数据。
- **元数据仓库**:是数据仓库最重要的组件,它跟踪当前存储的数据,包含数据的描述,包括其模式定义。元数据仓库包括技术元数据和业务元数据。技术元数据包括仓库的技术细节,如存储结构、数据描述、仓库操作等;业务元数据包括组织的相关业务规则。
## 7. 数据仓库的多维建模
数据仓库中的数据通常是多维数据,具有度量属性和维度属性。
- **度量属性**:用于衡量某些值并可以进行聚合的属性。
- **维度属性**:定义了查看度量属性及其摘要的维度。
包含此类多维数据的关系称为事实表,事实表包含数据仓库中的主要信息,通常非常大。例如,书店的 `SALES` 关系存储了不同时间、不同地点各种书籍的销售信息,其中 `number` 属性是度量属性,描述了销售的书籍数量。维度属性 `bid`、`tid` 和 `lid` 是其他表(称为维度表或查找表)的主键,这些维度表存储了关于维度的额外信息。
## 8. 多维数据的表示方式
多维数据在数据仓库中可以使用星型模式或雪花模式进行表示:
- **星型模式**:是最简单的数据仓库模式,由一个事实表和每个维度的单个表组成。星型模式的中心是一个大的事实表,星的点是维度表。
- **雪花模式**:是星型模式的变体,可能有多个级别的维度表。例如,`BOOK` 关系中的 `Book_title` 属性可以是另一个关系 `BOOK_DETAILS` 的外键,该关系带有一个额外的属性 `Descr` 来提供书籍的详细信息。同样,`TIME` 关系中的 `Quarter` 属性可以是另一个关系 `QTR_DETAILS` 的外键,该关系带有两个额外的属性 `Beg_date` 和 `End_date` 来分别提供每个季度的开始和结束日期。
## 9. 数据仓库中的多维数据表示
### 9.1 星型模式与雪花模式
多维数据在数据仓库中可以通过星型模式和雪花模式来表示。
- **星型模式**:是最简单的数据仓库模式,由一个事实表和每个维度的单个表组成。中心是大的事实表,周围的点是维度表。例如,在书店的例子中,`SALES` 作为事实表,`BOOK`、`TIME` 和 `LOCATION` 作为维度表构成星型模式。
- **雪花模式**:是星型模式的变体,可能有多个级别的维度表。如 `BOOK` 关系中的 `Book_title` 可作为外键关联到 `BOOK_DETAILS` 表,`TIME` 关系中的 `Quarter` 可关联到 `QTR_DETAILS` 表。
### 9.2 数据透视表
数据透视表或交叉表是一种二维表,其中一个属性(如 A)的值形成行标题,另一个属性(如 B)的值形成列标题。每个单元格可以由 `(ai, bj)` 标识,其中 `ai` 是 A 的值,`bj` 是 B 的值。如果事实表中只有一个具有 `(ai, bj)` 值的元组,则单元格中的值从该单个元组派生;如果有多个具有 `(ai, bj)` 值的元组,则单元格中的值通过对具有该值的元组进行聚合派生。在大多数情况下,会使用额外的行和列来存储行/列中单元格的总和。以下是 `SALES` 关系的不同交叉表示例:
- **按 `bid` 和 `tid` 交叉表(`lid` 为 all)**
|`tid`|1|2|3|Total|
| ---- | ---- | ---- | ---- | ---- |
|`bid` - `B1`|59|47|32|138|
|`bid` - `B2`|46|38|41|125|
|`bid` - `B3`|45|43|62|150|
|Total|150|128|135|413|
- **按 `lid` 和 `tid` 交叉表(`bid` 为 all)**
|`tid`|1|2|3|Total|
|
0
0
复制全文
相关推荐









