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

Image 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.

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); 
        } 
    }

    E ele trabalha também com o repository do Spring

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