问题标签 [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.

0 投票
2 回答
541 浏览

sql-server - 大规模 ETL 字符串查找性能问题

我有一个 ETL 过程性能问题。我有一张表,里面有 4+ 十亿行。结构是:

  • idbigint 身份(1,1)
  • raw_urlvarchar(2000) 不为空
  • md5hashchar(32) 不为空
  • job_control_numberint 不为空

id 上的聚集唯一索引和 md5hash 上的非聚集唯一索引

SQL Server 2008 Enterprise 页面级压缩已打开

我们必须将来自网络服务器日志的原始 URL 存储为维度。由于原始字符串 > 900 个字符,我们不能在该列上放置唯一索引。我们使用 md5 哈希函数来创建唯一的 32 个字符的字符串以用于索引目的。我们不能在表中允许重复的 raw_url 字符串。

问题是性能不佳。md5hash 本质上当然是随机的,因此索引碎片驱动到 50%,这导致 IO 效率低下。

寻找有关如何构造它以允许更好的插入和查找性能以及更少的索引碎片的建议。

0 投票
1 回答
313 浏览

data-warehouse - 非关系型数据库建模工具?

大家好,请推荐一些您在 DW、DataMart、BI 和非关系建模上成功使用过的工具。自动创建雪花模式、维度和事实表的示例。这些工具让您熟悉图表和代理键,并且可以选择导出或连接到 SQL Server 2008。

谢谢

0 投票
2 回答
349 浏览

data-warehouse - 多个数据库连接与集中/冗余数据库

我有一个项目来创建一个仪表板,它将连接到现有系统以及基于组合来自现有系统的数据创建新功能。例如,仪表板将能够生成“订单”,其中包含从“成员”(MS Access DB)、“员工”(MySQL DB)和“产品”(平面文件)合并的数据,并且还会有特定的新属性到“命令”。

起初,我认为让我的应用程序分别连接到每个系统并在不同数据库之间执行跨供应商连接是最有效的。但后来我认为创建一个集中式/冗余数据库(使用脚本在系统之间推送和拉取数据构建)可能也很有用,因为它可以让一些半技术人员使用像 OOBase 这样的产品,这些产品只能建立一个单一的连接。

创建像我正在谈论的那样的集中式/冗余数据库还有其他优势吗?还是多个直接连接是最好的方法?

提前感谢您的任何提示。

0 投票
2 回答
2448 浏览

postgresql - 数据仓库 Postgres

我们正在考虑使用 SSIS 来维护 PostgreSql 数据仓库。我以前在 SQL Server 之间使用过它,没有任何问题,但是很难让它与 Postgres 很好地配合使用。我正在使用 OLEDB PGNP 数据提供程序 ( http://www.postgresql.org/about/news.1004 ) 的评估版。

我想从事实表上的 UPSERT 之类的简单操作开始(每天更新/插入 10k-15k 行),但事实证明这非常困难(更不用说我将来想使用代理键)。

我尝试过(http://blogs.msdn.com/b/mattm/archive/2008/11/22/lookup-pattern-upsert.aspx)和(http://consultingblogs.emc.com/jamiethomson/archive /2006/09/12/SSIS_3A00_-Checking-if-a-row-exists-and-if-it-does_2C00_-has-it-changed.aspx)实际上是相同的(除了我不太了解工会最后,当我尝试 upsert 时)但是在使用 OLEDb 命令进行更新时,我遇到了同样的参数问题——我试图使用(http://technet.microsoft.com/en-us )来克服这个问题/library/ms141773.aspx)但这似乎不起作用,我收到一个验证错误 -

complent.... 的外部列与数据源列不同步... 需要从外部列中删除外部列“Param_2”。(前两个参数也会出现此错误——使用 sql 连接从未遇到过此错误,因为它支持命名参数)

有没有人遇到过这个?

和:

这个简单的任务在 SSIS 中显然很难完成这一事实表明我使用了错误的工具来完成这项工作 - 有没有更好(并且仍然灵活)的方法来做到这一点?或者另一个 ETL 包是否更适合在两个 Postgres 数据库之间使用?- 其他选项包括 ( http://en.wikipedia.org/wiki/Extract,_transform,_load#Open-source_ETL_frameworks ) 上列出的任何选项。我可以去写一大堆 SQL 来为我做这件事,但我想要一个简洁且易于维护的解决方案。

0 投票
3 回答
270 浏览

c# - 帮助 50+GB 数据库的数据库架构

我的任务是在数据库中存储大量 gps 数据和一些额外信息,并访问它以进行报告和其他一些不常见的任务。

当我从 gps 设备收到消息时,它可以有可变数量的字段。例如

消息 1:DeviceId Lat Lon Speed Course DIO1 ADC1
消息 2:DeviceId Lat Course DIO2 IsAlarmOn
消息 3:DeviceId Lat Lon Height Course DIO2 IsAlarmOn 等 最多 20-30 个字段

没有办法统一字段的数量——不同的设备供应商、不同的协议等。另一个令人头疼的问题是数据库的大小和支持尽可能多的数据库供应商的必要性(使用 NHibernate)。

所以我想到了以这种方式存储消息:
Table1 - Tracks
PK - TrackId
TrackStartTime
TrackEndTime
FirstMessageIndex(stores MessageId)
LastMessageIndex(stores MessageId)
DeviceId(not an FK)

表2 - Messages
PK - MessageId
TimeStamp
FirstDataIndex(stores DataId)
LastDataIndex(stores DataId)

表 3 - MessageData
PK - DataId
double Data
short DataType

所有索引都用 hilo 赋值。调整了我的查询,以便 Nhibernate 可以快速处理 3000+k 条消息(也使用了 baching)。我对性能 atm 感到满意。但我不知道它在 50+gb 或 100+gb 大小下如何工作。

将非常感谢有关我的问题和整体存储设计的任何提示和提示=)
谢谢,Alexey
PS。对不起我的英语=)

0 投票
7 回答
1111 浏览

data-warehouse - 免费的数据仓库系统——特别是用于数据存储

我正在为我们的网站(一个规模不错的网站,每天获得数百万次浏览量)构建一些报告内容,并且想知道那里是否有任何好的免费/开源数据仓库系统。

具体来说,我只寻找存储数据的东西——我计划为它构建一个自定义前端/UI,以便它显示我们关心的信息。但是,我不想为此构建一个定制的数据库,虽然我很确定 SQL 数据库不会在这里工作,但我不确定到底要使用什么。任何指向有用文章的指针也将不胜感激。

编辑:我应该提一下——我简要介绍过的一个数据库是 MongoDB。似乎它可能有效,但他们的“用例”特别提到数据仓库为“不太适合”:http ://www.mongodb.org/display/DOCS/Use+Cases 。此外,它似乎并没有专门针对数据仓库。

0 投票
3 回答
6853 浏览

oracle - Oracle 数据仓库设计——事实表充当维度?

谢谢:这里的两个答案都非常有帮助,但我只能选择一个。我非常感谢您的建议!

我们的数据仓库将比传统的分析报告更多地用于工作流报告。我们的用户更关心“当前情况”而不是历史。(尽管历史也很重要。)我们是一个没有成本或相关计算的政府实体。大多只是给定位置内和具有相关历史的人数。

我们正在使用 Oracle,我发现尽可能使用星型连接具有明显的优势,并且希望将所有内容重新架构为与我们的业务使用合理的星型模式非常相似。这个 DW 中的速度至关重要,许多测试已经向我证明了星型模式方法。

我们的“person”表是关键——它包含超过 400 万条记录,将是查询中最常用的来源。 它可以在具有多个维度(如年龄、性别、隶属关系、位置等)的恒星中心看到。这是一个很长的表,特别是当我将它加入地址和联系信息时。

但是,当我们开始查看历史时,它更像是一个维度表。例如,有两个不同的历史记录表,其人员键指向人员表。一个拥有超过 2000 万条记录,另一个拥有近 5000 万条记录,并且每天都在增长。

这个表是事实表还是维度表?一个可以同时工作吗?如果是这样,那会是一个很大的性能问题吗?查询更多维度而不是事实是否很常见?如果使用 person 表作为维度的 DIFFERENT 事实表实际上只有 60,000 条记录(小得多),会发生什么情况。

我认为我的问题是我们的数据及其使用不符合星型模式的常用示例。

澄清: 下面添加了一些好的想法,但也许我遗漏了太多,无法很好地解释。这里有更多信息:

我们处理选民数据库。除了按不同群体统计选民人数外,我们没有任何措施:按政党、按年龄、按地点统计选民人数;按选票类型和选举、选票状态和选举等统计选民人数。我们确实有“投票历史”日志以及活动审计日志(地址变更、政党等)。我们有关于哪些选民是选举工作人员的信息以及所有相关信息。我想我稍后会谈到外围的东西。

现在我专注于我们的两个主要“业务流程”:选民登记(即选民)和选举投票率。首先,选民是事实。其次,选民是一个维度,还有政党、选举和选票类型。(如果有人担心 - 不,我们不知道人们如何投票。只是他们这样做。哈哈)

我希望这能澄清一点。

0 投票
4 回答
4774 浏览

sql-server - MDX 性能与 T-SQL

我有一个数据库,其中包含超过 6 亿条记录的表和一组对数据库进行复杂搜索操作的存储过程。即使在表上有合适的索引,存储过程的性能也很慢。数据库的设计是正常的关系数据库设计。我想将数据库设计更改为多维并使用 MDX 查询而不是传统的 T-SQL 查询,但问题是: MDX 查询在性能方面是否优于传统的 T-SQL 查询?如果是,这将在多大程度上提高查询的性能?

谢谢你的帮助。

0 投票
3 回答
821 浏览

sql - SSAS - 自定义总计

我正在尝试创建一个多维数据集,其中总数取自事实的属性,而不是作为 SSAS 2005 中子项的汇总计算。例如

假设我有 10 家商店,在某一天都有 100 名顾客光顾。然而,一些客户访问了多家商店时存在一些重叠。因此,所有商店所属区域的访客总数是事实数据中提供的手动数字,例如

等等等等

我如何设计多维数据集,大概使用计算的度量,将属性作为总和返回,而不是对子项的度量求和?

期待任何想法。

干杯

0 投票
1 回答
3193 浏览

sql - 数据仓库重复维度行

我们开始使用来自事件日志的数据加载数据仓库。我们有一个普通的星型模式,其中事实表中的一行代表一个事件。我们的维度表是user_agent、ip、referal、page等的典型组合。一个维度表是这样的:

我们自动生成 id 以最终加入事实表。我的问题是:在我们的批量加载过程中识别重复记录的最佳方法是什么?在实际插入持久存储之前,我们将日志文件的所有记录上传到临时表中,但是,id 只是自动递增的,因此两天的两个相同的暗记录将具有不同的 id。创建值列的哈希是否合适,然后尝试对其进行比较?似乎尝试在每个值列上进行比较会很慢。有没有针对这种情况的最佳实践?