我正在考虑实现对象版本控制,需要同时拥有实时和草稿对象,并且可以使用来自某人经验的见解,因为我开始怀疑它是否有可能没有可能可怕的黑客攻击.
为了示例,我将其分解为带有标签的帖子,但我的用例更为一般(涉及缓慢变化的维度 - http://en.wikipedia.org/wiki/Slowly_changing_dimension).
假设您有一个posts表,一个tags表和一个post2tag表:
posts (
id
)
tags (
id
)
post2tag (
post_id fkey posts(id),
tag_id fkey tags(id)
)
Run Code Online (Sandbox Code Playgroud)
我需要一些东西:
我一直在研究各种选择.到目前为止,我提出的最好的(没有点#4 /#5)看起来有点像SCD type6-hybrid设置,但是没有当前布尔值,而是当前行的物化视图.出于所有意图和目的,它看起来像这样:
posts (
id pkey,
public,
created_at,
updated_at,
updated_by
)
post_revs (
id,
rev pkey,
public,
created_at,
created_by,
deleted_at
)
tags (
id pkey,
public,
created_at,
updated_at,
updated_by
)
tag_revs (
id,
public,
rev pkey,
created_at,
created_by,
deleted_at
)
post2tag (
post_id fkey posts(id),
tag_id fkey tags(id), …Run Code Online (Sandbox Code Playgroud) 我有很多mysql数据需要从中生成报告.它主要是历史数据,因此它不会发生太大变化,但它的重量很容易达到20-30千兆字节,预计会增长.我目前有一些PHP脚本集合,可以执行一些复杂的查询并输出csv和excel文件.我还使用带有书签查询的phpMyAdmin.我手动编辑它们来更改参数.数据量正在增长,需要访问数据的人数也在增长,因此我正在花时间改善这种情况.
前几天我开始阅读有关数据仓库的内容,似乎这个区域与我需要做的事情有关.我读过一些 好 文章,甚至还在等一本书.我想我已经掌握了这些系统的功能和可能性.
为我的数据创建一个报告系统一直在todo列表中,但直到最近我才认为这将是一个非常小众的计划冒险.由于我现在知道数据仓库是常见的事情,我认为必须有某种报告/仓库框架可以轻松开发.我很乐意跳过编写接口和脚本来安排和发送电子邮件报告等,并坚持编写查询和建立关系.
我大部分都是一个灯泡家伙,但我不是在转换语言或平台.我只需要一个更强大的解决方案,因为我的一次性脚本不能很好地扩展.
那么哪里是开始的好地方?
我目前正在尝试创建一个数据库,其中很大一部分数据是暂时的.在阅读了许多这样做的技术(大多数涉及6nf标准化)后,我遇到了锚点建模.
我正在开发的模式非常类似于Anchor Modeling模型,特别是因为用例(Temporal Data + Known Unknowns)是如此相似,我很想完全接受它.
我遇到的两个最大的问题是,我找不到任何详细说明这种方法的负面影响的内容,而且我找不到任何对生产中用于战争故事和陷阱的组织的引用,这些都是我需要注意的.
我想知道这里是否有人熟悉,可以简要地阐述一些否定因素(因为积极因素在研究论文及其网站上得到了很好的宣传),以及在生产环境中使用它的任何经验.
sql database-design temporal-database database-normalization anchor-modeling
我能够将连接消除工作用于简单的情况,例如一对一的关系,但不能用于稍微复杂的场景.最后我想尝试锚建模,但首先我需要找到解决这个问题的方法.我正在使用Oracle 12c企业版第12.1.0.2.0版.
我的测试用例的DDL:
drop view product_5nf;
drop table product_color cascade constraints;
drop table product_price cascade constraints;
drop table product cascade constraints;
create table product(
product_id number not null
,constraint product_pk primary key(product_id)
);
create table product_color(
product_id number not null references product
,color varchar2(10) not null
,constraint product_color_pk primary key(product_id)
);
create table product_price(
product_id number not null references product
,from_date date not null
,price number not null
,constraint product_price_pk primary key(product_id, from_date)
);
Run Code Online (Sandbox Code Playgroud)
一些示例数据:
insert into product values(1);
insert …Run Code Online (Sandbox Code Playgroud)