Estudo Sobre Tratamento de Concorrencia de Dados no DB
Data: 24/08/202216/09/21
Autores:
- Alan da Silva Souza (Assessor)
- Gabriel Santi Binda (Assessor)
- Raissa de Sousa Stolduski (Assessor)
- Taillon Miguel
GonçGonçalves (Assessor)
1. Objetivo
O Objetivo do estudo apresentado, éé levantar causas e possípossíveis soluçõsoluções para a concorrêconcorrência de dados em um determinado banco de dados, utilizando algumas tétécnicas criadas para melhorar e corrigir esse problema.
2. IntroduçãIntrodução
A concorrêconcorrência de dados, éé um problema comum e bem conhecido entre os gestores de bancos de dados e tambétambém, pelos desenvolvedores, um problema que acaba se agravando quando se têtêm muitos usuáusuários acessando um mesmo banco. Ela ocorre quando, em um banco de dados, usuáusuários distintos tentam acessar a mesma informaçãinformação e entãentão para corrigir o problema, éé feito um controle entre essas transaçõtransações.
Figura 1: exemplificando a concorrêconcorrência em uma tabela.
Podemos ver na figura 1, que existem 3 usuáusuários tentando acessar a mesma tabela, e que se nãnão houvesse um controle, os dados ali poderiam ficar com a integridade comprometida.
3. Desenvolvimento
3.1 Controle de
concorrêconcorrência
Controle de concorrêconcorrência éé quando, em um banco de dados, usuáusuários distintos tentam acessar a mesma informaçãinformação e entãentão éé feito um controle entre essas transaçõtransações. E para a soluçãsolução deste problema existem diversas tétécnicas de controle de concorrêconcorrência que sãsão utilizadas como forma de assegurar a propriedade de nãnão interferêinterferência entre uma operaçãoperação e outra, ou o isolamento das transaçõtransações executadas ao mesmo tempo, grande parte dessas tétécnicas garante a serializaçãserialização, que éé a execuçãexecução das transaçõtransações de forma serial. Para isso, éé necessánecessário saber que transaçõtransações sãsão todas as operaçõoperações executadas entre o iníinício e o fim da transaçãtransação
3.2
TéTécnica de bloqueio
A tétécnica de bloqueio em duas fases para controle de concorrêconcorrência éé baseado no bloqueio de itens de dados, sendo que, chamamos de bloqueio uma variávariável que fica atrelada ao item de dados. Este bloqueio pode ser binábinário (possui dois valores: 1 e 0), logo, o item de dados estáestá bloqueado ou nãnão estáestá bloqueado. Permitindo que o item de dado sósó esteja acessíacessível para uma transaçãtransação apenas se a variávariável nãnão estiver bloqueada (ou estiver com valor 0). SãSão usadas duas operaçõoperações para o bloqueio binábinário, sãsão elas: lock(1) e unlock(0), quando o item de dados estáestá sendo usado, o estado da variávariável éé lock(1), assim que a transaçãtransação encerra a utilizaçãutilização do item éé emitida a operaçãoperação unlock(0), entãentão, o item jájá estáestá disponídisponível para outra transaçãtransação.
3.3
TéTécnica baseada em Timestamp
Para cada transaçãtransação iniciada, éé associado um timestamp fixo exclusivo, ou seja, antes que uma transaçãtransação tenha iníinício, o sistema de banco de dados forneceráfornecerá um rórótulo de tempo (lembrando que este éé um identificador exclusivo criado pelo SGBD para identificar uma transaçãtransação). Supondo que temos duas transaçõtransações A e B, a transaçãtransação A se iniciou no tempo 1 e a transaçãtransação B teve iníinício no tempo 2, logo, a transaçãtransação A seráserá executada primeiro que a transaçãtransação B, pois seu tempo de iníinício éé mais antigo.
Nesta tétécnica existe a possibilidade de paralisaçãparalisação de transaçõtransações longas, caso uma sésérie repetitiva de transaçõtransações curtas causar o reiníreinício da transaçãtransação longa. Caso isso ocorra, éé necessánecessário que as transaçõtransações que estãestão em conflito sejam suspensas temporariamente para permitir que a transaçãtransação seja concluíconcluída.
4.Conclusã Conclusão
ApóApós analisar as tétécnicas de gerenciamento de concorrêconcorrência descritas acima, éé possípossível que possam ser adaptadas e implementadas de alguma uma forma em cócódigo, e tambétambém, éé possípossível que surjam ideias e novas tétécnicas para que o problema possa ser resolvido, esse estudo teve o propópropósito de levantar possípossíveis soluçõsoluções para que possam ser implementadas em algum momento ao longo do desenvolvimento.
Referê5. Referências
[1] GUIRRA, Michelle. Protocolo com Base em Timestamp: controle de concorrêconcorrência em bancos de dados. 2013. DisponíDisponível em: https://www.devmedia.com.br/protocolo-com-base-em-timestamp-controle-de-concorrencia-em-bancos-de-dados/27810. Acesso em: 16 set. 2021.
[2] UFBA. TransaçõTransações e ConcorrêConcorrência. DisponíDisponível em: http://formas.ufba.br/dclaro/mata60/Aula%2012%20-%20Transacoes%20e%20Concorrencia.pdf. Acesso em: 16 set. 2021.
[3] SANTANCHÈSANTANCHÈ, AndréAndré; GOMES JUNIOR, Luiz Celso. Controle de ConcorrêConcorrência. 2013. DisponíDisponível em: https://www.ic.unicamp.br/~santanch/teaching/db/2016-1/slides/bd11-concorrencia-v04.pdf. Acesso em: 16 set. 2021.
[4] GUIRRA, Michelle. Controle de concorrêconcorrência entre transaçõtransações em bancos de dados. 2013. DisponíDisponível em: https://www.devmedia.com.br/controle-de-concorrencia-entre-transacoes-em-bancos-de-dados/27756. Acesso em: 16 set. 2021.
[5] MACÊMACÊDO, Diego. Controle de ConcorrêConcorrência em Banco de Dados. 2012. DisponíDisponível em: https://www.diegomacedo.com.br/controle-de-concorrencia-em-banco-de-dados/. Acesso em: 16 set. 2021.
Glossá6. Glossário
lock - Se refere a açãação de bloquear itens de dados no banco
unlock - Se refere a açãação de desbloquear itens de dados no banco
Timestamp - ÉÉ uma marca de tempo em um item de dados do banco
ENVOLVIDOS
Alan da Silva SouzaGabriel Santi BindaRaissa de Sousa StolduskiTaillon Miguel Gonçalves