Este artigo trata do sistema de controle de concorrência utilizado pelo PostgreSQL versão 9.1, o qual permite que várias seções acessem um mesmo dado em um mesmo tempo sem que isso venha a causar a perda de integridade das informações.
Em que situação o tema é útil
O controle de concorrência é, sem dúvida, um dos mais importantes mecanismos de um SGBD. Sem ele, as quatro propriedades básicas de integridade transacional, conhecidas como ACID, não seriam respeitadas, ocasionando inconsistência de dados e perda significativa de desempenho.
Em vista deste papel fundamental que o controle de concorrência desempenha, é importante que o profissional de banco de dados conheça a fundo os conceitos envolvidos, principalmente a manipulação de transações e bloqueios explícitos. Tal conhecimento torna o desenvolvedor capacitado a desenvolver sistemas multiusuários, com alto nível de concorrência sem qualquer prejuízo a integridade dos dados.
Se você pretende desenvolver um sistema assim, utilizando o PostgreSQL como sistema gerenciador de banco de dados, então você está no lugar certo!
Resumo DevMan
O controle de concorrência é, sem dúvida, um dos mais importantes mecanismos de um SGBD. É ele que confere consistência aos dados mesmo em condições de acesso massivamente concorrente, permitindo que múltiplos usuários possam acessar um mesmo conjunto de dados num mesmo instante de tempo.
Para ter sua confiabilidade certificada, o mecanismo responsável pelo controle de concorrência deve respeitar quatro propriedades básicas, conhecidas como propriedades ACID. Juntas, elas definem o conjunto de características que norteiam a execução de uma transação na base dados, de modo que a integridade da mesma seja mantida ao final da execução.
Contudo, nem todo o trabalho fica a cargo do SGBD. O desenvolvedor de software também é responsável por manter a integridade da base através do uso adequado das ferramentas de isolamento transacional oferecidas pelo banco.
Embasado nesta premissa, apresentaremos neste artigo o conjunto de ferramentas oferecidas pelo PostgreSQL para tratar do acesso concorrente aos dados, elencando cada um dos níveis de isolamento transacional disponíveis, seu comportamento e em qual situação cada um deles é o mais adequado. Também serão apresentados comandos de bloqueio explícito, tanto de registros como de tabelas, que podem ser utilizados como um nível de controle adicional aos níveis de isolamento já oferecidos.
Grande parte das organizações, senão todas, do mundo globalizado têm em seus dados o ativo mais valioso. Os dados armazenados e, por conseguinte, as informações processadas são fatores chave para alcançar clientes, bons fornecedores, determinar e antever padrões de consumo e situações futuras de mercado.
A informação é fator estratégico para o sucesso em um mercado altamente competitivo e globalizado. Os processos de negócio devem cada vez mais ser eficientes e eficazes, com alto poder de autonomia e interação entre os envolvidos.
A necessidade por informações vem crescendo nos eixos da quantidade e da complexidade ano após ano. Atualmente é comum, por exemplo, extrair e armazenar dados sociais de clientes, obtidos das mais diversas fontes com a finalidade de estabelecer quais são as necessidades que populam a imaginação dos consumidores para com isso criar um produto que tenha maior sucesso de vendas.
É justamente neste cenário que os SGBDs (Sistemas Gerenciados de Banco de Dados) tem tido papel fundamental a décadas. Toda essa montanha de dados coletados das mais diversas fontes normalmente é armazenada em uma ou mais bases de dados e precisam estar sempre disponíveis e consistentes aos mais diferentes consumidores.
O acesso simultâneo aos dados precisa ser garantido aos mais diversos interessados, sem que qualquer inconsistência seja gerada. Cria-se, assim, um ambiente altamente transacional, onde cada usuário conectado a base de dados precisa ter a impressão de que “é o único” a acessá-la no momento.
Para garantir acesso concorrente aos dados sem gerar qualquer inconsistência aos mesmos, os SGBDs utilizam mecanismos complexos de controle de concorrência, os quais se fundamentam no respeito a um conjunto pré-estabelecido de propriedades, conhecidas pelo acrônimo ACID (Atomicidade, Consistência, Isolamento, Durabilidade).
Em vista da grande importância que o controle de concorrência tem para um SGBD, trataremos especificamente neste artigo de como ele funciona na prática utilizando como caso de estudo o PostgreSQL, versão 9.1. Serão apresentados aspectos teóricos e práticos dos níveis de isolamento transacional e comandos de bloqueio explícitos de dados oferecidos pelo SGBD.
Transação e propriedades ACID
Seria impossível falar sobre controle de concorrência sem apresentar um breve aparato sobre estes dois conceitos fundamentais de qualquer SGBD: transações e propriedades ACID. Na verdade, ambos estão intimamente ligados, de modo que a execução de uma transação deve obrigatoriamente respeitar as quatro propriedades ACID definidas.
...