【问题标题】:Database Modeling:Find how the data looks like in the give date and time数据库建模:查找数据在给定日期和时间中的样子
【发布时间】:2011-09-21 11:32:42
【问题描述】:

如果我有 table1、table2、table3..table50 存储有关产品的不同信息

什么是跟踪增量更改的有效方法,如果我想返回并提取特定产品在给定日期的外观,它将非常快速和准确。 我希望以一种可以快速检索并减少过多冗余的方式跟踪更改。

【问题讨论】:

    标签: oracle database-design data-modeling ado.net-entity-data-model


    【解决方案1】:

    1.如果您使用的是 Oracle 11g,Oracle 闪回技术是可以让您执行此操作的功能。 http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28424/adfns_flashback.htm#BJFGJHCJ

    2.在旧版本中,您可以使用 DBMS_WM 包并为您需要的表启用版本控制。但是,您可以为其启用版本控制的表类型存在某些限制。 http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96628/long_ref.htm#80312

    3.到目前为止我看到的其他实现都有自己版本的DBMS_WM的一些程序。基本上,有一个类似..的结构。

    SQL> desc scott_emp;
     Name                                      Null?    Type
     ----------------------------------------- -------- -------------
     EMPNO                                     NOT NULL NUMBER(4)
     ENAME                                     NOT NULL VARCHAR2(10)
     JOB                                       NOT NULL VARCHAR2(9)
     MGR                                                NUMBER(4)
     HIREDATE                                  NOT NULL DATE
     SAL                                       NOT NULL NUMBER(7,2)
     COMM                                               NUMBER(7,2)
     DEPTNO                                    NOT NULL NUMBER(2)
     EFF_DATE                                           DATE
     END_DATE                                           DATE
    

    最后两列用于查看记录在数据库中“逻辑上处于活动状态”的时间段。实现是使用触发器完成的,其中

    • 每个插入/更新都转换为 "使当前行过期(更新)+ 插入新行”
    • 每个删除都是 转换为“过期当前 行”

    如果您只想跟踪某些列的更改(例如,假设您只关心部门和薪水的变化),最后一种方法可能会解决您的目的。

    不要选择这样的型号。 (Do not 将每列更改存储为单独的行) http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:1769392200346820632

    【讨论】:

    • 您使用的是哪个版本的 oracle?当您说高性能时,您是否有一组正在处理的数据(大小)?有多少查询会针对历史数据,又有多少查询会针对当前数据?为什么以上选项都不适合您的情况?
    • 我使用 10g,我不确定选项 2,但我之前也考虑过选项 3,但看起来如果更改发生得很快,数据库将增长得非常快
    • 你是对的。如果您需要跟踪所有列的更改,表的大小将增长得相当快。此外,在这么多表上运行的触发器也会影响性能。
    • 闪回不取决于内存和日志文件,你能走多远?
    • 是的。由于过去版本的记录是使用 UNDO 数据恢复的,因此您可以返回多远取决于..该点是否可以撤消。在 oracle 11g 中,“闪回数据归档 (Oracle Total Recall) 提供了在表的生命周期内跟踪和存储对表的所有事务更改的能力”。
    猜你喜欢
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 2021-06-14
    相关资源
    最近更新 更多