数据仓库模型方法
Data warehousing Model approach
我们正在构建健康数据仓库。并且一直在讨论数据仓库的基本结构。我需要您对以下结构的优缺点提出建议。 DWH 将用于报告和研究目的。它将是一个近乎实时的数据仓库,延迟时间约为 5-10 分钟。
源数据库有一个 Encounter/visit table。一切都保存在这个 table 中。它是链接一切的中央table。因此,如果我需要在生产数据库中获取患者的旅程,我只需转到 encounter/visit table 并查看患者因 treatment/has 入院或返回的次数来自急诊,已从急诊等
模型 1 ->
Encounter/visit table 具有公共字段(如 encounter_id、arrival_date、care_type 等)
然后可以根据遇到特定字段的遇到类型构建进一步的 tables:
Encounter_Emergency(紧急特定领域,如紧急诊断、分诊类别等)
Encounter_Inpatient
Encounter_outpatient
模型 2 ->
将 tables 作为基础 tables,然后在顶部创建一个视图,然后将所有遭遇类型包含在一起。
Encounter_Emergency(紧急特定领域,如急诊诊断、分诊类别等)
Encounter_Inpatient
Encounter_outpatient
模型 3 ->
Encounter/visit table 将所有字段作为源数据库
并根据遇到特定字段的遇到类型创建视图:
查看_Encounter_Emergency
查看_Encounter_Inpatient
查看_Encounter_outpatient
这些视图可以与 emergency_diagnosis table 进一步结合以获得诊断或 emergency_alerts table 以访问警报等。
首要考虑的是遭遇战类型的添加、删除或更改的频率。
模型 B 需要在进行任何此类更改之前进行大量返工,以确保继续捕获数据。其他两个模型中的任何一个都将继续捕获重新分类的数据,但需要返工才能报告。
A和C之间,问题就变成了流量。视图相对容易旋转 up/down,但它们会在那个大的基础上增加负载 table。如果 DW 没有大量负载,那可能是 acceptable。但是,如果会有广泛的报告(专业提示 总是 比企业告诉你的报告更广泛),它可能更有利将数据分解成独立的 tables。
当然,维护所有这些 table 存在 ETL 开销。
为了交付速度,也许构建模型 C,但架构模型 A 以防消耗需要更强大的模型。作为记录,您可以构建没有任何类型的 vw_
前缀的视图,或者名称中没有任何其他标识符,让用户知道它们是视图。然后,稍后,您可以将它们替换为同名的 table,针对旧视图的遗留查询将继续有效。我在相反的方向做了同样的事情,潜入视图以替换多余的 tables.
我们正在构建健康数据仓库。并且一直在讨论数据仓库的基本结构。我需要您对以下结构的优缺点提出建议。 DWH 将用于报告和研究目的。它将是一个近乎实时的数据仓库,延迟时间约为 5-10 分钟。
源数据库有一个 Encounter/visit table。一切都保存在这个 table 中。它是链接一切的中央table。因此,如果我需要在生产数据库中获取患者的旅程,我只需转到 encounter/visit table 并查看患者因 treatment/has 入院或返回的次数来自急诊,已从急诊等
模型 1 ->
Encounter/visit table 具有公共字段(如 encounter_id、arrival_date、care_type 等)
然后可以根据遇到特定字段的遇到类型构建进一步的 tables: Encounter_Emergency(紧急特定领域,如紧急诊断、分诊类别等) Encounter_Inpatient Encounter_outpatient
模型 2 -> 将 tables 作为基础 tables,然后在顶部创建一个视图,然后将所有遭遇类型包含在一起。
Encounter_Emergency(紧急特定领域,如急诊诊断、分诊类别等) Encounter_Inpatient Encounter_outpatient
模型 3 ->
Encounter/visit table 将所有字段作为源数据库 并根据遇到特定字段的遇到类型创建视图:
查看_Encounter_Emergency 查看_Encounter_Inpatient 查看_Encounter_outpatient
这些视图可以与 emergency_diagnosis table 进一步结合以获得诊断或 emergency_alerts table 以访问警报等。
首要考虑的是遭遇战类型的添加、删除或更改的频率。
模型 B 需要在进行任何此类更改之前进行大量返工,以确保继续捕获数据。其他两个模型中的任何一个都将继续捕获重新分类的数据,但需要返工才能报告。
A和C之间,问题就变成了流量。视图相对容易旋转 up/down,但它们会在那个大的基础上增加负载 table。如果 DW 没有大量负载,那可能是 acceptable。但是,如果会有广泛的报告(专业提示 总是 比企业告诉你的报告更广泛),它可能更有利将数据分解成独立的 tables。
当然,维护所有这些 table 存在 ETL 开销。
为了交付速度,也许构建模型 C,但架构模型 A 以防消耗需要更强大的模型。作为记录,您可以构建没有任何类型的 vw_
前缀的视图,或者名称中没有任何其他标识符,让用户知道它们是视图。然后,稍后,您可以将它们替换为同名的 table,针对旧视图的遗留查询将继续有效。我在相反的方向做了同样的事情,潜入视图以替换多余的 tables.