【问题标题】:How to handle multiple schemas containing the same data如何处理包含相同数据的多个模式
【发布时间】:2011-08-15 09:09:59
【问题描述】:

我正在开发一个预测工作中足球比赛的系统。我有几个预先存在的数据库,每个数据库都包含大致相同的数据,尽管一些供应商提供的数据比其他供应商多。我的应用程序使用了一组核心字段,并且所有供应商都提供了这些字段:

homeTeamId、awayTeamId、fullTimeHomeGoals、fullTimeAwayGoals、homeShotsOnTarget、awayShotsOnTarget 等...

因为这些数据库来自不同的来源,所以字段名称会有所不同。此外,其中一些数据是主观的(对目标的射击的定义各不相同)。这意味着我需要知道匹配来自哪个供应商。也有重叠,因为几个供应商将拥有特定匹配的数据。

目前我们一次使用一个数据源,但我们将根据该供应商所涵盖的竞争一次使用两个或更多供应商(通过基于竞争进行选择,我们消除了重复匹配的问题)。

我的解决方案是使用 XML 来存储 fieldName 的映射。例如

<Schemas>
    <Schema>
        <SchemaName>VendorA</SchemaName>
        <TableName>VendorA_MatchResults</TableName>
        <FullTimeHomeGoals>homeFullTimeScore</FullTimeHomeGoals>
        Etc...
    </Schema>
</Schemas>

然后,每当我需要一个 sql 查询字段时,查看用户在作业配置 XML 中指定的供应商,并查找与该数据供应商相关的字段。当我们开始使用来自两个供应商的结果时,我计划使用一个视图并将其视为 XML 中的一个新供应商。

这一定是一个相当普遍的问题,但我在网上找不到任何讨论如何解决它的内容。我的直觉说,数据库应该能够在内部处理这个问题,也许有一个视图?

如果您有任何建议或想法,我将不胜感激。

作为背景,我正在使用 MySql 和 Java 来开发这个应用程序。

【问题讨论】:

  • 听起来像是ETL 的问题。

标签: java mysql database


【解决方案1】:

我觉得你做的很好。

您应该创建一个类来存储每个架构的这些配置。将这些配置存储在 Map 中。确保这些条目及其配置来自配置文件,就像您所做的那样。

我会在这里推荐Spring,它让您的生活更轻松。每次你想添加一个新的供应商时,你只需要编辑这个配置文件,然后重启你的应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 2015-08-05
    相关资源
    最近更新 更多