No soy capaz de entender lo que el Rango de clave principal está aquí –

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key

y cómo funciona?

¿Qué es lo que entendemos por «desordenada hash índice en el atributo hash y de un criterio de rango de índice en el rango del atributo»?

InformationsquelleAutor Mannu | 2014-12-06

4 Comentarios

  1. 497

    «Hash y el Rango de Clave Principal» significa que una sola fila en DynamoDB tiene una única clave principal compuesta tanto por el hash y la gama clave. Por ejemplo, con un hash de la clave de X y la gama de claves de Y, la clave principal es efectivamente XY. Usted también puede tener múltiples gama de claves para el mismo hash de la clave, pero la combinación debe ser único, como XZ y XA. Vamos a utilizar sus ejemplos para cada tipo de tabla:

    Hash de Clave Principal La clave principal está hecho de un atributo, un hash
    atributo. Por ejemplo, un ProductCatalog tabla puede tener ProductID como
    su clave principal. DynamoDB construye una desordenada hash índice en esta
    los atributos de clave primaria.

    Esto significa que cada fila está diseñado de forma que fuera de este valor. Cada fila en DynamoDB tendrá un requerida, único valor para este atributo. Desordenada hash índice significa lo que dice – los datos no está ordenado y no se les da ningún tipo de garantías en cómo se almacenan los datos. Usted no será capaz de hacer consultas en una desordenada índice como de hacerme todas las filas que tienen un ProductID mayor que X. Escribir y recuperar los elementos basándose en la clave hash. Por ejemplo, me la fila de la tabla que ha ProductID X. Usted está haciendo una consulta en una desordenada índice por lo que su pone que están en contra son básicamente clave-valor de las búsquedas son muy rápidas, y el uso de muy poco rendimiento.


    Hash y el Rango de Clave Principal La clave principal está hecho de dos
    los atributos. El primer atributo es el hash de atributo y el segundo
    atributo es el atributo de rango. Por ejemplo, en el Hilo del foro de la tabla
    puede tener ForumName y Sujeto como clave principal, donde ForumName es
    el hash de atributo y el Sujeto es el atributo de rango. DynamoDB construye
    una desordenada hash índice en el atributo hash y de un criterio de rango de índice de
    en el rango de atributos.

    Esto significa que cada fila de la clave principal es la combinación de hash y de la gama de claves. Usted puede hacer directo se presenta en una sola filas si tiene el hash y el rango de la clave, o usted puede hacer una consulta en contra de la ordenados rango de índice de. Por ejemplo, obtener de hacerme todas las filas de la tabla con la clave Hash de X que tienen rango de teclas de mayor que Y, u otras consultas a las que afectan. Ellos tienen un mejor rendimiento y un menor uso de la capacidad en comparación con los exámenes y Consultas en campos que no están indexadas. De su documentación:

    Los resultados de la consulta son siempre ordenados por la tecla range. Si el tipo de datos de
    la gama de claves es el Número, los resultados se devuelven en orden numérico;
    de lo contrario, los resultados se devuelven en orden de código de caracteres ASCII
    valores. Por defecto, el orden es ascendente. Para invertir el orden,
    establecer el ScanIndexForward parámetro a false

    Probablemente me lo perdí algunas cosas, como escribí esto y sólo he arañado la superficie. Hay mucho más aspectos a tener en cuenta cuando se trabaja con tablas de DynamoDB (el rendimiento, la coherencia, la capacidad, otros índices de distribución de claves, etc.). Usted debe echar un vistazo a la muestra las tablas y los datos página de ejemplos.

    • este es uno de los más útiles de desbordamiento de pila respuestas que he leído jamás.
    • ¿Por qué no hay opción de usar sólo la gama sin hash? Por ejemplo, si todos los datos se almacenan con su marca de tiempo como los de clave principal, me gustaría ser capaz de recoger todos los datos entre las 2 y las 4 PM en 10/15/2015″
    • la clave hash se utiliza para identificar la partición que contiene el elemento(s). Sin ella, DynamoDB no que la partición a buscar en. No saber dónde buscar derrota a una Consulta, y es el caso de uso para un análisis (Global o Índice Secundario, pero que no es adecuado para su uso caso de uso nada, pero una serie de tiempo para seleccionar los datos).
    • hay alguna manera de que yo pueda recuperar todas las claves de ordenación dado la clave de partición sin hacer análisis?
    • No estoy seguro de entender tu pregunta en el contexto de DynamoDB. Estás diciendo obtener todos los hash+rango de teclas cuando se provee una clave hash?
    • Sí. Esa es mi pregunta.
    • Creo que la respuesta a tu pregunta es el uso de la Query API, pero podría ser malentendido ella.
    • Sólo un heads up: Hash y el Rango de teclas de Partición con nombre y claves de Ordenación. Excelente escritura, gracias!
    • Interesante @ishegg ! Voy a tener que hacer un poco de tiempo para actualizar esto, ya que yo no sé acerca de los cambios de nombre.

  2. 10

    Como toda cosa es mezclar. Primero los bloques de construcción son:

    1. Tabla
    2. Elemento
    3. KV Atributo.

    Pensar como Elemento de una fila y de KV Atributo como celdas de esa fila.

    1. Usted puede conseguir un elemento (una fila) por clave primaria.
    2. Usted puede conseguir varios elementos (varias filas) especificando (HashKey, RangeKeyQuery)

    Que usted puede hacer (2) sólo si usted decide que su pico se compone de (HashKey, SortKey).

    Más visualmente como su complejo, la forma en que yo lo veo:

    +----------------------------------------------------------------------------------+
    |Table                                                                             |
    |+------------------------------------------------------------------------------+  |
    ||Item                                                                          |  |
    ||+-----------+ +-----------+ +-----------+ +-----------+                       |  |
    |||primaryKey | |kv attr    | |kv attr ...| |kv attr ...|                       |  |
    ||+-----------+ +-----------+ +-----------+ +-----------+                       |  |
    |+------------------------------------------------------------------------------+  |
    |+------------------------------------------------------------------------------+  |
    ||Item                                                                          |  |
    ||+-----------+ +-----------+ +-----------+ +-----------+ +-----------+         |  |
    |||primaryKey | |kv attr    | |kv attr ...| |kv attr ...| |kv attr ...|         |  |
    ||+-----------+ +-----------+ +-----------+ +-----------+ +-----------+         |  |
    |+------------------------------------------------------------------------------+  |
    |                                                                                  |
    +----------------------------------------------------------------------------------+
    
    +----------------------------------------------------------------------------------+
    |1. Always get item by PrimaryKey                                                  |
    |2. PK is (Hash,RangeKey), great get MULTIPLE Items by Hash, filter/sort by range     |
    |3. PK is HashKey: just get a SINGLE ITEM by hashKey                               |
    |                                                      +--------------------------+|
    |                                 +---------------+    |getByPK => getBy(1        ||
    |                 +-----------+ +>|(HashKey,Range)|--->|hashKey, > < or startWith ||
    |              +->|Composite  |-+ +---------------+    |of rangeKeys)             ||
    |              |  +-----------+                        +--------------------------+|
    |+-----------+ |                                                                   |
    ||PrimaryKey |-+                                                                   |
    |+-----------+ |                                       +--------------------------+|
    |              |  +-----------+   +---------------+    |getByPK => get by specific||
    |              +->|HashType   |-->|get one item   |--->|hashKey                   ||
    |                 +-----------+   +---------------+    |                          ||
    |                                                      +--------------------------+|
    +----------------------------------------------------------------------------------+
    

    Entonces, ¿qué está pasando por encima. Observe las siguientes observaciones. Como hemos dicho nuestros datos pertenece (de la Tabla, Elemento, KVAttribute). A continuación, Cada Elemento tiene una clave principal. Ahora, la manera de componer que la clave principal es significativo en cómo usted puede tener acceso a los datos.

    Si usted decide que su PrimaryKey es simplemente una clave hash, entonces bien puede obtener un solo punto fuera de ella. Si usted decide, sin embargo, que la clave principal es hashKey + SortKey entonces también se puede hacer una consulta de rango en su clave primaria porque usted recibirá sus artículos por (HashKey + SomeRangeFunction(en la gama de claves)). Así que usted puede conseguir varios artículos con su clave principal de la consulta.

    Nota: yo no se refieren a los índices secundarios.

  3. 1

    Un bien explicado respuesta ya está dada por @mkobit, pero voy a añadir una foto grande de la gama de claves y el hash de la clave.

    En palabras simples range + hash key = composite primary key CoreComponents de Dynamodb
    ¿Qué es el Hash y el Rango de Clave Principal?

    Una clave principal se compone de una clave hash y un rango opcional clave.
    Clave Hash se utiliza para seleccionar el DynamoDB partición. Las particiones son
    partes de la tabla de datos. Rango de teclas se utilizan para ordenar los elementos en la
    de la partición, si es que existen.

    Por lo tanto tiene un propósito diferente y juntos ayudar a hacer la consulta compleja.
    En el ejemplo anterior hashkey1 can have multiple n-range. Otro ejemplo de la gama y el hashkey es un juego, userA(hashkey) puede jugar Ngame(range)

    ¿Qué es el Hash y el Rango de Clave Principal?

    La Música de la tabla se describe en las Tablas, Elementos y Atributos, es un
    ejemplo de una tabla con una clave principal compuesta (Artista y
    SongTitle). Se puede acceder a cualquier elemento de la Música de la tabla directamente, si
    usted proporciona el Artista y SongTitle valores para ese elemento.

    Una clave principal compuesta da más flexibilidad a la hora de consultar
    de datos. Por ejemplo, si usted proporciona sólo el valor para el Artista, DynamoDB
    recupera todas las canciones de ese artista. Para recuperar sólo un subconjunto
    de las canciones de un artista en particular, puede proporcionar un valor para el Artista
    junto con un rango de valores para SongTitle.

    ¿Qué es el Hash y el Rango de Clave Principal?

    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

  4. 0

    @vnr puede recuperar todas las claves de ordenación asociado con una clave de partición por el solo uso de la consulta mediante la partición de la clave. No hay necesidad de escanear. El punto aquí es la clave de partición es obligatoria en una consulta . La clave de ordenación sólo se utilizan para obtener el rango de datos

Dejar respuesta

Please enter your comment!
Please enter your name here