Soy nuevo en DynamoDb y miré la documentación de AWS y algunas de las preguntas relacionadas con las claves Hash y Range. Después de todo eso, todavía no estoy seguro de qué significan exactamente y por qué/cómo los usarías. ¿Alguien me puede dar una explicación sencilla con un ejemplo?
Por ejemplo, si quiero crear una tabla de Movie con las columnas Name , Genre , Rating y DateReleased de publicación. Cuál sería la forma correcta de crear la tabla DynamoDb. En el siguiente ejemplo, tengo algo de CloudFormation para intentar crear lo siguiente, pero no estoy seguro de haber usado la propiedad KeySchema correctamente. Cualquier ayuda sería apreciada.
MovieTable: Type: AWS::DynamoDB::Table Properties: BillingMode: PAY_PER_REQUEST AttributeDefinitions: - AttributeName: "Name" AttributeType: "S" - AttributeName: "Genre" AttributeType: "S" - AttributeName: "Rating" AttributeType: "N" - AttributeName: "DateReleased" AttributeType: "S" KeySchema: - AttributeName: "Name" KeyType: "HASH" - AttributeName: "Genre" KeyType: "RANGE" - AttributeName: "Rating" KeyType: "RANGE" - AttributeName: "DateReleased" KeyType: "RANGE" TimeToLiveSpecification: AttributeName: ExpireAfter Enabled: false SSESpecification: SSEEnabled: trueHay 2 casos aquí
Caso 1: una clave hash consta de un solo atributo que identifica de forma única un elemento.
Por ejemplo:
una. si está diseñando una tabla para almacenar datos de estudiantes, puede definir HashKey como Student_Id
b. si está diseñando una tabla para almacenar datos de clase, puede definir HashKey como Class_Id
Caso 2: una clave hash y de rango consta de dos atributos que, juntos, identifican de forma única un elemento
Por ejemplo:
una. si está diseñando una tabla para almacenar el carrito de compras, puede definir HashKey como Product_Id y Range Key (Sort Key) como User_Id. En otras palabras, la combinación de Production_Id y User_Id debe ser única en su tabla.
b. si está diseñando una tabla para almacenar información musical, puede definir HashKey como Artista y Range Key como 'Título de la canción'. En otras palabras, la combinación de Artista y 'Título de la canción' debe ser única en su tabla.
Ahora, para su caso de uso, puede definir una tabla de películas como
HashKey: Título de la película
SortKey: fecha de lanzamiento
Género: Atributo
Calificación: Atributo
Con este diseño, se supone que solo se puede lanzar 1 'Título de película' en 1 día específico. En otras palabras, no hay posibilidad de que se estrenen varias películas con el mismo título el mismo día.
Espero que ya puedas definir la formación de nubes. Si no es así, háganoslo saber, le ayudaremos.
Hay un excelente recurso en línea para DynamoDB: DynamoDB, explicó.
De Anatomía de un artículo | DynamoDB, explicó :
Al crear una nueva tabla, deberá especificar la clave principal de esa tabla. Cada elemento de una tabla se identifica de forma única por su clave principal. En consecuencia, la clave principal debe incluirse con cada elemento que se escribe en una tabla de DynamoDB.
Hay dos tipos de claves primarias. Una clave principal simple utiliza un único atributo para identificar un elemento, como un nombre de usuario o un ID de pedido. El uso de una tabla de DynamoDB con una clave principal simple es similar al uso de la mayoría de los almacenes de clave-valor simples, como Memcached.
Una clave principal compuesta utiliza una combinación de dos atributos para identificar un elemento en particular. El primer atributo es una clave de partición (también conocida como "clave hash") que se utiliza para segmentar y distribuir elementos entre fragmentos. El segundo atributo es una clave de ordenación (también conocida como "clave de rango") que se utiliza para pedir artículos con la misma clave de partición. Una tabla de DynamoDB con una clave principal compuesta puede usar patrones de consulta interesantes más allá de las operaciones simples de obtener/establecer.
Comprender la clave principal es una parte crucial de la planificación de su modelo de datos para una tabla de DynamoDB. La clave principal será su método principal para insertar y actualizar elementos en su tabla.
Básicamente:
The Matrix (1999) , o tal vez una identificación única asignada a la película.The Simpsons , pero hay muchos episodios, por lo que la Clave de ordenación se puede usar junto con la Clave de partición para dar un nombre único, como The Simpsons: S02E12Una base de datos NoSQL es muy buena para almacenar y recuperar datos a través de la clave principal (o clave compuesta). No es bueno para 'escanear' la base de datos en busca de información, ya que esto es muy ineficiente. Por lo tanto, si la información se busca a menudo en campos no primarios (p. ej., género), podría ser ventajoso crear índices secundarios adicionales que puedan encontrar elementos a través de otros atributos. Ver: Índices Secundarios | DynamoDB, explicado.