A AWS anunciou recentemente que o Aurora DSQL agora suporta restrições de chave estrangeira, permitindo que as aplicações implementem integridade referencial diretamente no banco de dados, incluindo operações como CASCADE, SET NULL e outras ações referenciais. Esse recurso colmata uma lacuna que existia há tempos e que usuários haviam explicitamente apontado como um bloqueador para adoção.
O Aurora DSQL é um banco de dados SQL serverless, distribuído e compatível com PostgreSQL, projetado para aplicações altamente disponíveis e escaláveis. De acordo com a documentação, o Aurora DSQL implementa integridade referencial através de verificação de snapshot durante transações e detecção de conflitos no momento do commit. O serviço verifica relacionamentos de chave estrangeira contra um snapshot de transação consistente sem bloquear tabelas, permitindo operações concorrentes, e utiliza verificações implícitas de KEY SHARE no commit para detectar mudanças conflitantes; transações que violariam uma restrição são rejeitadas com erro de serialização.
As aplicações devem implementar lógica de retry porque conflitos concorrentes resultam em falhas de transação em vez de espera. Para linhas frequentemente referenciadas, a AWS sugere evitar colunas de chave que mudem com frequência; em vez disso, mantenha as chaves referenciadas estáveis e mova valores que mudam para colunas que não sejam chave, reduzindo conflitos de transação.
Marc Brooker, Vice-Presidente e Distinguished Engineer da AWS, destaca que o Aurora DSQL utiliza o Adjudicator e o mecanismo KEY SHARE do PostgreSQL para detectar mudanças em linhas relevantes no momento do commit sem bloquear leituras concorrentes:
"Sem bloqueio, sem mudança de escalabilidade para leituras não-FKC, leitores de FKC nunca causam abortos em outros leitores, e ótima escalabilidade de FKC para cargas de trabalho bem distribuídas."
No LinkedIn, Luc van Donkersgoed, principal engineer na Nederlandse Spoorwegen e criador do AWS News Feed, comentou:
"Conseguiram! Aurora DSQL agora suporta chaves estrangeiras. A falta de FKs era o maior gap entre DSQL e Postgres 'normal', bloqueando muitas migrações. Essa mudança torna DSQL muito mais viável para ambientes brownfield."
Em uma thread intitulada "Amazon perdeu seu tempo construindo DSQL", a falta de restrições de chave estrangeira foi mencionada como um dos principais bloqueadores para adoção do banco de dados distribuído compatível com PostgreSQL. Marc Bowes, senior principal engineer da AWS, reconheceu na época:
"E sim, chaves estrangeiras estão chegando. Ouvimos vocês."
Quando o serviço foi anunciado na re:Invent 2024, muitos profissionais apontaram a falta de restrições de chave estrangeira entre os muitos recursos ausentes no lançamento. Um usuário escreveu:
"Então 'compatível com Postgres' é enganoso. Chaves estrangeiras são uma grande parte de RDBMS. Você não pode ter verdadeiramente dados 'relacionais' sem chaves estrangeiras."
A reação da comunidade ao novo recurso foi amplamente positiva, mas um usuário questionou no Reddit:
"Sei que esse recurso foi citado como um dos principais bloqueadores de adoção, mas isso desacelera muito. Não tenho certeza de quão bom isso vai ser considerando a arquitetura do DSQL."
A AWS observa que todas as operações DML em tabelas referenciadas ou referentes incorrem em leituras adicionais para manter a integridade referencial e que os clientes devem fazer benchmark da carga de trabalho antes de adicionar uma restrição de chave estrangeira a uma tabela.
Restrições de chave estrangeira não foram o único novo recurso adicionado recentemente ao DSQL. A AWS também adicionou CloudWatch Database Insights para monitoramento de performance e troubleshooting por statement em nível de cluster.










