Git Product home page Git Product logo

transaction-database's Introduction

Transaction php with postgres on csv

O desafio aqui é implementar uma transação em diferentes linguagens de programação. Ao implementar uma transação deve-se ficar atento à questão de como iniciá-la e finalizá-la. Ou seja, algumas linguagens apenas executam a operação de commit quando for explicitamente invocado o comando de finalização. Para compararmos, iremos dividir as principais linguagens de programação entre os grupos e cada grupo irá apresentar como a determinada linguagem de programação se comporta.

Segue um código exemplo de uma transação em JAVA.

public class Teste {
    public static void main(String[] args) {
        final String url = "jdbc:postgresql://localhost:5432/postgres"; //indica o caminho do banco de dados
        final String user = "usuario"; // aqui vai o nome usuario que vc quer acessar
        final String password = "123"; // aqui a senha do seu banco
        
        int id = 12;
        String autor = "ddgfdgdg";
        String query = "INSERT INTO autor(id, name) VALUES(?, ?)";
        Time time_i=getTime()
        try (Connection con = DriverManager.getConnection(url, user, password);
            PreparedStatement pst = con.prepareStatement(query)) {
            con.setAutoCommit(false);
            pst.setInt(1, id);
            pst.setString(2, autor);
            pst.executeUpdate();
            con.commit();
            System.out.println("Transação efetuada com sucesso");
        } catch (SQLException ex) {
            System.out.println("Transação não efetuada");
            Logger lgr = Logger.getLogger(Teste.class.getName());
            lgr.log(Level.SEVERE, ex.getMessage(), ex);
        }
        Time time_e=getTime()
    }
}

O principal ponto a ser notado é que foi acionado o comando setAutoCommit(false) para desabilitar a operação de auto commit. Algumas linguagens implementam isso de forma automática. Após executar operações de inserção, é acionado o comando de "salvamento" para finalizar a operação.

Detalhes que foram atendidas :


  1. Inserindo as tuplas em uma tabela usando o Postgres, os dados em um arquivo csv.
  2. A linguagem utilizada foi php com preferência na versão 7.4 por diante.
  3. Não esqueça de instalar o sudo apt install php7.4-psql, pois irá precisar para conexão do banco de dados do PostgreSQL com php assim fazendo alterações e trabalhando no seu ambiente.

Funções a serem implementadas:


1- Realizada a inserção dos dados na tabela utilizando uma função com transações implícitas vs. transações explícitas (comando insert a cada nova inserção). Compare o tempo de inserção. Explique o motivo da variação do tempo.
PS: rodar 5 vezes e fazer a média e desvio padrão dos tempos de execução para evitar perturbações de outros processos.
2- Implementar uma função que cause um rollback na transação (ex: um campo mal formado). Alguma tupla foi salva no caso da implícita e da explícita?

Como Contribuir

Para contribuir e deixar a comunidade open source um lugar incrivel para aprender, projetar, criar e inspirar outras pessoas. Basta seguir as instruções logo abaixo:

  1. Realize um Fork do projeto
  2. Crie um branch com a nova feature (git checkout -b feature/featureTransaction)
  3. Realize o Commit (git commit -m 'Add some featureTransaction')
  4. Realize o Push no Branch (git push origin feature/featureTransaction)
  5. Abra um Pull Request

Autores

transaction-database's People

Contributors

bbiancaa avatar rafinhadufluxo avatar

Stargazers

 avatar  avatar

Watchers

 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.