一种对数据仓库友好的数据库设计

本文涉及的产品
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 系统可以分为两种:一种是 联机交易系统(OLTP),一种是在线分析系统(OLAP)。OLTP用来收集数据,然后把数据同步到OLAP,在OLAP中进行分析数据。 OLAP可以减少OLTP的负载,提高对数据的利用率。

系统可以分为两种:一种是 联机交易系统(OLTP),一种是在线分析系统(OLAP)。OLTP用来收集数据,然后把数据同步到OLAP,在OLAP中进行分析数据。
OLAP可以减少OLTP的负载,提高对数据的利用率。

数据同步方法

将数据从OLTP同步到OLAP,有两种方法:全量同步和增量同步。

  • 全量同步:每次把全表数据同步到OLAP对应的表
  • 增量同步:每次把有变动的数据同步到OLAP对应的表

与增量同步相比,全量同步每次都要同步所有的数据,花费的时间大,对系统的负载高。
与全量同步相比,增量同步的难点在与如何识别出增量数据。

OLTP中友好的数据库设计

在建表的时候,包含如下字段:

  • 主键:每个表都有一个主键
  • created_time:表明数据是什么时候创建的,以后一直不变
  • modified_time:表明数据是什么时候修改的,每次修改,这个字段都会更新成最新的时间
  • deleted_flag:不物理删除,如果想要删除数据,就在将这个字段设为true。只要设置为true之后,以后一直不变,且modified_time也不再改变

同步过程

数据仓库一般分为ODS层和DW层。ODS存储OLTP中的原始数据,同步的过程主要发生在ODS层。方法如下:

只要modified_time为当天的记录,就是当天的增量数据。
所以,在同步的时候,只要对modified_time进行判断即可。

可能出现的异常:
比如,有一条记录A,创建日期是在20170304,但是在20170305 00:20有修改,然后修改时间变成了20170305。
同步任务本来是在20170305 00:00进行同步,但是由于调度延迟的问题,导致同步任务在20170305 00:30开始执行。
这个时候,就会漏掉记录A。因为在同步的时候,记录A的修改时间已经变成了20170305了。

一种解决办法是,将同步的条件修改为:
只要modified_time为当天的记录,或者created_time为当天的记录,就是当天的增量数据。

去重过程

在DW层对ODS层的表进行汇总需要去重。因为同一条记录可能经过多次修改,这些修改是发生在不同的日期中的。
去重的方法是使用分析函数row_number()over(partition by primary_key order by modified_time desc)。即,根据主键,取modified_time最新的记录。
同时在这个过程中,剔除deleted_flag为true的记录。

数据校验过程

在DW层对ODS层数据去重之后,就得到了和生产相同的数据。是否真的正确,可以使用如下的方法验证:

DW层的数据量 = 生产上所有的数据量(total) - 今天创建的数据量(created) - 今天之前删除的数据量(deleted)

check

以表table_a为例子

total = select count(*) from table_a
created = select count(*) from table_a where created_time = T+1
deleted = select count(*) from table_a where created_time <= T and modified_time < = T and deleted_flag = true
result = total - created - deleted

在这个过程中,不太好理解的是删除的数据量(deleted)的计算方法。可以这样想:
如果modified_time为今天,那么可以确定在今天之前,这条数据是存在的,因为deleted_flag为true后modified_time就不变了。

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
5月前
|
Cloud Native 关系型数据库 MySQL
云原生数据仓库使用问题之如何将ADB中的数据导出到自建的MySQL数据库
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
5月前
|
开发框架 OLAP atlas
云原生数据仓库问题之LangChain支持向量数据库如何解决
云原生数据仓库问题之LangChain支持向量数据库如何解决
72 0
|
7月前
|
存储 SQL Cloud Native
阿里云数据库 SelectDB 版全面商业化!开启现代化实时数据仓库的全新篇章
2024 年 5 月 21 日,由阿里云联合飞轮科技共同举办的「阿里云数据库 SelectDB 版商业化产品发布会」于线上召开。阿里巴巴集团副总裁、阿里云数据库产品事业部负责人李飞飞宣布,阿里云数据库 SelectDB 版在中国站及国际站全面发布,正式开启商业化的全新篇章!
阿里云数据库 SelectDB 版全面商业化!开启现代化实时数据仓库的全新篇章
|
6月前
|
存储 关系型数据库 MySQL
云原生数据仓库AnalyticDB产品使用合集之是否支持rdb数据库实时同步
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
187 4
|
7月前
|
存储 SQL 监控
阿里云数据库 SelectDB 版全面商业化!开启现代化实时数据仓库新篇章
2024 年 5 月 21 日,由阿里云联合飞轮科技共同举办的「阿里云数据库 SelectDB 版商业化产品发布会」于线上召开。阿里巴巴集团副总裁、阿里云数据库产品事业部负责人李飞飞宣布,阿里云数据库 SelectDB 版在中国站及国际站全面发布,正式开启商业化的全新篇章!
621 3
|
7月前
|
SQL 分布式计算 关系型数据库
云原生数据仓库产品使用合集之可以把ADB MySQL湖仓版数据库做成页面查询的数据库吗
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
7月前
|
存储 分布式计算 关系型数据库
云原生数据仓库产品使用合集之ADB如何确保数据库的可用性
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
7月前
|
存储 数据采集 数据挖掘
【软件设计师备考 专题 】数据仓库和分布式数据库基础知识
【软件设计师备考 专题 】数据仓库和分布式数据库基础知识
264 0
|
数据库 云计算
阿里云产品体系分为6大分类——云计算基础——数据库——数据仓库
阿里云产品体系分为6大分类——云计算基础——数据库——数据仓库自制脑图
89 1
阿里云产品体系分为6大分类——云计算基础——数据库——数据仓库
|
存储 SQL 弹性计算
《云原生一站式数据库技术与实践》——二、云原生数据仓库AnalyticDB MySQL高性能存储引擎(1)
《云原生一站式数据库技术与实践》——二、云原生数据仓库AnalyticDB MySQL高性能存储引擎(1)
595 1

热门文章

最新文章