Database design 数据仓库中双时态数据集的建模

Database design 数据仓库中双时态数据集的建模,database-design,data-warehouse,entity-attribute-value,snowflake-cloud-data-platform,Database Design,Data Warehouse,Entity Attribute Value,Snowflake Cloud Data Platform,我有一个双时EAV型模型 有多个属性表(每个值数据类型(int\u属性、float\u属性等)对应一个),如下所示: |id|field_id|value|as_of_date_start|as_of_date_end|system_date_start|system_date_end| 以及属性的参考表: |field_id|name|data_type|target_attribute_table| 通过查询所有属性值表的并集,可以在任意时间点构造实体并获取其所有属性 我想将此数据移动到

我有一个双时EAV型模型

有多个属性表(每个值数据类型(int\u属性、float\u属性等)对应一个),如下所示:

|id|field_id|value|as_of_date_start|as_of_date_end|system_date_start|system_date_end|
以及属性的参考表:

|field_id|name|data_type|target_attribute_table|
通过查询所有属性值表的并集,可以在任意时间点构造实体并获取其所有属性

我想将此数据移动到数据仓库(雪花)。我找不到很多关于将双时态数据移动到仓库以及如何对其建模的信息。我不明白在这种情况下,我在哪里需要事实和维度相关的建模。另外,在系统中加载数据时,将此表作为轴以获取属性作为列是否有意义

此数据的主要用例是获取数据的当前快照,并获取某些实体的整个历史记录


我对仓库中的数据建模非常陌生,任何能够理解这一点的指针/书籍/资源都会受到赞赏。

雪花能够高效地查询半结构化数据。以这种格式转储数据并将其导入Snowflake。保留键和日期的特定列。其他一切——为什么需要EAV——都在JSON中。

@bbaird过去20年的数据有3000种不同的属性,可以在任何实体上,每个月都添加新属性。我很乐意回答这个问题,因为我对双时态数据有很多经验,但是EAV不是一个可行的解决方案,特别是对于如此大的数据量。使用该设计模式获得正确的时间元素是100%肯定会失败的。@b对于数据仓库模型来说,这不是一个可行的解决方案吗?到目前为止,对于我们的OLTP用例,它的可扩展性相当好,因为该系统已经投入生产20年了,有超过100万个实体和3000个属性(尽管这是根据实体类型选择的,我们每个实体有近200个属性)。单次事务查询一小部分记录是一回事。如果你想查询更多的数据,你需要在设计上更加深思熟虑。