标签: etl

在 9.1 下仍然推荐常规的 VACUUM ANALYZE 吗?

我在 Ubuntu 上使用 PostgreSQL 9.1。VACUUM ANALYZE仍然推荐预定,还是 autovacuum 足以满足所有需求?

如果答案是“视情况而定”,那么:

  • 我有一个较大的数据库(30 GiB 压缩转储大小,200 GiB 数据目录)
  • 我对数据库做 ETL,每周导入接近 300 万行
  • 变化最频繁的表全部继承自一个主表,主表中没有数据(数据按周分区)
  • 我创建每小时汇总,并从那里创建每日、每周和每月报告

我问是因为预定的时间VACUUM ANALYZE会影响我的报告。它运行了 5 个多小时,本周我不得不杀死它两次,因为它影响了常规的数据库导入。check_postgres不会报告数据库有任何显着膨胀,所以这不是真正的问题。

从文档中,autovacuum 也应该处理事务 ID 环绕。问题是:我还需要一个VACUUM ANALYZE吗?

postgresql etl vacuum

38
推荐指数
3
解决办法
4万
查看次数

使用 SQL CLR 标量函数模拟 HASHBYTES 的可扩展方式是什么?

作为 ETL 过程的一部分,我们将暂存中的行与报告数据库进行比较,以确定自上次加载数据以来是否有任何列实际发生了更改。

比较基于表的唯一键和所有其他列的某种散列。我们目前使用HASHBYTESSHA2_256算法,并发现如果许多并发工作线程都在调用HASHBYTES.

在 96 核服务器上进行测试时,以每秒哈希数衡量的吞吐量不会增加超过 16 个并发线程。我通过将并发MAXDOP 8查询的数量从 1更改为12 来进行测试。测试MAXDOP 1显示了相同的可扩展性瓶颈。

作为一种解决方法,我想尝试 SQL CLR 解决方案。这是我试图说明要求的尝试:

  • 该函数必须能够参与并行查询
  • 函数必须是确定性的
  • 该函数必须接受一个NVARCHARVARBINARY字符串的输入(所有相关列都连接在一起)
  • 字符串的典型输入大小为 100 - 20000 个字符。20000 不是最大值
  • 哈希冲突的几率应该大致等于或优于 MD5 算法。CHECKSUM对我们不起作用,因为冲突太多。
  • 该函数必须在大型服务器上很好地扩展(每个线程的吞吐量不应随着线程数量的增加而显着降低)

对于 Application Reasons™,假设我无法保存报告表的哈希值。这是一个不支持触发器或计算列的 CCI(还有其他我不想讨论的问题)。

HASHBYTES使用 SQL CLR 函数进行模拟的可扩展方式是什么?我的目标可以表示为在大型服务器上每秒获得尽可能多的哈希值,因此性能也很重要。我对 CLR 很糟糕,所以我不知道如何做到这一点。如果它激励任何人回答,我计划尽快为这个问题添加赏金。下面是一个示例查询,它非常粗略地说明了用例:

DROP TABLE IF EXISTS #CHANGED_IDS;

SELECT stg.ID INTO #CHANGED_IDS
FROM (
    SELECT ID,
    CAST( HASHBYTES ('SHA2_256', 
        CAST(FK1 AS NVARCHAR(19)) + 
        CAST(FK2 AS NVARCHAR(19)) …
Run Code Online (Sandbox Code Playgroud)

sql-server etl sql-clr hashing sql-server-2016

31
推荐指数
4
解决办法
1948
查看次数

如何在不耗尽内存的情况下运行包含许多插入内容的大型脚本?

题:

我有一个脚本,其中包含来自 select 语句的大约 45,000 个插入。当我尝试运行它时,我收到一条错误消息,指出我的内存不足。我怎样才能运行这个脚本?

语境:

  1. 添加了一些新的数据字段,使应用程序与客户端使用的另一个应用程序配合得很好。
  2. 从客户端获得了一份数据电子表格,其中包含将当前数据项映射到这些新字段的值的数据。
  3. 将电子表格转换为插入语句。
  4. 如果我只运行一些语句,它会起作用,但整个脚本不会。
  5. 没有。没有错别字。

如果有不同的方式我应该加载这些数据,请随时批评我并让我知道。

sql-server-2005 sql-server etl

29
推荐指数
3
解决办法
9万
查看次数

有没有开源/免费的 ETL?

甚至在 Pentaho 购买它并称之为它之前,我就在使用 Pentaho Data Integration。我有最后一个免费版本。

我最近访问了他们的网站,看看他们是否发布了另一个版本,却发现我最喜欢的开源 etl 不再开放,也不是完全免费。

你们中有人知道经济实惠、易于使用的 ETL 工具的替代品吗?

etl

26
推荐指数
4
解决办法
1万
查看次数

支持使用 ELT 过程而不是 ETL 的论据是什么?

我意识到我的公司使用 ELT(提取-加载-转换)流程而不是使用 ETL(提取-转换-加载)流程。
这两种方法有什么区别,在哪些情况下一种会比另一种“更好”?如果您能提供一些示例,那就太好了。

data-warehouse etl business-intelligence

23
推荐指数
2
解决办法
1万
查看次数

相互验证两个表的快速方法

我们正在做一个 ETL 过程。当一切都说完后,有一堆表格应该是相同的。验证这些表(在两个不同的服务器上)实际上相同的最快方法是什么?我说的是架构和数据。

我可以在表上做一个散列,就像我可以在单个文件或文件组上一样 - 将一个与另一个进行比较。我们有 Red-Gate 数据比较,但由于有问题的表每个都包含数百万行,我想要一些性能更高的东西。

一种让我感兴趣的方法是对 union 语句的这种创造性使用。但是,如果可能的话,我想进一步探索散列的想法。

发布答案更新

对于任何未来的访客......这是我最终采取的确切方法。它工作得很好,我们在每个数据库的每个表上都这样做。感谢下面的答案为我指明了正确的方向。

CREATE PROCEDURE [dbo].[usp_DatabaseValidation]
    @TableName varchar(50)

AS
BEGIN

    SET NOCOUNT ON;

    -- parameter = if no table name was passed do them all, otherwise just check the one

    -- create a temp table that lists all tables in target database

    CREATE TABLE #ChkSumTargetTables ([fullname] varchar(250), [name] varchar(50), chksum int);
    INSERT INTO #ChkSumTargetTables ([fullname], [name], [chksum])
        SELECT DISTINCT
            '[MyDatabase].[' + S.name + '].['
            + T.name + ']' …
Run Code Online (Sandbox Code Playgroud)

sql-server etl sql-server-2008-r2 except

15
推荐指数
3
解决办法
3万
查看次数

ETL:从 200 个表中提取 - SSIS 数据流或自定义 T-SQL?

根据我的分析,我们数据仓库的完整维度模型需要从 200 多个源表中提取。其中一些表将作为增量加载的一部分提取,而其他表将作为完整加载。

需要注意的是,我们有大约 225 个具有相同架构的源数据库。

据我所知,在 SSIS 中构建一个带有 OLE DB 源和 OLE DB 目标的简单数据流需要在设计时确定列和数据类型。这意味着我最终会得到 200 多个数据流,仅用于提取。

从可维护性的角度来看,这对我来说是一个大问题。如果我需要对提取代码进行某种彻底的更改,我将不得不修改 200 个不同的数据流。

另一种选择是,我编写了一个小脚本,用于读取我想从一组元数据表中提取的源数据库、表名和列。代码在多个循环中运行,并使用动态 SQL 通过链接服务器和 OPENQUERY 从源表中提取。

根据我的测试,这仍然不如使用带有 OLEDB 源和目标的 SSIS 数据流快。所以我想知道我有什么样的选择。到目前为止的想法包括:

  1. 使用EZAPI以编程方式生成具有简单数据流的 SSIS 包。要提取的表和列将来自前面提到的相同元数据表。
  2. 购买第 3 方软件(动态数据流组件)

解决这个问题的最佳方法是什么?当谈到 .NET 编程时,我是一个初学者,所以仅仅学习基础知识所需的时间也是一个问题。

sql-server-2005 data-warehouse sql-server etl ssis

13
推荐指数
1
解决办法
1万
查看次数

用于大容量事务和数据仓库的 PostgreSQL

我对 PostgreSQL 很陌生,我以前从未使用过它进行过大型部署。但是,我在企业解决方案方面有很好的经验,我想尝试应用我使用 PostgreSQL 学到的一些知识。

我有大小可以处理大量数据和流量的站点。该基础设施将在亚马逊 (AWS) 上使用 EC2 实例和 EBS 卷构建。

设计应该有两个数据库,一个主事务数据库和一个数据仓库来处理分析和报告。

主要事务数据库

将用于实时网站,该网站建立在多个节点上以扩展并发用户。主要是我们要求这个案例的数据库读取操作非常快,我们预计>100GB的数据,每年增长30%。此时,我们计划使用两台 EC2 服务器(稍后根据需要添加更多服务器)。

我的问题是,针对上述要求的推荐设置是什么?另外,有没有办法管理表和卷分区?是否有使用 AWS 设置的建议?

数据仓库数据库

将主要用于在时间维度上从主事务数据库中捕获所有数据。因此,即使是从主数据库中删除的记录也会在 DWH 中被捕获。因此,数据会非常大,增长会更大。如果需要,我们还将使用几个 EC2 实例或更多实例。

在这种情况下,推荐的设置是什么?由于恒定写入(ETL),这将需要快速写入操作。我们可以在 PostgreSQL 中构建 OLAP 多维数据集吗?如果是的话,有人试过吗?

连接到数据库

Web 服务器将连接到主数据库进行查询和写入。我们目前正在使用 django 开发一个应用程序,它使用本机库进行连接。是否建议使用相同的基本方法?还是我们应该配置 pgpool?

数据仓库 (ETL)

构建 ETL 流程以从 main 读取并加载到数据仓库的推荐方法是什么?有什么工具吗?要遵循的方法论?PostgreSQL 在构建 ETL 过程中是否提供任何有用的功能/工具?

postgresql data-warehouse etl

11
推荐指数
1
解决办法
1万
查看次数

SQL Server 中是否有用于编程 ETL 的标准语言/接口?

我目前正在为我们的数据仓库创建 ETL。我们正在使用 SSIS 2008,但我们遇到了问题,其中最大的问题是重用组件的困难。我们为每个表都有单独的包,每个包都将来自父包的许多变量作为输入。当我们对这些输入变量进行更改时,我们需要进入每个包(我们现在有 15 个左右,但这个数字会显着增加)并修改包以处理这些更改。还有其他问题,包括无法为我们的提取运行任意 SQL,日志记录能力差等。

如果有一种方法可以在代码中开发我们的 ETL,实现代码重用、公共库、更好的单元测试等,那么整个过程会更加健壮。SQL Server是否有事实上的标准 ETL 语言/API?我希望尽可能避免使用 GUI 工具。

编辑:我应该提到我的背景。我不是 DBA,也没有接受过正式(或非正式)的 DBA 培训,我基本上已经了解了这些东西,所以很有可能我正试图用 SSIS 做不适当的事情或接近这个 ETL从错误的角度投射。此外,我目前受雇于州政府,因此任何需要购买新软件包的解决方案都不可能实现。


这是我们的任务之一。我们使用单个 SSIS 包来加载仓库中的每个表。每个 Fact 包和 Dimension 包大体上是一样的,它们只是在

  • 从源数据库中提取
  • 数据流中的操作
  • 合并到目标表

我希望能够做什么(我发现在 SSIS 中很难做到)

  • 从文本文件加载提取查询。当开发人员编写和测试他们的提取查询时,我不应该在 SSIS 运行之前以任何方式操作他们的查询,我不应该将查询剪切并粘贴到 DB 源对象中。
  • 单独测试每个组件。我应该能够独立于其他表负载,独立测试单个表的完整 ETL 过程。
  • 在一处修改共享逻辑,而不必编辑每个单独的包。每个包都以相同的方式将数据加载到审计表中,如果我想更改加载的审计数据,我不想编辑所有 15 个包(随着时间的推移,这个数字会变得更大)。

如果通过正确使用共享代码以编程方式完成,整个过程感觉会更容易实现并且更健壮。

sql-server etl

10
推荐指数
2
解决办法
1768
查看次数

Redshift 中的维度建模和 ETL

我一直在研究 Amazon 的 Redshift 数据库作为我们数据仓库未来可能的替代品。我的经验一直是使用维度建模和 Ralph Kimball 的方法,所以看到 Redshift 不支持自动递增列的串行数据类型等功能有点奇怪。

但是,AWS 大数据博客最近有一篇关于如何为星型架构优化 Redshift 的博客文章:https : //blogs.aws.amazon.com/bigdata/post/Tx1WZP38ERPGK5K/Optimizing-for-Star-Schemas -and-Interleaved-Sorting-on-Amazon-Redshift

我的问题是在 Redshift 中加载星型模式的最佳实践是什么?我在 Redshift 的任何文档中都找不到答案。

我倾向于将我的文件从 S3 导入到临时表中,然后在插入到目标表之前使用 SQL 进行诸如查找和生成代理键之类的转换。

这是其他人目前正在做的事情吗?是否有值得花钱的 ETL 工具使这更容易?

etl dimensional-modeling redshift

9
推荐指数
2
解决办法
1万
查看次数