Acho que estou confundindo as coisas.
No ETL, a conversão de dados começa no Banco de Dados A e termina no Banco de Dados B, ambos são bancos de dados relacionais. Talvez eu tenha um sistema de 20 anos. Eu uso ETL para obter os dados entre os dois bancos de dados. Eu não sei para que mais o ETL é usado.
No ELT, é o mesmo, exceto que os dados do banco de dados A nunca terminam no banco de dados B? Em vez disso, os dados brutos estão em tabelas ou alguma outra estrutura de dados no Servidor B, do Banco de Dados A, mas requer algo como o Hadoop para transformar esses dados em algo que um aplicativo especificamente projetado para usar o Hadoop?
Edit: fiz de novo. Hadoop != ELT. Eu estava olhando apenas para o Hadoop e pensei que fosse o ELT ou a manifestação dele. edit: e esse ELT significava que você exigia uma estrutura de dados de arquivo não RDBMS exclusiva em vez de um RDBMS e você despejou o RDBMS completamente.
Eu acho que isso vai ser mais fácil com um exemplo:
O banco de dados A tem a tabela C. O banco de dados B tem a tabela D. C e D são muito semelhantes, mas não idênticos, e os dados precisam ser limpos antes de serem carregados em D.
ETL
Um programa ETL (SSIS, Pentaho, qualquer que seja) extrai os dados da tabela C. Em seguida, ele faz algumas alterações nos dados para limpá-los e colocá-los no formato necessário. O processo ETL então move/copia esses dados para a tabela D no banco de dados B.
ELT
Os dados da Tabela C são extraídos. Ele é carregado no banco de dados B como tabela C. O banco de dados B agora tem duas tabelas, C e D. Um processo de banco de dados (SQL, um trabalho, o que for) agora faz algumas alterações nos dados da tabela C e os coloca no formato necessário. Esse mesmo processo copia os dados agora limpos para a tabela D. A tabela temporária C não é mais necessária no banco de dados B e pode ser excluída ou truncada.
Em ambos os casos, os dados agora são carregados no Banco de Dados B, Tabela D. O aplicativo front-end continua a usar a Tabela D.
Tanto no ETL quanto no ELT, os dados de A terminam em B. Não, você não precisa do Hadoop para ELT. Na verdade, usar o Hadoop entre dois bancos de dados seria mais parecido com ETL.
Talvez um diagrama ajude:
TLDR; Você está pensando demais. ETL é apenas um conceito, movendo quaisquer dados de um lugar para outro. Quer você extraia, depois carregue, depois transforme, ou extraia, transforme ou carregue, é tudo a mesma coisa.
ETL significa Extract, Transform and Load, que é um processo usado para coletar dados de várias fontes, transformar os dados de acordo com as regras/necessidades de negócios e carregar os dados em um banco de dados de destino. A necessidade de usar ETL surge do fato de que, na computação moderna, os dados de negócios residem em vários locais e em muitos formatos incompatíveis. Por exemplo, os dados de negócios podem ser armazenados no sistema de arquivos em vários formatos (documentos do Word, PDF, planilhas, texto simples, etc), ou podem ser armazenados como arquivos de e-mail ou podem ser mantidos em vários servidores de banco de dados como MS SQL Server, Oracle e MySQL, por exemplo. Lidar com todas essas informações de negócios com eficiência é um grande desafio e o ETL desempenha um papel importante na solução desse problema.
Extrair, transformar e carregar
O processo ETL tem 3 etapas principais, que são Extrair, Transformar e Carregar.
Extrair – A primeira etapa do processo de ETL é extrair os dados de várias fontes. Cada um dos sistemas de origem pode armazenar seus dados em um formato completamente diferente dos demais. As fontes geralmente são arquivos simples ou RDBMS, mas quase qualquer armazenamento de dados pode ser usado como fonte para um processo ETL.
Transformar – Uma vez que os dados foram extraídos e convertidos no formato esperado, é hora da próxima etapa do processo de ETL, que é transformar os dados de acordo com um conjunto de regras de negócios. A transformação de dados pode incluir várias operações, incluindo, mas não se limitando a filtrar, classificar, agregar, juntar dados, limpar dados, gerar dados calculados com base em valores existentes, validar dados, etc.
Carregar – A etapa final do ETL envolve o carregamento dos dados transformados no destino de destino, que pode ser um banco de dados ou data warehouse.
Fonte http://www.sql-tutorial.net/ETL.asp
ELT, "extrair, carregar, transformar" na verdade não existe e pode ser totalmente ignorado. O artigo da wikipedia não possui citações e é mencionado apenas no site "smartdatacollective.com". É provável que seja uma punheta de marketing ou um troll inteligente.
Mas vamos nos divertir, como seria...
A ideia toda é tal que você não transforme a entrada antes de colocá-la na loja, ou "lago". Isso não é um novo paradigma ou merece um novo termo. Temos bancos de dados que fazem isso, ou seja, o sistema de arquivos. E não chamamos
cp
um script ELT.A ideia de que você faria isso com intenção também é bastante estranha. É apenas uma tentativa de dignificar a má prática. Dado um banco de dados
inode, xmlblob_Lake
, eu pensaria que todo administrador de banco de dados estabelecido se encolheria em resposta e não pensaria "uau, uso legal do ELT".Há muitas maneiras de pensar em ter um sistema ELT e também tratar o Hadoop como um projeto ELT.
Uma implementação do Hadoop geralmente obtém dados de várias fontes de dados. E ter uma camada de extração de dados como Pig ou Hive realizando as transformações é bastante semelhante a um design ELT.
Quanto à diferenciação entre ETL e ELT, é baseada no escopo do projeto.