AWS añadió claves foráneas a Aurora DSQL, su base de datos SQL distribuida y compatible con PostgreSQL. La ausencia de esta función había sido una barrera para trasladar aplicaciones que dependen de la integridad referencial. Ahora la base de datos puede impedir relaciones inválidas entre tablas y aplicar acciones como CASCADE o SET NULL cuando se modifican o eliminan filas relacionadas.

La implementación se ajusta al modelo de transacciones concurrentes de Aurora DSQL. El servicio verifica las relaciones frente a una instantánea consistente y comprueba conflictos al confirmar la transacción, sin bloquear tablas completas. Si dos operaciones concurrentes producen una situación incompatible, una transacción puede fallar con un error de serialización. Por eso las aplicaciones deben estar preparadas para reintentar operaciones. AWS también recomienda mantener estables las columnas usadas como claves cuando muchas filas hacen referencia a ellas, para reducir conflictos.

La mejora acerca Aurora DSQL a las necesidades de sistemas relacionales existentes, pero añade trabajo a las operaciones de escritura sobre tablas que referencian o son referenciadas. AWS advierte que esas operaciones requieren lecturas adicionales y aconseja medir el rendimiento con la carga real antes de añadir restricciones de forma generalizada. La recepción inicial ha sido favorable porque elimina un obstáculo de adopción citado desde el lanzamiento del servicio; aun así, el efecto en rendimiento dependerá de cómo se distribuyan las relaciones y de la concurrencia de cada aplicación.

Glosario

Clave foránea
Columna o conjunto de columnas que relaciona una fila con otra tabla y permite exigir que esa referencia sea válida.
Integridad referencial
Reglas que impiden que las relaciones entre filas de distintas tablas queden rotas.
Instantánea consistente
Vista estable de los datos que una transacción utiliza para comprobar relaciones mientras otras transacciones siguen trabajando.
Error de serialización
Fallo que obliga a repetir una transacción cuando un conflicto concurrente impide confirmarla de forma consistente.