问题标签 [data-warehouse]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 如何提高非规范化表上非标量聚合的性能
假设我们有一个包含大约 80 列的非规范化表,并且以每月约 1000 万行(约 5GB)的速度增长。我们目前有 3 1/2 年的数据(~400M 行,~200GB)。
我们创建了一个聚集索引,以最适合从用作我们主键的以下列的表中检索数据......
...因为当我们查询表时,我们总是拥有整个主键。
所以这些查询总是会导致聚集索引查找,因此非常快,并且碎片保持在最低限度。但是,我们确实有一种情况,我们希望获取每个区域的最新 FileDate,通常用于报告,即
我能想到的“最佳”解决方案是在 Region 上创建一个非聚集索引。尽管这意味着在加载期间在表上进行了额外的插入,但命中并不是最小的(我们每天加载 4 次,因此每次加载的额外索引插入少于 100,000 个)。由于该表也由 FileDate 分区,因此我们的查询结果很快就会返回(大约 200 毫秒),并且该结果集会被缓存到下一次加载。
但是,我猜想拥有更多数据仓库经验的人可能有一个更优化的解决方案,因为出于某种原因,这并不“感觉正确”。
sql - SQL Server 2008 中用户定义的排名/分析函数
我正在计划将数据仓库迁移到 SQL Server 2008,并尝试想办法在 SQL Server 2008 中从 Oracle 复制 LAG、LEAD、FIRST_VALUE 和 LAST_VALUE 分析函数。它们不包含在 SQL Server 2008 中,尽管基本用于窗口分析函数的机制是(例如 ROW_NUMBER、RANK 和 DENSE_RANK 都存在)。
对于这些函数,可以通过创建一个子查询来实现相同的功能,该子查询使用 ROW_NUMBER 为每一行分配一个数字,然后对该查询进行自连接以查找具有附近行号的相关行(对于 LAG 和 LEAD),或者行号 1(对于 FIRST_VALUE)。
我希望进行自联接会降低操作的效率:但我还没有 SQL Server 来测试它。因此,在没有实际评估性能的情况下,我想知道是否有更好的解决方法可以避免自联接。
查看用户定义的聚合函数的文档,可以想象相同的代码结构可以用于提供用户定义的分析函数。
所以我的问题是:你可以在用户定义的聚合函数之后添加一个 OVER() 子句,让它作为分析函数调用吗?
如果是这样,是否每行调用一次 Terminate() 方法?是否需要任何特别的东西来确保按照 OVER() 子句中指定的顺序将行发送到您的 UDF?
database-design - 需要数据库设计建议
我需要为药品的日常销售设计一张表格。
有数百种类型的产品可用{名称,代码}。
成千上万的销售人员被雇用来销售这些产品{名称,代码}。
他们从不同的仓库{名称,代码}收集产品。
他们在不同的区域 -> 区域 -> 市场 -> 奥特莱斯等工作。{都有名称和代码}
每个产品都有各种类型的价格{生产价格、贸易价格、商业价格、折扣价格等}。并且,销售人员可以从这些组合中自由选择来估算销售价格。
问题是,日常销售需要大量的数据输入。几年内可能会有千兆字节的数据(如果不是太字节)。如果我需要显示每日、每周、每月、每季度和每年的销售报告,我将需要各种类型的 sql 查询。
这是我最初的设计:
现在,除了索引之外,我怎样才能规范化我的DailySales
表,使其具有细粒度的设计,而我在未来几年都不需要更改?
请在上述信息的基础上向我展示仅DailySales
数据输入表(将查询所有类型的报告)的示例设计。
我不需要详细的设计建议。我只需要关于DailySales
桌子的建议。有没有办法打破这个特定的表来实现粒度?
database-design - 数据仓库事实表的设计
您将如何在数据仓库中对此进行建模:
有些自治市是地理区域,存在于地理层次结构中,例如省(即州,例如明尼苏达州),地区(例如中西部)。
对这些城市进行绩效评估,通过计算绩效指标,例如"完成的住房积压百分比"、"预算支出百分比"、"分配给基础设施的预算百分比"、"债务覆盖率"等。
这些性能指标大约有 100 个。
这些指标分为“绩效组”,这些指标本身又分为“关键绩效领域”
对绩效指标进行计算(计算因城市类型、规模、地区等某些因素而异)产生“绩效分数”。
然后将权重应用于分数以创建“最终加权分数”。(即,当汇总到“关键绩效领域”时,某些指标的权重高于其他指标)
会有一个时间维度(每年进行一次评估),但目前只有一个数据集。
注意:用户需要能够轻松查询任意指标组合的数据。即有人可能希望看到:(i) (ii) “债务人覆盖率”与 (iii) “预算支出百分比”与 (iv) “债务天数”在 (v) 省级的绩效水平。
我通过将“IndicatorType”作为维度进行了尝试,然后在该表中使用了 [指标/绩效组/绩效区域] 层次结构 - 但后来我无法弄清楚如何在同一行轻松获取多个指标,如它需要一个事实表别名(?)。所以我想把所有 100 个项目作为列放在一个(非常宽的!)事实表中 - 但是我会失去指标上的 [组/区域] 层次结构......?
有任何想法吗?
谢谢
oracle - 是否可以在 Oracle 中部分刷新物化视图?
我有一个基于其他物化视图、常规视图以及一些表的非常复杂的 Oracle 视图(我不能“快速刷新”它)。大多数情况下,此视图中的现有记录基于日期并且是“稳定的”,新记录集具有新日期。
有时,我会收到回溯日期。如果我在维护一张桌子,我知道这些是什么以及如何处理它们,但我想保持这个“视图”。完全刷新大约需要 30 分钟,但对于任何给定日期,只需要 25 秒。
我可以指定只更新物化视图的一部分(即受影响的日期)吗?
我是否必须废弃视图并使用表格和过程来填充或刷新该表格中的给定日期?
sql-server - 什么是多维 OLAP CUBE 并给出超过 3 维的示例多维数据集
由于我是 SSAS 新手,一直在阅读有关多维 OLAP Cube 的文章并努力理解 Cube 概念,有人说虽然“立方体”一词暗示三个维度,但一个立方体最多可以有 64 个维度。您能否解释一下这在立方体上是如何实现的(除了 3-Dim 示例 x、y、z 平面)?请不要只提供学习链接,还希望得到一些解释。
database-design - 生产模式
有人可以帮助我理解生产模式和数据仓库模式之间的区别。
sql - 跨数据库联合
我的仓库数据集市数据分布在同一台服务器上的 3 个数据库中。这是一个概念验证项目,其中包含三个已加载到各个数据库中的提取。
在拉入立方体时,我基本上是在这样做:
我真的应该将数据整合到一张表中吗?这会让我的处理速度更快吗?
我对磁盘空间没有任何问题 - 我想实施最佳解决方案。
无论哪种情况,您能帮我理解为什么您建议的方法是最佳的吗?
c# - WCF 上的站点到站点数据同步
我正在开发一个带有网站和企业应用程序管理的分布式解决方案。
这是架构:
网站 :
数据库 (SQL Server)
网站:ASP.NET MVC
数据同步服务 (WCF)
-
企业管理应用:
数据库 (SQL Server)
WinForm 应用程序
数据同步服务 (WCF)
我想执行站点到站点的数据同步。
注意:企业管理应用程序数据库是仓库数据存储。
通常我希望公司方面要求网站进行数据同步。
所以这是场景:
- (网站端)一些数据已更改 => 本地数据存储
- (企业方面)向网站询问更改 => 将数据从网站数据存储同步到仓库数据存储
- (企业方面)一些数据已更改 => 仓库存储 => 同步到网站本地数据存储
我怎样才能做到这一点,最好的方法是什么?
sql-server - 拆分数据库的技巧
我已经阅读了几本关于 SQL Server 2005 的书籍,但没有找到我正在寻找的正确答案。
问题是这样的:-我有一个数据库,一次有 5-20 个用户使用它来预订客户订单。他们在一天内通过电话收到许多订单,因此下订单和查找产品\旧订单必须很快。
随着时间的推移,已经下了许多订单。有许多表包含此订单详细信息,并且有许多报告使用此数据。问题是报告很慢。索引有所帮助,但没有我预期的那么大。
在阅读了一番之后,我想尝试将数据库分为两部分 - 一个用于在线交易,一个用于报告。
如果您通过推荐一本书或网站来帮助我,我将非常感谢您,它将教我如何设计用于快速报告的数据库以及如何分离两个数据库 - 一个用于在线交易,另一个用于快速报告(这将是用于快速报告的数据仓库设计吗?)
我的主要目标是制作非常快速的报告(一些报告现在需要 5 分钟才能运行,并且随着数据的增加它会变得更慢)。任何帮助我指出正确方向的帮助都将不胜感激。