CRUD é o acrônimo de CREATE, READ, UPDATE e DELETE, ou Criar, Ler, Atualizar e Excluir. Esses termos descrevem as quatro operações essenciais para a criação e o gerenciamento de elementos de dados persistentes, principalmente em bancos de dados relacionais e NoSQL.
Esta postagem descreverá como as operações CRUD são usadas para processamento de dados. Também mostraremos os problemas que administradores do sistema ou engenheiros de DevOps podem encontrar ao monitorar um banco de dados.
Explicação do CRUD
Como mencionado, as operações CRUD são usadas em aplicações de armazenamento persistente, ou seja, elas manterão seus dados mesmo após o desligamento do sistema. Elas são diferentes das operações feitas em dados contidos em armazenamento volátil, como memória de acesso randômico ou arquivos de cache.
As operações CRUD são usadas amplamente em aplicações de bancos de dados, incluindo sistemas de gerenciamento de banco de dados relacional (RDBMS) como Oracle, MySQL e PostgreSQL. Também incluem bancos de dados NoSQL como MongoDB, Apache Cassandra e AWS DynamoDB.
Operações semelhantes às CRUD podem ser executadas em estruturas de dados persistentes, como arquivos. Por exemplo, você pode criar, atualizar, ler e até mesmo excluir um documento do Microsoft Word no Explorador de Arquivos. No entanto, arquivos não são orientados a registros (ou orientados a documentos, no caso do MongoDB ou do Couchbase). A terminologia CRUD é especificamente relacionada a operações orientadas a registros em vez de operações de arquivo simples.
CREATE
A operação CREATE adiciona um novo registro a um banco de dados. No RDBMS, uma linha de tabela de um banco de dados é chamada de registro, enquanto colunas são chamadas de atributos ou campos. A operação CREATE adiciona um ou mais registros novos com valores distintos de campo em uma tabela.
O mesmo princípio se aplica a bancos de dados NoSQL. Se o banco de dados NoSQL for orientado a documentos, o novo documento (por exemplo, um documento formatado em JSON com seus atributos) será adicionado à coleção, o que é o equivalente a uma tabela de RDBMS. Da mesma forma, em bancos de dados NoSQL como o DynamoDB, a operação CREATE adiciona um item (equivalente a um registro) à tabela.
READ
READ retorna registros (ou documentos ou itens) de uma tabela de banco de dados (ou coleção ou bucket) com base em alguns critérios de pesquisa. A operação READ pode retornar todos os registros e alguns ou todos os campos.
UPDATE
UPDATE é usado para modificar registros existentes no banco de dados. Pode ser a alteração, por exemplo, do endereço em um banco de dados de clientes ou do preço em um banco de dados de produtos. Semelhante à operação READ, UPDATE pode ser aplicada em todos os registros ou apenas em alguns, com base em critérios.
Uma operação UPDATE pode modificar e fazer persistir alterações em um único campo ou em vários do registro. Se vários campos serão atualizados, o sistema de banco de dados garantirá que todos sejam atualizados ou nenhum. Alguns sistemas de big data não implementam UPDATE, permitindo apenas uma operação CREATE com carimbo de data/hora, adicionando uma nova versão da linha toda vez.
DELETE
As operações DELETE permitem ao usuário remover registros do banco de dados. Uma exclusão permanente remove o registro totalmente, enquanto uma exclusão temporária sinaliza o registro, mas o deixa no lugar. Por exemplo, isso é importante em folhas de pagamento, em que os registros de emprego precisam ser mantidos mesmo após um funcionário ter deixado a empresa.
Como é a execução de CRUD em um banco de dados?
No RDBMS, as operações CRUD são executadas por meio de comandos Structure Query Language (SQL).
- A instrução INSERT é usada para CREATE:
INSERT INTO
- A instrução SELECT é usada para READ:
SELECT field 1, field 2, …FROM
- A instrução UPDATE é usada para UPDATE:
UPDATE
- A instrução DELETE é usada para DELETE:
DELETE FROM
As operações CRUD em bancos de dados NoSQL vão depender da linguagem da plataforma de banco de dados específica. Por exemplo, o CQL do Cassandra é muito semelhantes ao SQL. Por outro lado, no MongoDB, as operações são executadas com funções integradas:
- CREATE is performed through
db.collection.insertOne()ordb.collection.insertMany(). The first one adds one document, and the latter adds many documents to a database collection. - READ is performed through
db.collection.find()ordb.collection.findOne(). - UPDATE is performed through
db.collection.updateOne(),db.collection.updateMany(), ordb.collection.replaceOne(). - DELETE is performed through
db.collection.deleteOne()ordb.collection.deleteMany().
Desenvolvedores de banco de dados ou DBAs frequentemente executam instruções CRUD de forma manual em relação ao banco de dados de uma ferramenta do cliente. No entanto, na maioria dos casos de uso de produção, essas instruções são integradas no código da linguagem de programação. Quando o programa é executado, a API do banco de dados de destino recebe a instrução CRUD e a converte na linguagem nativa do banco de dados.
Por exemplo, quando um visitante de um website de e-commerce iniciar o processo de registro do usuário, um microsserviço escrito em Python ou Java pode ler os valores de entrada (como nome, sobrenome, e-mail e assim por diante) e criar dinamicamente um comando PL/SQL do Oracle. Em seguida, essa instrução é enviada à biblioteca do driver do Oracle, que a executa em relação ao banco de dados.
Exemplos de operações CRUD
Vamos continuar com o exemplo da loja de e-commerce.
- Quando uma usuária cria um registro de cliente com CREATE, ela pode ler o estoque com READ navegando no catálogo do produto.
- Quando ela faz um pedido, o sistema de back-end atualiza o estoque com UPDATE temporariamente para refletir o número reduzido de itens disponíveis.
- Quando ela compra o item, UPDATE se torna permanente, e outros usuários lendo o número de itens disponíveis com READ podem ver a alteração. Enquanto isso, outro processo CREATE cria um registro no banco de dados da empresa de transporte, notificando-a da solicitação de envio.
- Se a usuária remover um item do carrinho de compras, um registro temporário adicionado à tabela "vendas" é excluído com DELETE.
Em uma agência de viagens on-line, um usuário pode usar CREATE para criar uma solicitação de reserva, ler os voos disponíveis para a rota desejada com READ e fazer uma compra. Isso utilizará UPDATE para atualizar uma lista de assentos disponíveis no voo e CREATE para criar vários registros na tabela "itinerário". Se o usuário encerrar a sessão no meio do caminho, todas as linhas relacionadas a essa transação serão excluídas com DELETE.
Testes das operações CRUD
As operações de software envolvendo CRUD são geralmente testadas em caixa preta. Quando os testadores executam certas operações, eles verificam o banco de dados de back-end em vez que analisar o código para ver se as alterações desejadas foram realizadas ou se os dados corretos foram retornados. Esses testes visam validar cada operação CRUD que resulta de várias interações possíveis do usuário em diferentes cenários.
CRUD e desempenho do banco de dados
O design eficiente de banco de dados é um pré-requisito para operações CRUD ideais. Sem um bom design, as operações CRUD podem afetar de maneira adversa o desempenho do banco de dados.
Por exemplo, operações como UPDATE ou DELETE exigem bloqueios exclusivos nas linhas (e seus recursos relacionados, como páginas ou índices de dados). Os bloqueios garantem que quando mais uma linha for modificada, ela não ficará disponível a outros processos ou usuários para nenhuma operação CRUD. Isso serve para garantir a integridade dos dados.
Não é possível ler um registro quando ele está sendo excluído ou permitir a dois ou mais usuários atualizar um único registro simultaneamente. Outros tipos de bloqueios, como bloqueios compartilhados, permitem READ simultâneo. Os bloqueios podem ser configurados no nível do banco de dados ou da instrução, e diferentes tipos de bloqueio determinarão quais operações CRUD serão permitidas e como se comportarão.
Evidentemente, o tipo de bloqueio e o número de bloqueios simultâneos devido a sessões de usuário afetarão o desempenho de um banco de dados. Por exemplo, um website de e-commerce movimentado com centenas ou milhares de usuários simultâneos terá muitos bloqueios em operação ao mesmo tempo. O resultado pode ser uma capacidade de resposta lenta enquanto o usuário aguarda que os bloqueios sejam liberados.
Esse desafio de desempenho é o motivo pelo qual administradores de banco de dados trabalham para assegurar que as operações CRUD possam ser concluídas o mais rápido possível. Isso requer um ajuste de consulta baseado em feedback das soluções de monitoramento. Essas soluções podem mostrar os bloqueios atuais do banco de dados, as métricas e os logs para ajudar o administrador a identificar possíveis gargalos.
Descubra a plataforma nativa de IA de liderança mundial para SIEM e gerenciamento de log de última geração
Eleve sua cibersegurança com o CrowdStrike Falcon®, a principal plataforma nativa de IA para SIEM e gerenciamento de log. Experimente registro de log de segurança em uma escala de petabytes, optando por nativo em nuvem ou implementação auto-hospedada. Registre seus dados com uma arquitetura avançada e livre de índices, sem gargalos e que permite investigação de ameaças com mais de 1 PB de ingestão de dados por dia. Assegure capacidades de pesquisa em tempo real para superar os adversários, atingindo latência de menos de um segundo para consultas complexas. Beneficie-se de uma visibilidade de 360 graus, consolidando os dados para eliminar silos e possibilitar que as equipes de segurança, TI e DevOps investiguem ameaças, monitorem o desempenho e garantam a conformidade perfeitamente em 3 bilhões de eventos e em menos de um segundo.