Atividade de transações em banco de dados II

Overview

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

You might also like...
📁 As Sessões são uma forma simples de armazenar dados para usuários, ficando mais confiável em manipular dados importantes

📁 As Sessões são uma forma simples de armazenar dados para usuários, ficando mais confiável em manipular dados importantes

Uma solucão simples para integrar sua aplicação Laravel a API PIX do Banco Central do Brasil
Uma solucão simples para integrar sua aplicação Laravel a API PIX do Banco Central do Brasil

Uma solução simples para integrar a sua aplicação Laravel com a API PIX do Banco Central do Brasil Instalação Publicando os assets Publicando o arquiv

Consulta os índices de correção do Banco Central via API

Índices correção Banco Central Realiza a consulta dos índices de correção através da API do Banco Central. Instalação composer require valbert/indices

Biblioteca para obter dados dos calendários acadêmicos da UFFS de forma automatizada
Biblioteca para obter dados dos calendários acadêmicos da UFFS de forma automatizada

uffs-ca-scraping Um pacote PHP para raspagem dos calendários acadêmicos da Universidade Federal da Fronteira Sul. A ideia desse pacote é permitir que

Dashboard autônoma que mostra os dados gerais da campanha de vacinação contra a Covid-19 do Estado de Mato-Grosso

Vacinometro Covid-19 MT Web App Demo: https://vacinometro-mt.netlify.app/ Dashboard que mostra o progresso da campanha de vacinação da Covid-19 no est

Owner
Rafa
Web Developer - Computer Science Student at UFFS
Rafa
Formulário de contato utilizando HTML, CSS, Bootstrap, PHP, Javascript e conexão ao banco de dados MySQL.

Formulário de Contato Tecnologias | Projeto | Licença | ?? Tecnologias Esse projeto foi desenvolvido com as seguintes tecnologias: HTML CSS PHP JavaSc

Douglas Duarte 3 Feb 10, 2022
💻 ➔ Projeto de um website que possuí um Banco de Dados, feito juntamente com minha amiga Helena (hmiranda99).

?? Barber Shop Duhel Website feito para o projeto final do 2º Módulo da matéria de PW2. Visite o site clicando aqui ?? Autores ??‍?? Helena Miranda ??

Eduardo Sousa 2 Jul 4, 2022
📁 As Sessões são uma forma simples de armazenar dados para usuários, ficando mais confiável em manipular dados importantes

?? As Sessões são uma forma simples de armazenar dados para usuários, ficando mais confiável em manipular dados importantes

Gustavo de Oliveira 4 Jan 25, 2022
Uma solucão simples para integrar sua aplicação Laravel a API PIX do Banco Central do Brasil

Uma solução simples para integrar a sua aplicação Laravel com a API PIX do Banco Central do Brasil Instalação Publicando os assets Publicando o arquiv

Mateus Junges 74 Dec 19, 2022
Dashboard autônoma que mostra os dados gerais da campanha de vacinação contra a Covid-19 do Estado de Mato-Grosso

Vacinometro Covid-19 MT Web App Demo: https://vacinometro-mt.netlify.app/ Dashboard que mostra o progresso da campanha de vacinação da Covid-19 no est

Samuel Araujo 1 May 2, 2022
Criação de um mini sistema de registro, onde será aplicado o processo de adição, atualização e remoção de dados do banco de dados MySQL.

CRUD PHP MVC Criação de um mini sistema de registro, onde será aplicado o processo de adição, atualização e remoção de dados do banco de dados MySQL.

Ricardo Santos 1 Nov 15, 2021
Aplicação criada com Angular e Laravel em conjunto para fazer um treinamento de autenticação com sistema de login, guarda de rotas e cadastro de usuários no banco de dados MySQL

Times-de-Futebol-BR Descrição do Projeto Aplicação criada com Angular e Laravel em conjunto para fazer um treinamento de autenticação com sistema de l

Lucas Henrique Pessutto 5 Mar 14, 2022
Formulário de contato utilizando HTML, CSS, Bootstrap, PHP, Javascript e conexão ao banco de dados MySQL.

Formulário de Contato Tecnologias | Projeto | Licença | ?? Tecnologias Esse projeto foi desenvolvido com as seguintes tecnologias: HTML CSS PHP JavaSc

Douglas Duarte 3 Feb 10, 2022
💻 ➔ Projeto de um website que possuí um Banco de Dados, feito juntamente com minha amiga Helena (hmiranda99).

?? Barber Shop Duhel Website feito para o projeto final do 2º Módulo da matéria de PW2. Visite o site clicando aqui ?? Autores ??‍?? Helena Miranda ??

Eduardo Sousa 2 Jul 4, 2022
Projeto de uma página de login desenvolvido totalmente em PHP (puro) - com conexão a banco de dados MySQL.

Projeto Página de Login com conexão à Banco de dados: Tecnologias Utilizadas: HTML(Em documento PHP); PHP (Sem a utilização de Frameworks - puro); MyS

null 1 Jun 15, 2022