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 / 42561
Accepted
WileCau
WileCau
Asked: 2013-05-21 00:04:07 +0800 CST2013-05-21 00:04:07 +0800 CST 2013-05-21 00:04:07 +0800 CST

Existe uma maneira padrão de usar dados e procedimentos comuns em vários bancos de dados?

  • 772

Temos vários bancos de dados independentes que têm dados e códigos em comum, não no sentido de serem acessados ​​entre os bancos de dados, mas no sentido de que os dados significam a mesma coisa em cada banco de dados e o código faz a mesma coisa.

Exemplos são:

  • Definições de configuração (por exemplo, códigos de erro 50xxx, texto clichê para o nome da empresa, etc.).
  • Procedimentos e funções que executam tarefas comuns (por exemplo, converter uma string CSV em uma tabela, registrar um erro, formatar uma mensagem de erro com base no código de erro).
  • Estruturas de tabela (por exemplo, tabela para histórico de versão do banco de dados, tabela para registro de erros). Além das colunas, restrições e gatilhos, também existem procedimentos e funções comuns que leem/gravam os dados.
  • Tabelas de consulta (por exemplo, tabela de consulta de datas contendo datas entre 2000-2100). Elas são semelhantes às estruturas de tabela, mas frequentemente os dados serão os mesmos nos bancos de dados. No caso da tabela de datas, as datas de início e término são parâmetros de configuração, que são lidos por uma função, depois os dados de data são gerados por um procedimento. Todas essas operações são comuns entre os bancos de dados.
  • Tipos definidos pelo usuário (por exemplo, tipos para passar tabelas para funções).

Por motivos de manutenção e suporte, acho que faz sentido que coisas como códigos de erro, procedimentos, funções e tipos tenham um "ponto único de verdade" em todos os bancos de dados, não uma verdade diferente em cada banco de dados.

No momento, cada banco de dados tem sua própria cópia de tudo, incluindo o repositório de origem, e nós os mantemos de forma independente. Isso está longe do ideal porque é muito fácil corrigir um procedimento em A e esquecer de colocá-lo em B, ou adicionar um código de erro a A e o mesmo a B, mas significam coisas diferentes, etc.

Os bancos de dados não são atualizados ao mesmo tempo e não residem necessariamente no mesmo hardware. Há casos em que eles podem ler dados um do outro (se o outro existir).

Existe uma maneira padrão de ter um único ponto de verdade para dados/código usado em mais de um banco de dados?

sql-server sql-server-2008
  • 2 2 respostas
  • 1511 Views

2 respostas

  • Voted
  1. Best Answer
    Aaron Bertrand
    2013-05-21T04:03:33+08:002013-05-21T04:03:33+08:00

    Além da resposta de Thomas , para itens como dados de pesquisa comuns e funções genéricas, você pode usar sinônimos .

    USE CentralDB;
    GO
    
    CREATE TABLE dbo.Dates(...);
    GO
    
    USE OtherDB;
    GO
    
    CREATE SYNONYM dbo.Dates
      FOR CentralDB.dbo.Dates;
    

    Agora seus outros bancos de dados podem tratá-los como objetos locais de primeira classe, mas você só precisa manter uma cópia. Observe que algumas funcionalidades estão faltando, por exemplo, você não pode configurar chaves estrangeiras.

    Em uma vida anterior, gerenciei um sistema onde teríamos ~ 500 bancos de dados com esquema quase idêntico em cada instância. Gerenciamos dados comuns usando sinônimos e implantamos o código que precisava ser local usando o Red-Gate SQL Compare e o SQL Farms Combine (muito parecido com o Multi-Script).

    • 6
  2. Thomas Rushton
    2013-05-21T00:45:54+08:002013-05-21T00:45:54+08:00

    Três coisas imediatamente vêm à mente:

    • Master Data Services , parte do arsenal do SQL Server.
    • Role o seu próprio - construa um servidor de banco de dados central para armazenar esses dados; faça com que os outros servidores se conectem a esse servidor para obter essas informações. Isso corresponde à sua descrição de "ponto único de verdade", mas pode não ser totalmente prático.
    • Use software para automatizar o processo de implantação/implantação, como o Red-Gate's Deployment Manager ou sua ferramenta Multi-script

    edit: como esqueci isso, não sei ... culpo a falta de cafeína no início da manhã.

    • Replicação , outra parte do arsenal do SQL Server. Isso é usado principalmente para dados, mas pode ser usado para outros objetos, como funções e procedimentos armazenados .
    • 4

relate perguntas

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

  • Quanto "Padding" coloco em meus índices?

  • Existe um processo do tipo "práticas recomendadas" para os desenvolvedores seguirem para alterações no banco de dados?

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

  • Downgrade do SQL Server 2008 para 2005

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • 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

    Conceder acesso a todas as tabelas para um usuário

    • 5 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
    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
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +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