DB2中理解系统时间和业务时间

php中文网
发布: 2016-06-07 17:54:25
原创
1505人浏览过

db2 不再仅仅面向 dba。长久以来,db2 因杰出的核心 dbms 功能而闻名于世,而如今,db2 使开发人员也能够利用它的强大特性。这方面的一个示例就是直接在模式内实现基于时间的信息。这是通过 db2 10 for linux, unix, and windows 中新增的时态表来实现的。

db2 不再仅仅面向 dba。长久以来,db2 因杰出的核心 dbms 功能而闻名于世,而如今,db2 使开发人员也能够利用它的强大特性。这方面的一个示例就是直接在模式内实现基于时间的信息。这是通过 db2 10 for linux, unix, and windows 中新增的时态表来实现的。

利用时态表,您能够轻松地跟踪和分析业务中的变化,准确对比两个时间点的数据。该功能允许您有效执行和跟踪数据更正,支持您在过去执行数据更改,也就是说,使之作为过去的某个特定时间点而“生效”,同时记录执行更改的时间。时态表提供了显示过去任意时间点数据的能力,也能显示相同事务中的哪些信息发生过更改,更改是在何时执行的,因此能够促进审计与合规性。

时态表是什么?

时态表允许您将基于时间的状态信息与 DB2 管理的数据关联,并使之与应用程序逻辑保持无关。DB2 中的时态表功能允许跟踪数据更改(版本控制),支持自定义业务数据存储和操作(以及两者的结合)。

时态表分为两种类型:系统和应用程序。DBA 可以使用双时态表,同时利用两种类型的功能。

时态表能简化过去、现在和未来任意给定时间点的数据报告,因而有助于加强业务洞察。这种功能可提高开发人员的生产力(DB2 内的处理时间管理意味着更少的编码工作,更简单的编码意味着维护成本的降低),因此可降低成本。时态表也能减少合规性工作,支持更好地跟踪数据更改。时态表提供了基于标准的技术,能在整个企业的范围内实现一致性和出色的数据质量。时态表深度集成所有特性,包括分区、压缩和视图。

系统时态表

系统表支持以操作时间(即操作系统时间)为依据的基于时间的功能。系统时态表利用历史表,存储数据的历史版本。

mallcloud商城
mallcloud商城

mallcloud商城基于SpringBoot2.x、SpringCloud和SpringCloudAlibaba并采用前后端分离vue的企业级微服务敏捷开发系统架构。并引入组件化的思想实现高内聚低耦合,项目代码简洁注释丰富上手容易,适合学习和企业中使用。真正实现了基于RBAC、jwt和oauth2的无状态统一权限认证的解决方案,面向互联网设计同时适合B端和C端用户,支持CI/CD多环境部署,并提

mallcloud商城 0
查看详情 mallcloud商城

您该如何实现系统时态表?首先,使用 SYSTEM_TIME 属性创建或更改一个基础表,包含以下三个具体生成列:

 行起始列:行数据成为当前数据的时间
 行结束列:行数据不再属于当前数据的时间
 事务起始 ID 列:影响该行的事务的起始执行时间。

接下来,创建一个完全相同的表,作为历史表。该表必须使用与基础表完全相同的布局。但您可以按照自己的需求配置历史表,例如分区、压缩或存储位置。

第三步是使用 Alter 语句将历史表与基础表相关联,并为基础表添加版本控制,即:ALTER TABLE policy_info ADD VERSIONING USE HISTORY TABLE hist_policy_info。
例如:

CREATE TABLE policy_info
(
policy_id CHAR(4) NOT NULL,
coverage INT NOT NULL,
sys_start TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW BEGIN,
sys_end TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW END,
ts_id TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS
TRANSACTION START ID,
PERIOD SYSTEM_TIME (sys_start, sys_end)
) IN policy_space;
CREATE TABLE hist_policy_info
(
policy_id CHAR(4) NOT NULL,
coverage INT NOT NULL,
sys_start TIMESTAMP(12) NOT NULL,
sys_end TIMESTAMP(12) NOT NULL,
ts_id TIMESTAMP(12) NOT NULL
) IN hist_space;
ALTER TABLE policy_info ADD VERSIONING USE HISTORY TABLE hist_policy_info;

系统表函数

发生变化时,DB2 会自动将基础表中的行迁移到历史表,并根据需要更新三个时间列。基础表和历史表的所有管理都是自动、透明的,无需任何编码。编写查询时,仅需引用基础表,DB2 将根据日期范围,自动访问历史表。

系统时态表提供了多种收益:

 对于仅访问当前数据的应用程序,DB2 仅访问基础表,因此影响将降低。
 当前数据的联机加载、重组、索引创建和其他维护操作不会因历史表而减速。
 可以分别为基础表和历史表选择物理存储选项(例如,位置、压缩、分区和集群等)。
 基础表和历史表可以具有不同的索引和约束。
 基础表数据和历史表数据的恢复可以分别执行。

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号