AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 340694
Accepted
GPGVM
GPGVM
Asked: 2024-07-03 21:46:36 +0800 CST2024-07-03 21:46:36 +0800 CST 2024-07-03 21:46:36 +0800 CST

Você pode ter um data warehouse de transações mínimas?

  • 772

Bom dia,

Tenho um cliente fazendo pesquisa científica. O design atual do banco de dados (Azure postgres) é 3NF, mas muito poucas transações estão acontecendo. Existem vários "pipelines" que adicionam novos dados às tabelas e os cientistas podem fazer uma atualização em alguns dados ou "descartar" alguns dados como errôneos, mas no geral muito pouco está acontecendo em termos de transações.

No entanto, eles têm um aspecto de “relatório” no seu trabalho e é isso que os cientistas fazem a maior parte do dia. Observar os dados (coisas genéticas) e ver se essas mutações foram vistas antes ou quais são os marcadores de início e parada, etc.

Por exemplo, uma de suas páginas da web de "relatórios" ou análise de dados chama uma visualização. Essa visualização leva mais de 4 minutos para ser executada. Quando olho para essa visualização, basicamente estou reunindo todos os dados das diferentes tabelas 3NF e achatando-os em 1NF para depois exibi-los.

Então aqui estão meus pensamentos/perguntas:

As tabelas 3NF e 1NF poderiam existir no mesmo banco de dados e no mesmo esquema? Eu sei que você poderia literalmente fazer isso, mas isso seria sábio/problemático? É algum tipo de "antipadrão" misturar e combinar assim?

1a. Se você fizesse isso, modificaria os pipelines para colocar os novos dados recebidos diretamente nas tabelas 1NF ou ainda deixaria o pipeline ser inserido no 3NF e então teria um gatilho ou processo ETL, etc.

1b O pensamento aqui é que se uma tabela existisse em 1NF, poderíamos simplesmente fazer uma varredura a partir dessa tabela, em vez de todas as junções, cte, subconsultas, etc., que estão atualmente na visão de longa execução.

Devo migrar toda a operação para 1NF entendendo que as poucas transações existentes serão mais lentas, mas 90% de todo o resto (sp, vw, fx, etc) será menos complexo e mais rápido.

2a. Se eu migrasse tudo para 1NF, você ainda teria tabelas de "teste" nas quais o pipeline grava os novos dados recebidos e, em seguida, um processo ETL carregaria os novos dados nas tabelas 1NF?

No geral, estou querendo planejar soluções de longo prazo. Claro que posso reduzir essa visualização de 4 minutos no tempo, mas a longo prazo, no que devemos pensar, especialmente porque o volume de dados continua a crescer. (aumento de 20% só no ano passado).

TIA

postgresql
  • 2 2 respostas
  • 46 Views

2 respostas

  • Voted
  1. Best Answer
    David Browne - Microsoft
    2024-07-06T05:48:29+08:002024-07-06T05:48:29+08:00

    O que você descreve é ​​uma arquitetura básica de data warehouse, onde você tem dados de transação normalizados e, a partir desses dados, carrega tabelas que são modeladas para fácil consumo e rápido desempenho de consulta.

    Nas arquiteturas Lakehouse, essa ideia é geralmente chamada de "Arquitetura Medalion": https://learn.microsoft.com/en-us/azure/databricks/lakehouse/medallion

    Mas quer você use um Lakehouse ou um banco de dados, o design é o mesmo. A camada de consumo da solução geralmente é modelada para consumo usando Modelagem Dimensional , que geralmente é mais útil e eficiente do que produzir tabelas amplas desnormalizadas.

    • 0
  2. OldFart
    2024-07-05T22:51:07+08:002024-07-05T22:51:07+08:00

    Sua pergunta é um exemplo clássico da pergunta genérica:

    • 'A' não funciona. Devo substituí-lo por 'B'?

    Quem sabe? Depende inteiramente do motivo pelo qual 'A' não funciona como você espera.

    • Se 'A' não funcionar por causa de um problema simples e solucionável, você provavelmente deveria apenas consertar esse problema;

    • Por outro lado, se 'A' não funcionar por causa de um problema fundamentalmente impossível de resolver, você poderia tentar 'B' - contanto que você entenda que 'B' pode ser pior, então você teria perdido seu tempo mudando para 'B', e talvez até precise perder mais tempo voltando para 'A'!

    Portanto, antes de alterar qualquer coisa, você deve determinar inequivocamente por que suas consultas atuais estão lentas.

    Minha aposta é um ou mais dos seguintes:

    • Seu banco de dados não está devidamente normalizado;

    • As tabelas não possuem chaves primárias adequadas e/ou não estão indexadas corretamente;

    • Suas consultas são escritas de forma ineficiente.

    Digamos que você tenha consultas que são executadas de forma inesperadamente lenta:

    • Escolha a consulta mais simples e lenta. (Por exemplo, escolha uma consulta de 10 linhas que seja executada 50 vezes mais lentamente do que você acha que deveria, em preferência a uma consulta de 1.000 linhas que seja executada 5% mais lentamente do que você acha que deveria.)

    • Descubra por que essa consulta é executada lentamente. Pergunte a alguém mais experiente, se necessário. Não prossiga até saber por quê!

    • Então proceda de acordo.

    HTH

    • -2

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve