我在当地警察局工作,该警察部队拥有大量关于人员和车辆的信息,包括许多不同的数据来源。该组织希望设施能够集中搜索这些系统。例如,他们在网页中输入姓名和出生日期,然后搜索所有数据源(20)并在网页上显示结果。
我很快就建立了这个并测试了它。主要问题是它很慢,因为:
1)有20个不同的数据库可供搜索2)数据库是 针对选择和插入进行了优化,因为它们是OLTP数据库
我在Visual Studio Analysis服务中创建了一个简单的项目,即有一个数据源,一些维度,一些层次结构和一个多维数据集。我的问题是:
1)数据仓库是否适合这种情况?
2)数据仓库是否应将所有信息(使用ETL)加载到一个数据库中?
3)使用ASP.NET在数据仓库中使用信息是否不好,即使用SSRS和Business Objects等报告工具。
4)每个数据库你有一个角钱吗?
答案 0 :(得分:2)
数据仓库专门用于使从OLTP数据中灵活地检索信息更加高效和易于管理。
OLTP数据库的结构可以有效地维护数据。数据检索通常有不同的要求。您的方案可能是星型架构或雪花架构的理想选择。
您是否拥有一颗星或雪花取决于您的OLTP数据中存在多少事实。如果您跟踪(或报告)的唯一事实是警察和公众之间的联系人,那么您可能只需要一颗星或雪花。如果您有更多的事实,请添加更多明星(等)
每颗星或雪花通常都有多个尺寸。没关系。拥有多少兴趣,但每颗星/雪花只有一个事实。
您可以使用ETL过程完全重新创建这些数据仓库对象,或者每次完全重新创建这些数据仓库对象,或者在每晚(或其他时间范围)内完全重新创建。这一切都取决于您的要求。要记住的重要事项是:
如果报告会妨碍交易处理,请将报告数据和OLTP数据分开。
准备好重新创建数据仓库或定期重新同步它们,因为每次保留一些数据副本时,它们迟早会失去同步,业务中的某个人会对IT中的某个人大喊大叫它
有很多很好的工具可以在数据仓库上进行 ad hoc 报告。这些对于探索数据以查找有趣的内容非常有用。但是,这些工具可能很复杂,甚至有时效率低下。因此,通常使用存储过程或类似的程序方法将它们构建为标准查询,从而将非常常用的报告“制度化”。可以使用ASP.NET或您选择的Web语言来绕过 ad hoc 报告工具来呈现这些类型的报告。
答案 1 :(得分:1)
1)数据仓库是否适合这种情况?
是的,但您可能希望使用具有良好全文搜索支持的数据库品牌,以便从用户的搜索中获得良好的结果。
2)数据仓库是否应加载所有信息(使用ETL) 进入一个数据库?
可能是的。您应区分“数据库”和“数据库服务器”,因为某些数据库服务器支持多个数据库;)您的优先级是便于用户分析。如果他们必须一直切换数据库,他们会觉得很烦人。
3)使用ASP.NET在数据中使用信息是不是很糟糕 仓库,即你应该使用SSRS和Business等报告工具 对象等。
不,这不是一个坏习惯,但你可能会发现像SSRS这样的工具更容易用于报告等。
4)每个数据库你有一个角钱吗?
不,每个事实表通常有多个维度表。您几乎肯定希望每个事实表至少有一个日期维度。
请参阅https://dba.stackexchange.com/questions/45655/what-are-measures-and-dimensions-in-cubes/45669#45669