大工程 从0到1 数据治理 之数仓篇
我这里还是sample database classicmodels为案列,可以下载,我看 网上还没有类似的 案列,那就 从 0-1开始吧!
什么是数仓?
数仓是指数据仓库的简称(Data Warehouse)。数据仓库是一个用于集中存储和管理大量结构化和非结构化数据的系统。它的目标是帮助组织更好地理解和分析其数据,支持决策和业务运营或者说是 支持企业在决策和分析方面的需求,提供可靠、一致、高性能的数据存储和访问。
以通俗易懂的方式来说,你可以把数据仓库比喻为一个大型的数据存储仓库,就像企业中的“数据中心”。这个仓库里存放着各种各样的数据,包括销售数据、客户信息、交易记录等等,这些数据来自企业内部的不同部门和系统。
数仓的主要功能是将这些分散的数据整合在一起,清理和转换成可分析的格式,使企业管理层和决策者能够更轻松地查看、理解和利用这些信息。通过数仓,企业可以进行更有效的业务分析、趋势预测、决策制定,从而提升业务的智能化和竞争力。
数仓的优势包括:
决策支持: 提供高性能的查询和报表功能,帮助企业领导和分析师做出更好的决策。
数据一致性: 集中存储数据,确保数据的一致性和准确性。
历史数据追溯: 可以存储历史数据,支持时间序列分析和趋势观察。
数据整合: 整合来自不同业务系统的数据,提供一个全面的视图。
总的来说,数据仓库在企业中扮演着重要角色,帮助组织更好地理解和利用其数据资产。
数仓通常从不同的业务系统中汇总数据,将其清洗、转换、加载(ETL)到一个统一的存储库中,以便用户可以执行复杂的查询和分析。数据仓库的设计通常遵循维度建模的原则,其中数据被组织成事实表和维度表,以支持多维分析。
企业为什么要建数仓?
企业建立数据仓库(Data Warehouse)有多个重要原因,其中一些主要的包括:
集中数据存储: 数据仓库提供一个集中存储和管理企业内部和外部数据的地方。这使得数据更容易访问、管理和维护,有助于确保数据的一致性和准确性。
支持决策制定: 数据仓库能够整合不同来源的数据,提供更全面、准确的信息,帮助企业管理层做出更明智的战略和战术决策。通过分析历史数据和当前趋势,企业能更好地了解市场、客户、业务运营等方面的情况。
提高数据质量: 数据仓库通常包括数据清洗、转换和加载(ETL)过程,通过这些过程,可以提高数据的质量,确保数据的一致性和准确性。这有助于避免在决策中因为数据质量问题而导致的错误。
支持业务智能和分析: 数据仓库是业务智能和分析的基础。通过对数据仓库中的数据进行查询和分析,企业可以获取深刻的见解,发现潜在的模式和趋势,帮助业务更好地了解市场、客户需求和业务绩效。
满足合规性要求: 数据仓库的建立可以有助于满足法规和合规性方面的要求。通过确保数据的一致性和准确性,企业能够更容易地满足监管机构的规定。
支持大数据处理: 随着大数据的崛起,企业需要处理和分析海量的数据。数据仓库提供了一种结构化的方法,帮助企业有效地管理和分析大规模数据集。
促进数据驱动文化: 数据仓库可以促进数据驱动的企业文化。通过使数据更易于访问和理解,员工更有可能使用数据支持其决策和行动。
总的来说,建立数据仓库有助于企业更好地管理、分析和利用数据资源,从而提高决策的准确性和效率,推动业务的发展。
建数仓的数据库选型
关系型数据库:
Oracle Database: Oracle是一种强大的关系型数据库管理系统,广泛用于大型企业和复杂的数据仓库环境。
Microsoft SQL Server: SQL Server是微软推出的关系型数据库管理系统,适用于Windows环境,并提供强大的商业智能和分析功能。
MySQL: MySQL是一种开源的关系型数据库,适用于中小型企业的数据仓库建设。
列式数据库:
Greenplum: Greenplum是一种基于开源的列式数据库,专注于大规模数据仓库和分析场景。
ClickHouse: ClickHouse是俄罗斯的一种列式数据库,以其高性能和可扩展性而闻名。
分布式数据库:
Hadoop和Hive: 使用Hadoop作为分布式存储,结合Hive进行数据仓库查询。这适用于大规模的数据分析和处理。
Spark SQL: 基于Apache Spark的分布式数据库,适用于大规模数据处理和复杂分析。
NoSQL数据库:
MongoDB: MongoDB是一种面向文档的NoSQL数据库,适用于半结构化数据和灵活的数据模型。
Cassandra: Cassandra是一种分布式的NoSQL数据库,适用于具有高可扩展性和高可用性需求的场景。
还有
云数据库服务:
阿里云 AnalyticDB: 阿里云的AnalyticDB是一种云上数据仓库服务,具有高性能、弹性扩展和集成大数据处理的特点。
腾讯云 ClickHouse: 腾讯云提供的ClickHouse服务,可以方便地在云上搭建基于列式存储的数据仓库。
Mpp数据库:
StarRocks 和 Doris:
StarRocks 和 Doris 都是分布式的实时分析数据库,属于MPP(Massively Parallel Processing)架构的一种。它们的设计目标是支持大规模数据存储和分析,特别适用于OLAP(Online Analytical Processing)场景,即面向复杂查询和分析的工作负载。
中国的一些MPP(Massively Parallel Processing)数据库包括:
OceanBase:
OceanBase是由阿里巴巴开发的分布式数据库系统。它支持水平扩展和MPP处理,用于应对大规模数据存储和处理需求。OceanBase不仅支持事务型工作负载,还能够处理大量的分析型查询。
TencentDB:
腾讯云的数据库服务TencentDB(原腾讯云分布式数据库TDSQL)具有分布式架构和MPP处理能力,适用于OLAP和OLTP场景。它提供了MySQL、PostgreSQL和SQL Server等不同引擎的版本。
Huawei GaussDB:
华为的GaussDB是一款分布式数据库产品,支持MPP处理,适用于海量数据的存储和分析。它支持多模型数据库,包括关系型、时序型、图形型等。
数仓的备份
数据仓库的备份是保障数据安全、可用性和完整性的关键步骤。备份策略应该根据业务需求、数据重要性和恢复时间目标(Recovery Time Objective, RTO)等因素进行制定。以下是关于数据仓库备份的一些建议:
全量备份:
定期进行全量备份是数据仓库备份策略的基础。全量备份包含整个数据库的数据,是恢复数据的基础。
增量备份:
为减少备份时间和存储成本,可以考虑增量备份。增量备份只备份自上次备份以来发生变化的数据,节省存储空间和备份时间。
定期备份计划:
制定定期的备份计划,根据业务需求和数据变化频率来决定备份的频率。一般来说,每日全量备份和更频繁的增量备份是常见的做法。
分层备份:
根据数据仓库的不同层次,可以考虑采用分层备份策略。比如,可以对ODS层和DWD层采用不同的备份频率和保留期限,根据数据变更的频率和重要性进行调整。
异地备份:
将备份数据存储在与数据仓库主体不同的物理位置,以防止因自然灾害、硬件故障等原因导致的数据丢失。云存储服务也是一个常见的异地备份选择。
压缩和加密:
在备份数据时,可以考虑对备份文件进行压缩,以节省存储空间。同时,对备份数据进行加密有助于确保备份文件的安全性
测试恢复流程:
定期测试备份的恢复过程,以确保备份数据的完整性和可用性。这可以在面临真实灾难时提高数据恢复的成功率。
日志备份:
在数据库支持的情况下,进行事务日志的备份,以支持点时间恢复(Point-in-Time Recovery)。这可以减小数据丢失的范围。
监控和报警:
设置备份任务的监控和报警机制,及时发现备份失败、存储空间不足等问题,确保备份任务按计划执行。
备份是数据管理中至关重要的一环,一个健全的备份策略有助于最小化数据丢失、确保系统可用性,并提供在紧急情况下迅速恢复数据的能力。
TB级数仓的硬件配置
要构建一个TB级别的大规模数据仓库,需要精心设计硬件配置以满足高性能、可伸缩性和可靠性的要求。以下是一个概括性的TB级数据仓库的硬件配置示例:
计算节点(Compute Nodes):
数量: 数十至数百台计算节点,具体数量根据数据规模和性能需求而定。
处理器: 每个计算节点配备多个高性能的多核处理器,如Intel Xeon或AMD EPYC系列。
内存: 大量的RAM,通常每个节点需要几百GB到数TB的内存,以支持大规模数据的并行处理和分析。
存储节点(Storage Nodes):
数量: 数十至数百台存储节点,用于存储大规模的数据。
存储类型: 高性能的分布式存储系统,可能包括SSD和HDD的混合存储,以平衡性能和成本。分布式文件系统或对象存储可用于提供高可用性和可伸缩性。
存储容量: 每个节点具有数十TB到数百TB的存储容量,总存储容量达到TB级别。
网络架构:
高速网络: 使用高速网络互联计算节点和存储节点,例如40Gbps或100Gbps以保障快速数据传输。
InfiniBand或Ethernet: 选择适当的网络技术,以支持低延迟和高带宽的通信,确保计算节点和存储节点之间的有效通信。
数据库引擎和软件:
分布式数据库: 选择适合大规模数据仓库的分布式数据库引擎,如StarRocks、Doris、Greenplum等。
操作系统: 使用稳定、高性能的操作系统,如Linux发行版(例如CentOS、Red Hat)。
负载均衡和管理工具:
负载均衡器: 在前端引入负载均衡器以平衡查询负载,确保计算和存储资源充分利用。
集群管理工具: 使用专业的集群管理工具,确保节点的高可用性和故障恢复。
冗余备份和灾难恢复:
冗余节点: 在计算和存储层面引入冗余节点,以防单个节点故障。这可以通过数据复制和备份机制来实现。
灾难恢复: 考虑在不同地理位置部署冗余数据中心,以实现灾难恢复和数据备份的安全性。
以上硬件配置只是一个示例,具体的TB级数据仓库硬件配置需要根据实际需求、预算和性能目标进行调整。在设计和建设过程中,建议进行性能测试和负载测试,以确保硬件配置能够满足数据仓库的需求。
一些学习资料
clickhouse -data warehouse
文本 将使用 clickhouse 做数据仓库,后面一章会说到,谢谢大家