简单的说下什么是数据仓库

简介:

一般的数据库是一个操作型的数据存储工具,比如一个学校的选课系统的数据库,学生选课系统由教务处建设和管理,主要用于课程的排课和学生的选课,教务处人员可以在选课系统中增加、修改、删除和查询排课信息,学生也可以在选课系统中对选课信息进行操作。由于该数据库面向的是选课,所以记录的是与课程安排与选课的信息,其数据库模型简化如下图所示:

image

与一般操作型的数据库不同的是数据仓库主要是面向查询操作,而且查询的数据来自于多个数据库系统。同样以一个学校为例,学校除了选课系统以外还有人力资源系统(HR系统)用于管理教师信息、学籍管理系统管理学生的学籍信息等。

HR系统是由人事处建设和管理的,主要保存与教师相关的信息,所以该系统中不会出现学生的信息,其系统数据库模型如下图所示:

image

学籍管理系统是由学生处建设和管理,数据库中保存了学生的学历、毕业去向、家庭情况等基本信息外还保存了学生每学期的考试成绩等信息。由于该系统关注的是学生,所以不会出现教师的信息,其系统数据库模型如下图所示:

image

由于不同的系统由不同的部门和人员建设和管理,保存了不同的信息,如果需要进行数据的联合查询,而查询的数据又存放在不同的数据库中,那么就需要将这3个系统数据库的信息集成在一起,放在一个数据模型中,形成数据仓库,以便对教师信息、学生信息和选课信息进行联合的查询,建立的数据仓库模型如下图所示:

image

例如要查询一次教师的培训是否对教师所教学生的成绩有影响,以便决定是否对教师进行下一步的培训,则只能在数据仓库中才能完成,因为教师的培训信息和学生的成绩是存放在不同的系统中,相互独立,查询单独的一个数据库是没办法完成的。

数据仓库与一般数据库比较,还有一个特点是记录了数据变更历史。在数据库中对数据进行的修改一般是直接在数据行上进行更新操作,所以只记录最新的数据结果,而数据仓库则会记录每天数据的变动情况,将变动之前的数据和变动后的数据都保存在数据仓库中,以便进行时间序列分析。

同样以学校的3个数据库和数据仓库为例,在HR系统中记录了每个教师的基本信息,其中一项是教师的职称。教师职称变动时只需在HR数据库中修改该教师的职称字段即可。如果要查询一个教授从刚开始的讲师到现在的教授不同的职称情况下所教学生的平均成绩情况,则需要从数据仓库中查出该教师每次职称变动的时间,然后统计每个时间段内该教师所教课程所教学生的平均成绩即可得出结果,而这个查询在HR数据库是没办法实现的。

目录
相关文章
|
10天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1216 5
|
9天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1181 87
|
10天前
|
云栖大会
阿里云云栖大会2025年9月24日开启,免费申请大会门票,速度领取~
2025云栖大会将于9月24-26日举行,官网免费预约畅享票,审核后短信通知,持证件入场
1776 12
|
19天前
|
人工智能 运维 安全
|
2天前
|
资源调度
除了nrm-pm,还有哪些工具可以管理多个包管理器的源?
除了nrm-pm,还有哪些工具可以管理多个包管理器的源?
230 127
|
10天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
362 0