No puedo entender qué clave principal de rango está aquí:
¿Y, cómo funciona?
¿Qué quieren decir con "índice hash desordenado en el atributo hash y un índice de rango ordenado en el atributo de rango"?
No puedo entender qué clave principal de rango está aquí:
¿Y, cómo funciona?
¿Qué quieren decir con "índice hash desordenado en el atributo hash y un índice de rango ordenado en el atributo de rango"?
" Clave primaria de hash y rango " significa que una sola fila en DynamoDB tiene una clave primaria única compuesta por la clave hash y la clave de rango . Por ejemplo, con una clave hash de X y una clave de rango de Y , su clave principal es efectivamente XY . También puede tener varias teclas de rango para la misma clave hash, pero la combinación debe ser única, como XZ y XA . Usemos sus ejemplos para cada tipo de tabla:
Clave primaria de hash: la clave principal está compuesta de un atributo, un atributo hash. Por ejemplo, una tabla ProductCatalog puede tener ProductID como clave principal. DynamoDB crea un índice hash desordenado en este atributo de clave principal.
Esto significa que cada fila está desconectada de este valor. Cada fila en DynamoDB tendrá un valor único requerido para este atributo . El índice hash desordenado significa lo que dice: los datos no están ordenados y no se le da ninguna garantía sobre cómo se almacenan los datos. Usted no será capaz de realizar consultas en un índice desordenada como Tráeme todas las filas que tienen un mayor ProductID que X . Escribe y recupera elementos en función de la clave hash. Por ejemplo, me Obtener la fila de esa tabla que tiene ProductID X . Está realizando una consulta contra un índice desordenado, por lo que sus contrastes son básicamente búsquedas de valor clave, son muy rápidas y usan muy poco rendimiento.
Clave principal de hash y rango: la clave principal está compuesta por dos atributos. El primer atributo es el atributo hash y el segundo atributo es el atributo de rango. Por ejemplo, la tabla de subprocesos del foro puede tener ForumName y Asunto como clave principal, donde ForumName es el atributo hash y Asunto es el atributo de rango. DynamoDB crea un índice hash desordenado en el atributo hash y un índice de rango ordenado en el atributo de rango.
Esto significa que la clave principal de cada fila es la combinación de la clave hash y range . Puede obtener entradas directas en filas individuales si tiene tanto la clave hash como la clave de rango, o puede realizar una consulta contra el índice de rango ordenado . Por ejemplo, obtenga Obtenerme todas las filas de la tabla con la tecla Hash X que tengan teclas de rango mayores que Y u otras consultas a ese efecto. Tienen un mejor rendimiento y un menor uso de capacidad en comparación con los análisis y consultas en los campos que no están indexados. De su documentación :
Los resultados de la consulta siempre se ordenan por la tecla de rango. Si el tipo de datos de la clave de rango es Número, los resultados se devuelven en orden numérico; de lo contrario, los resultados se devuelven en orden de valores de código de caracteres ASCII. Por defecto, el orden de clasificación es ascendente. Para invertir el orden, establezca el parámetro ScanIndexForward en falso
Probablemente me perdí algunas cosas mientras escribía esto y solo rasqué la superficie. Hay muchos más aspectos a tener en cuenta al trabajar con tablas DynamoDB (rendimiento, consistencia, capacidad, otros índices, distribución de claves, etc.). Debe echar un vistazo a las tablas de muestra y la página de datos para ver ejemplos.
Como todo se está mezclando, echemos un vistazo a su función y código para simular lo que significa concisamente
La única forma de obtener una fila es a través de la clave primaria
getRow(pk: PrimaryKey): Row
La estructura de datos de la clave principal puede ser esta:
Sin embargo, puede decidir que su clave principal es clave de partición + clave de clasificación en este caso:
De cualquier manera, obtienes una sola fila por clave primaria, la única pregunta es si definiste que la clave primaria es solo clave de partición o clave de partición + clave de clasificación
Los bloques de construcción son:
Piense en Item como una fila y en KV Attribute como celdas en esa fila.
Puede hacer (2) solo si decidió que su PK está compuesta de (HashKey, SortKey).
Más visualmente como complejo, tal como lo veo:
Entonces, ¿qué está pasando arriba? Observe las siguientes observaciones. Como dijimos, nuestros datos pertenecen a (Tabla, Elemento, Atributo KVA). Entonces cada artículo tiene una clave primaria. Ahora, la forma en que compones esa clave primaria es significativa sobre cómo puedes acceder a los datos.
Si decide que su PrimaryKey es simplemente una clave hash, entonces puede obtener un solo elemento. Sin embargo, si decide que su clave principal es hashKey + SortKey, también puede hacer una consulta de rango en su clave principal porque obtendrá sus elementos mediante (HashKey + SomeRangeFunction (en la tecla de rango)). Para que pueda obtener varios elementos con su consulta de clave principal.
Nota: no me referí a índices secundarios.
fuente
@Mkobit ya ha dado una respuesta bien explicada, pero agregaré una imagen general de la clave de rango y la clave hash.
En pocas palabras,
range + hash key = composite primary key
CoreComponents of DynamodbEntonces, ambos tienen un propósito diferente y juntos ayudan a hacer consultas complejas. En el ejemplo anterior
hashkey1 can have multiple n-range.
Otro ejemplo de rango y hashkey es el juego, el(hashkey)
usuario A puede jugar a Ngame(range)
https://www.slideshare.net/InfoQ/amazon-dynamodb-design-patterns-best-practices https://www.slideshare.net/AmazonWebServices/awsome-day-2016-module-4-databases-amazon-dynamodb -and-amazon-rds https://ceyhunozgun.blogspot.com/2017/04/implementing-object-persistence-with-dynamodb.html
fuente
Music
tabla, un artista no puede producir dos canciones con el mismo título, pero sorpresa: en los videojuegos tenemos Doom de 1993 y Doom de 2016 en.wikipedia.org/wiki/Doom_(franchise) con el mismo "artista" ( desarrollador):id Software
.@vnr puede recuperar todas las claves de clasificación asociadas con una clave de partición simplemente usando la consulta usando la clave de partición. No es necesario escanear. El punto aquí es que la clave de partición es obligatoria en una consulta. La clave de clasificación se usa solo para obtener un rango de datos
fuente