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 / 186973
Accepted
user45867
user45867
Asked: 2017-09-27 11:58:44 +0800 CST2017-09-27 11:58:44 +0800 CST 2017-09-27 11:58:44 +0800 CST

Quais são os principais motivos para dividir um Data Warehouse em vários bancos de dados? [duplicado]

  • 772
Essa pergunta já tem respostas aqui :
Quando você deve dividir um banco de dados em 2-3 bancos de dados por motivos de desempenho? (3 respostas)
Fechado há 5 anos .

Estou trabalhando com um colega que propôs dividir nosso banco de dados de 1 instância em cerca de 7 bancos de dados (divididos por domínio de dados) para desenvolvimento e 7 bancos de dados idênticos para produção. Eu recebo a lógica de dualidade de produção de teste, mas em que caso ou quais são as vantagens de dividir nosso 1 banco de dados relativamente simples em 7 bancos de dados? Nosso data warehouse é consumido/usado apenas por UMA aplicação de inteligência de negócios, ponto final.

Estou preocupado com essa direção, então espero que você possa discutir as razões gerais propostas para essa divisão, e eu posso lhe dar um resumo das propriedades atuais do banco de dados.

1 banco de dados Data Warehouse: total de 352 GB, 203 tabelas, 170 visualizações

Divisão proposta:

A: 280 GB
B: 43 GB
C: 28 GB
D: 1 GB
E,F,G: < 1 GB combined

Como você pode ver, isso já é um problema em termos de benefícios propostos, pois o armazenamento não será nem remotamente dividido uniformemente, com 80% restantes em 1 banco de dados. Aparentemente, particionar nosso banco de dados por esquema não é possível (de uma perspectiva de hardware) porque não temos o SQL Server de nível empresarial.

Motivos apresentados para a divisão:

  1. O banco de dados atual é pouco otimizado, pouca documentação, tipos de dados sub-ótimos, índices sub-ótimos.

Meus pensamentos de novato: esses problemas não são irrelevantes para dividir o banco de dados? Eles são simplesmente problemas que precisam ser resolvidos por conta própria de qualquer maneira.

  1. Existem 372 objetos no banco de dados atual, o que o torna lento.

Meus pensamentos: Isso dificilmente parece grande na minha opinião.

  1. Um banco de dados é mais difícil de documentar e desenhar diagramas de esquema para mais de 7 bancos de dados (teremos visualizações que abrangerão vários bancos de dados).

Meus pensamentos: .... Isso me parece completamente ridículo, mas talvez eu esteja errado. Já organizamos nosso data warehouse por 13 esquemas de 'sistema de origem'.

  1. Um banco de dados levará a mais deadlocks de banco de dados.

-- Este problema também não é completamente irrelevante para ter vários bancos de dados? É meu entendimento que os deadlocks ocorrem no nível da tabela (na verdade, geralmente até mesmo no nível da linha, mas eh). Mesmo assim, todas as nossas inserções de dados acontecem à meia-noite, todos os nossos selects downstream para o BI acontecem às 2 da manhã. Ter dois processos atualizando a mesma tabela é irrelevante para vários bancos de dados, não é (o impasse aconteceria de qualquer maneira)? Além disso, pessoalmente, não vi nenhuma evidência de deadlocks de tabela ocorrendo durante operações normais.

  1. Propriedade técnica/propriedade do banco de dados.

Somos apenas nós dois que trabalhamos no banco de dados. É possível que ele queira realmente segregar nossos 'feudos'. Realmente, não foi um problema, mas as permissões do usuário não podem ser determinadas no nível do esquema de qualquer maneira?

Quais são os motivos válidos para dividir um Data Warehouse em vários bancos de dados?

Adoraria aprofundar meu conhecimento aqui sobre bancos de dados em geral. Sim, acontece que estou fazendo muito trabalho em um com lacunas no meu conhecimento, mas bem, o trabalho é o que é, o que fui empurrado. As coisas têm funcionado muito bem até agora (bater na madeira).

sql-server database-design
  • 2 2 respostas
  • 3598 Views

2 respostas

  • Voted
  1. Best Answer
    Vérace
    2017-09-27T12:39:58+08:002017-09-27T12:39:58+08:00

    Com certeza você está no caminho certo! 320 GB não é muito grande para um banco de dados, principalmente um DW.

    1) O banco de dados atual é pouco otimizado, pouca documentação, tipos de dados sub-ótimos, índices sub-ótimos.

    Meus pensamentos de novato: esses problemas não são irrelevantes para dividir o banco de dados? Eles são simplesmente problemas que precisam ser resolvidos por conta própria de qualquer maneira.

    Isso é um golpe no dinheiro. Dividir um grande banco de dados mal organizado, otimizado e documentado em 7 bancos de dados mal organizados, otimizados e documentados é uma perda de tempo! Você precisa atacar a raiz do problema!

    2) Existem 372 objetos no banco de dados atual, o que o torna lento.

    Meus pensamentos: Isso dificilmente parece grande na minha opinião.

    Novamente, você está correto! 372 é positivamente pequeno em termos de número de objetos - muitos servidores grandes têm dezenas de milhares. Daqui _

    A soma do número de todos os objetos em um banco de dados não pode exceder 2.147.483.647.

    Seu 370 dividido por ~ 2E9 ~= 1.7E-7 - então não se preocupe com essa pontuação! :-)

    3) Um banco de dados é mais difícil de documentar e desenhar diagramas de esquema para mais de 7 bancos de dados (teremos visualizações que abrangerão vários bancos de dados).

    Meus pensamentos: .... Isso me parece completamente ridículo, mas talvez eu esteja errado. Já organizamos nosso data warehouse por 13 esquemas de 'sistema de origem'.

    Novamente, você está correto. Se houver 372 entidades com inter-relações entre elas, você precisará documentá-las e diagrama-las. Vai ter um grau inerente de complexidade. O que você pode fazer é tentar dividir seu sistema geral em subsistemas e documentá-los e então tentar encaixá-los no quadro maior - grandes carvalhos de pequenas bolotas crescem!

    4) Um banco de dados levará a mais deadlocks de banco de dados.

    -- Este problema também não é completamente irrelevante para ter vários bancos de dados? É meu entendimento que os deadlocks ocorrem no nível da tabela (na verdade, geralmente até mesmo no nível da linha, mas eh). Mesmo assim, todas as nossas inserções de dados acontecem à meia-noite, todos os nossos selects downstream para o BI acontecem às 2 da manhã. Ter dois processos atualizando a mesma tabela é irrelevante para vários bancos de dados, não é (o impasse aconteceria de qualquer maneira)? Além disso, pessoalmente, não vi nenhuma evidência de deadlocks de tabela ocorrendo durante operações normais.

    O que você perderá no cenário de banco de dados múltiplo são transações ACID dentro do mesmo esquema - OK, você pode ter confirmação de 2 fases, mas não é tão robusto quanto as transações dentro do mesmo esquema (IMHO). Não tenho certeza de um motivo válido para separar as tabelas se elas forem necessárias para seus requisitos.

    Você parece estar falando sobre leituras de bloqueio de gravação? Bem, você também parece ter um processo em lote à meia-noite seguido por um processo de consulta às 02:00? Se você puder fazer transações/tabelas somente leitura, isso aliviará um pouco a carga do mecanismo do servidor enquanto ele processa seus dados. Só você pode dizer se isso pode ser aplicado ao seu cenário!

    5) Propriedade/propriedade técnica do banco de dados.

    Somos apenas nós dois que trabalhamos no banco de dados. É possível que ele queira realmente segregar nossos 'feudos'. Realmente, não foi um problema, mas as permissões do usuário não podem ser determinadas no nível do esquema de qualquer maneira?

    Certamente, a propriedade está no nível da tabela e o acesso pode, dependendo do seu servidor/versão, ser concedido em uma coluna e/ou linha - então o negócio de propriedade é uma pista falsa! Se você for um DBA de servidor realizando uma reorganização (em vez de simplesmente agendar backups e outras tarefas mundanas), precisará "acessar todas as áreas"!

    Você deve ter um comentário em cada tabela e campo em seu sistema - você pode colocar "propriedade" (no sentido organizacional em oposição ao banco de dados das coisas) lá - comentar tabelas e campos é um excelente primeiro passo para documentar um sistema - é torna-se auto-documentado!

    Quais são os motivos válidos para dividir um Data Warehouse em vários bancos de dados?

    Pode haver muitas razões - algumas estão associadas a multilocação (tanto em termos de recursos da máquina (CPU, RAM, HDD e rede) quanto de confidencialidade ou requisitos do cliente. Dê uma olhada aqui e também google "multilocação de banco de dados" ou similar .

    Todo mundo fala, mas é uma luta - "documentação é muito importante"! Como primeiro passo, documente suas tabelas e campos nos comentários. Produza diagramas ERD para todos os seus subsistemas. Não deixe nada novo entrar no sistema sem que essas etapas sejam implementadas. Boa sorte em sua nova função!

    • 10
  2. John Eisbrener
    2017-09-27T12:59:22+08:002017-09-27T12:59:22+08:00

    Embora pareça uma tática clássica de espantalho sendo usada por seu colega, ele ou ela poderia estar se referindo à criação de data marts formais ao dizer "dividir o data warehouse"?

    As duas principais abordagens de Data Warehousing são atribuídas a Ralph Kimball e Bill Inmon . Aqui estão algumas visões gerais de alto nível ( [1] , [2] ) sobre a diferença entre essas duas abordagens comuns se você tiver alguns minutos para queimar.

    O que acredito pode ser aplicável à sua situação é que a abordagem de Bill Inmon exige a criação formal de Data Marts dos quais as ferramentas de relatório extraem dados. Esses Data Marts são projetados para serem acessados ​​exclusivamente por departamentos ou unidades de negócios específicos, e acho que isso pode ser o que seu colega está tentando alcançar. A natureza idêntica das cópias é estranha, mas pode ser mais fácil criar uma cópia do data warehouse em sua forma atual e depois carregar apenas os dados de um departamento específico nessa cópia daqui para frente?

    Pelo que você forneceu, parece que seu data warehouse atual está usando a abordagem de Kimball, onde os Data Marts são um subconjunto lógico de dados dentro do data warehouse dimensional que sua ferramenta de relatório acessa diretamente. Essas duas abordagens de design têm seus prós e contras, e esperamos que o cerne do problema do seu colega seja que ele esteja mais confortável com a abordagem de Inmon.

    Espero que isso seja apenas um mal-entendido de termos e uma discussão aprofundada dessas duas abordagens diferentes com seu colega leve a alguns esclarecimentos sobre os obstáculos que ele ou ela está tentando superar.

    • 2

relate perguntas

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Quais são algumas maneiras de implementar um relacionamento muitos-para-muitos em um data warehouse?

  • Como determinar se um Índice é necessário ou necessário

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