DEV Community

Cover image for Mongock: Ferramenta para migração de dados Mongo e Java/Kotlin
Erick Giorgio
Erick Giorgio

Posted on

Mongock: Ferramenta para migração de dados Mongo e Java/Kotlin

Mongock é uma ferramenta de migração baseada em Java como parte do código do seu aplicativo para ambientes distribuídos. Ele permite que os desenvolvedores executem migrações mais seguras tendo propriedade e controle sobre as migrações de dados durante o processo de implantação do aplicativo, pois as alterações de código e dados são enviadas juntas.

As ferramentas de migração de banco de dados são essenciais em aplicativos onde você precisa migrar dados para um banco de dados, alterar um esquema, atualizar um registro/documento em todos os ambientes e onde é tedioso fazer isso manualmente ( quase sempre? ). Isso também pode ajudá-lo a acompanhar as alterações feitas, assim como o controle de versão.

Com Java, existem várias bibliotecas que você pode usar para esse propósito. Há Liquibase , Flyway , Mongock e talvez mais.

Para usar o mesmo com um Java, você precisaria das seguintes dependências (além dos dados do Mongo Java Driver/Spring Mongo que você usaria para configurar o aplicativo de qualquer maneira):

Ao importar o acima, tudo o que você precisa fazer é:

  • Anote a classe do aplicativo com@EnableMongock
  • Especifique o(s) pacote(s) onde você localizaria suas Changelogaulas no seu application.ymlou application.propertiessobmongock.change-logs-scan-package

Com isso, o aplicativo deve estar pronto para ser executado, sem problemas.

Ai segue um exemplo de changelog

@ChangeLog(order = "001") 
public class Changelog { 
    @ChangeSet(order = "001", id="001", author = "pradipta") 
    public void dummyChangeSet() { 
        System.out.println("Dummy changeset" ); 
    }
    @ChangeSet(order = "002", id="criar coleção", autor = "pradipta") 
    public void createCollection(MongoDatabase db) { 
        MongoCollection<Document> mycollection = db.getCollection("dummycollection"); 
        Documento doc = new Document("k1", "v1").append("k2", "v2"); 
        minhacoleção.insertOne(doc); 
    }
    @ChangeSet(order = "003", id = "inserir documento", autor = "pradipta") 
    public void insertDocument(MongockTemplate mongockTemplate) { 
        User user = new User("Nome", "Email", "Telefone"); 
        //Usuário é uma entidade com uma coleção já definida 
        mongockTemplate.save(user); 
    } 
}
Enter fullscreen mode Exit fullscreen mode

E ele trabalha também com o repository do Spring

@ChangeLog(order = "1")
class Cookie02CreateCollection() {

  @ChangeSet(order = "1", id = "init_database", author = "name")
  fun initDatabase(myRepository: MyRepository) {
      myRepository.saveAll({.....})

  }
}
Enter fullscreen mode Exit fullscreen mode

https://docs.mongock.io/index.html

Top comments (0)