unique-constraint amazon-dynamodb

unique constraint - ¿Hay una manera de imponer una restricción única en una propiedad(campo) diferente a la clave primaria en dynamodb



unique-constraint amazon-dynamodb (1)

En dynamodb, si desea imponer la unicidad en un campo que no sea la clave principal (por ejemplo, si tiene una tabla de usuarios y desea direcciones de correo electrónico únicas para los usuarios, mientras que la clave principal es un ID de usuario que es un número), existe una forma distinta de escanear La tabla para ver si el correo electrónico ya está en uso?


Respuesta corta: No.

DynamoDB es una clave: almacén de valores. Es muy bueno para recuperar / guardar artículos rápidamente porque hace un par de compromisos. Esta es una restricción que debes manejar tú mismo.

Sin embargo, dependiendo de su modelo real, podría ser una buena idea usar este campo como hash_key o considerar usar una range_key

Si esto no es posible, le aconsejo que des-normalice sus datos. Actualmente tienes algo como:

UserTable

  • hash_key : user_id
  • e-mail
  • ...

Para garantizar la unicidad, agregue una nueva tabla con este esquema:

EmailUser

  • hash_key : correo electrónico
  • user_id

Para asegurarse de que un correo electrónico sea único, simplemente GetItem un GetItem a EmailUser antes.

Este tipo de des-normalización es bastante común con las bases de datos No-SQL.