Code Monkey home page Code Monkey logo

aws-s3-database-dump's Introduction

Extração de dados e Envio automático para nuvem (AWS S3)

Atividade proposta durante a participação na trilha de Engenharia de Dados do Programa de Formação em Dados Encantech, realizado durante os meses de Março, Abril e Maio de 2022, em uma parceria entre as Lojas Renner S.A. e a CESAR School.

Consiste na construção de uma pipeline com estágios de extração de dados e de carregamento automático na nuvem (bucket do AWS S3).

Overview

A ideia é simular o armazenamento na nuvem de backups de um banco de dados em funcionamento.

  1. O usuário realiza o dump no banco de dados quando achar mais pertinente (ex: horário em que ninguém esteja acessando o banco de dados);

  2. Em paralelo, um serviço verifica periodicamente a existência do arquivo resultante do dump:

    • Se houver arquivo, este é carregado em um bucket do AWS S3;

    • Se não houver arquivo, registra-se a tentativa no arquivo de log e nada mais é executado.

Pontos de atenção:

  • Arquivo resultante do dump no banco de dados: existe uma pasta compartilhada entre o docker responsável pelo dump no banco de dados e o docker responsável pelo envio deste arquivo para a nuvem. Os seguintes cenários são possíveis:

    1. Dump realizado e pasta vazia: armazena o arquivo na pasta;

    2. Dump realizado e pasta cheia: sobrescreve o arquivo antigo;

    3. Pasta com arquivo e tentativa de envio para nuvem: envia o arquivo e o exclui da pasta compartilhada;

    4. Pasta sem arquivo e tentativa de envio para nuvem: nada é executado.

  • Armazenamento na nuvem: pastas divididas por data.

    • Mais de um dump na mesma data: adiciona-se um índice no final do nome do arquivo.
  • Periodicidade de envio para nuvem: editar o arquivo de agendamento crontab, vinculado ao Dockerfile. Pensando apenas na implementação deste projeto, definiu-se um período de 1 minuto.

Resumo do funcionamento:

Arquivo de log

<data>,<hora>,<mensagem>

<mensagem> pode ser:

  • database dump completed - dump no banco de dados finalizado;

  • there is no file to upload - tentativa de envio do arquivo de dump para nuvem, porém a pasta encontra-se vazia;

  • file successfully uploaded - arquivo de dump enviado para o respectivo bucket do AWS S3;

  • erro apresentado ao tentar enviar arquivo para a nuvem (retorno da cláusula except).

Exemplo:

Segurança - Credenciais da AWS

Para usar a AWS com o boto3 (o AWS SDK para Python) é necessário indicar as chaves de acesso do seu usuário ('Access key ID' e 'Secret access key'). Por segurança, estas chaves não devem ser compartilhadas com ninguém.

Além disso, outra informação levada em conta para esta seção é que o nome do bucket escolhido no projeto é único (cada nome de bucket deve ser exclusivo em todas as contas da AWS em todas as regiões da AWS em uma partição).

A abordagem escolhida foi a de registrar essas três informações (Access key ID, Secret access key e nome do bucket) em um único arquivo fora do repositório deste projeto. Em uma tentativa de execução, se faz necessário a criação deste arquivo com suas próprias credenciais.

aws-s3-database-dump's People

Contributors

pedrovsglima avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.