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 / 121683
Accepted
Neo
Neo
Asked: 2015-11-21 05:21:59 +0800 CST2015-11-21 05:21:59 +0800 CST 2015-11-21 05:21:59 +0800 CST

Migração de esquema: SQL Server Data Tools vs Liquibase e Flyway

  • 772

Isso pode parecer uma pergunta estúpida, mas tenho procurado soluções de código aberto para migração de esquema, ou seja, Liquibase e Flyway.

No entanto, meu chefe me disse que o SQL Server Data Tools (SSDT) ​​realiza o mesmo trabalho. Não tenho certeza se concordo, mas posso encontrar muito pouco na Internet que o compare diretamente ao Liquibase e/ou Flyway.

Minha opinião é que o SSDT é uma ferramenta de desenvolvimento, modelagem de dados e design para SQL Server e também suporta comparação de esquemas (e geração de scripts dos mesmos) e controle de origem. Ele aborda um problema diferente, embora possa haver alguma sobreposição com o Liquibase/Flyway em alguns aspectos da migração de esquema. Mas, como uma ferramenta geral de migração de esquema, o Liquibase e o Flyway são ferramentas totalmente dedicadas, enquanto o SSDT é mais para o design e desenvolvimento de um banco de dados.

Qualquer opinião seria muito apreciada, mesmo que seja apenas para dizer que não há comparação e o SSDT não é uma ferramenta de migração de esquema em si.

schema ssdt
  • 3 3 respostas
  • 10315 Views

3 respostas

  • Voted
  1. Best Answer
    Ed Elliott
    2015-11-21T05:59:27+08:002015-11-21T05:59:27+08:00

    O SSDT é comparável ao Liquibase/Flyway, pois faz o que eles fazem, mas adotando uma abordagem diferente. Com o SSDT, você tem o ambiente de desenvolvimento para obter coisas como ir para a definição, encontrar referências e inteligência, bem como a capacidade de compilar um projeto em um dacpac e, em seguida, implantar esse dacpac em um banco de dados.

    A maneira SSDT (e a maneira redgate sql compare) de fazer uma implantação é declarar o que você deseja, portanto, se quiser alterar uma tabela que se parece com:

    create table a(id int)
    

    para uma tabela que se parece com:

    create table a(id int, another_column varchar(12))
    

    com o SSDT, basta alterar a definição da tabela para a segunda e deixar o SSDT se preocupar em como atualizá-lo (ele pode alterar a tabela, adicionar coluna ou alterar a ordem da coluna, portanto, será necessário reconstruir a tabela, etc.).

    Com o Liquibase (DbUp, ReadyRoll, métodos manuais, etc.), o que você faz é, neste caso, escrever a tabela alter você mesmo e certificar-se de executar os scripts na ordem correta, considere este cenário:

    1. Release 1 - criar coluna hello na tabela
    2. Versão 2 - renomeie a coluna hello para joe_blogs
    3. Release 3 - renomeie a coluna joe_blogs para hello
    4. Versão 4 - criar coluna joe_blogs

    Se algum dos lançamentos for perdido, nenhum dos próximos poderá continuar.

    Benefícios dos scripts de atualização (Liquibase, DbUp, etc):

    • Você tem controle total sobre os scripts
    • DBA's/Desenvolvedores estão acostumados com isso

    Benefícios da comparação/mesclagem (SSDT, Redgate SQL Compare):

    • Não precisa escrever scripts de atualização
    • É fácil chegar a qualquer versão específica, basta comparar e mesclar essa versão

    Desvantagens dos scripts de atualização:

    • Deve ser executado em ordem
    • Confie nos humanos sem cometer erros
    • Pode ser lento, especialmente se você tiver muitas alterações
    • A menos que sua equipe seja muito disciplinada, os bancos de dados em diferentes ambientes (desenvolvimento, teste, preparação, produção, etc.) geralmente ficam fora de sincronia, tornando qualquer teste inválido
    • Fazer o downgrade de uma versão significa escrever o reverso de todos os scripts que você já escreveu

    Desvantagens de usar comparar / mesclar:

    • As ferramentas não são 100% confiáveis, talvez injustamente
    • SSDT requer um projeto de trabalho, muitos bancos de dados têm código que realmente não compila ou executa (pense em tabelas descartadas, mas não em procedimentos, etc.), vi isso em cerca de 8/10 bancos de dados que herdei :)
    • Muitos DBA's/desenvolvedores hesitam em desistir de desenvolver em SSMS/notepad

    Pessoalmente, acho que o SSDT é um ambiente de desenvolvimento profissional e isso significa que posso me concentrar em escrever códigos e testes úteis, em vez de escrever scripts de atualização que são apenas um meio para atingir um fim.

    Você pediu opiniões, então vamos lá :)

    ed

    • 19
  2. a_vlad
    2015-11-21T07:36:36+08:002015-11-21T07:36:36+08:00

    Acabei de completar a resposta de previsão.

    A maior diferença descrita no site da Flyway no local central:

    Resolve apenas um problema e o resolve bem. O Flyway migra seu banco de dados, para que você não precise mais se preocupar com isso.

    Visual Studio + SSDT + SSIS = ferramenta ETL de potência total, com apenas uma desvantagem real - funciona apenas no Windows Ele precisa do Windows + SQL Server para executar pacotes, mas funciona principalmente com todas as fontes.

    Para transferir/migrar dados - muitos produtos no mercado. Comercial, Open Sources, Community/Express e etc

    Para migrar código - nem tudo é tão bom. Mesmo que o software prometa "converter gatilhos, procedimentos e funções sem problemas", na verdade - apenas simples, a maioria das migrações de código - manual.

    • 2
  3. VenVig
    2016-10-14T10:38:51+08:002016-10-14T10:38:51+08:00

    Trabalhei com ferramentas de dados do servidor SQL e flyway. Usando o SSDT, obtenho as seguintes vantagens:

    1. Posso compilar o projeto de banco de dados. Ou seja, não há medo de descartar uma coluna que está sendo referenciada por uma exibição, função ou procedimento armazenado. Este é um ótimo recurso, porque no passado, descobrimos essas falhas somente após o lançamento
    2. Após a compilação bem-sucedida, o SSDT gera o que é conhecido como "DACPAC". Pense nisso um msi com uma versão.

    3. Um determinado dacpac, digamos com a versão 5, pode ser aplicado a um banco de dados que está na versão Dacpac 1,2,3,4 ou 6,7,8 etc. Se for aplicado a 1-4, o banco de dados será atualizado. Se aplicado a 6,7 ​​etc., o banco de dados será rebaixado/revertido. Haverá avisos, se houver perda de dados, que podem ser suprimidos. Portanto, obtemos um ótimo recurso de reversão, que não está disponível com outras ferramentas, como flyway, etc. Com o flyway, é necessário fornecer um novo conjunto de scripts para reversão.

    4. DACPAC aplica todas as alterações em uma transação; ou seja, se houver 5 alterações de tabela na atualização e uma delas falhar, toda a transação será revertida. Flyway suporta isso também, mas para cada arquivo.

    No entanto, SSDT e DACPACs são específicos do Microsoft SQL Server; flyway pode ser usado para uma variedade de bancos de dados.

    Portanto, se você estiver usando apenas o SQL Server, deve ser uma decisão bastante fácil usar SSDT e DACPACs.

    • 2

relate perguntas

  • Quais são as possíveis considerações e desvantagens de armazenar dados de imagens binárias diretamente em uma tabela?

  • PostgreSQL: Tabelas separadas versus tabela única para preservar o espaço em disco?

  • PostgreSQL: data de criação de uma tabela

  • Existe alguma ferramenta boa para fazer Design de Banco de Dados e Protótipos? [fechado]

  • Quão errado está meu esquema de modelagem de aplicativo da web?

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