这主要是数据仓库哲学问题。
我的项目涉及Oracle表单应用程序和Teradata数据仓库,用于报告和临时目的。除了我们的应用程序用户创建的主要数据外,我们还需要来自其他各种来源的数据。目前,此第三方数据通过FTPd平面文件直接发送到我们的数据仓库。要访问数据,我们的用户必须使用一系列自定义BusinessObjects报告。
我的问题是,将这些数据发送到我们的源Oracle系统更有意义吗?数据仓库是否适合用户访问原始数据?
简而言之,操作数据库是否仅包含项目创建的数据,或者数据仓库是否仅用于报告和分析更重要?
答案 0 :(得分:1)
我们根据情况做。
如果普通用户和日常应用程序需要查看第三方数据,我们会将数据放在可供其使用的地方。在我们的示例中,此数据通常是存储在数据库中自定义表中的数据,这些表是可选择的而不是可编辑的,以防止用户更改第三方数据。如果使用常规表,则可能需要触发器以防止意外更改此数据。此外,它通常以一种可能不容易适合您的数据结构的形式,如果他们只需要查看是否为了报告目的,您可能不想花时间清理它以便您的常规应用程序可以接受它。在这种情况下,自定义表可能是必要的。
例如,对于同一事物,第三方可能有一个比你的字段大的字段。您可以通过截断其数据以适合您的结构来删除含义。此外,您的结构可能有一组第三方数据没有的约束,您是否希望通过删除这些约束来冒险自己的数据完整性?可能不是。如果我的应用程序认为应该要求字段或者是有效日期,那么我不想更改为容纳存储第三方报告数据。如果数据可以并且应该可供用户使用以进行更改(我们会做很多这样的事情),那么请继续将其清理为数据库标准并插入。
执行常规数据输入的用户通常不需要查看第三方数据,但只能在从数据仓库中提取的管理报告中查看。在这种情况下,除了数据仓库之外,我不会尝试将数据放在任何地方。为什么通过提供意外更改来使生活复杂化?