Saltar al contenido principal

Partición

Una partición es una porción del keyspace de un almacén. Las claves se dispersan (hash) en particiones, cada partición es propiedad de un nodo a la vez, y las particiones llevan nombres de código estables para que puedas seguirlas por todo el clúster.

Qué es una partición​

Una partición es la unidad de propiedad y replicación dentro de un almacén. El keyspace del almacén se divide en particiones; cada clave pertenece a exactamente una partición, y cada partición es propiedad de exactamente un nodo a la vez — su primario — más cero o más réplicas en otros nodos. Dividir el keyspace de esta forma es cómo un almacén escala más allá de lo que un solo nodo puede contener y servir.

De una clave a una partición​

Enrutar una clave a una partición es determinista, de modo que cada cliente calcula la misma ruta sin coordinarse. Ocurre en dos pasos.

  1. Clave a segmento. Cada clave se dispersa (hash) en uno de un número fijo de segmentos (hash slots). Una clave dada siempre cae en el mismo segmento.
  2. Segmento a partición. Los segmentos se agrupan en particiones. Una partición posee un conjunto contiguo de segmentos.

Los segmentos, no las claves individuales, son lo que se mapea a las particiones. Por eso el rebalanceo mueve segmentos entre particiones y nodos en lugar de volver a hacer el hash de las claves — las claves viajan con su segmento intactas.

Recuento de particiones​

Normalmente no estableces un recuento absoluto de particiones. Estableces particiones por nodo, que por defecto es 1, y el total se deriva como particiones por nodo × nodos vivos. El total se recalcula en cada cambio de pertenencia, de modo que sigue la forma del clúster en lugar de quedar congelado en el momento de la creación.

  • La topología de producción mantiene el valor predeterminado de una partición por nodo.
  • Las pruebas locales elevan las particiones por nodo — por ejemplo, 4 — para que puedas observar comportamientos conscientes de la partición, como el enrutamiento por segmentos y el rebalanceo de escalado, en una sola máquina.

Nombres de código​

Cada partición se identifica mediante una palabra de código estable — Amber, Onyx, Jade, Opal, Topaz, y así sucesivamente — en lugar de un número escueto. La palabra se deriva del serial estable y monótono de la partición, de modo que la misma partición conserva la misma palabra en todos los procesos y a través de reinicios y cambios de propiedad. La lista de palabras es deliberadamente no geográfica (gemas, metales, árboles, aves, clima, estrellas y similares) y está libre de colisiones dentro de un ciclo de 500 palabras.

El objetivo es operativo: en la consola y en los diagnósticos puedes seguir a Amber a medida que se mueve de un nodo a otro durante un failover o un rebalanceo, en lugar de correlacionar índices de partición anónimos entre instantáneas.

La partición frente a los términos que los lectores confunden con ella​

Una partición es una porción lógica de datos, lo que la distingue del proceso que la contiene y de una copia redundante de ella.

  • Una partición no es un nodo. Un nodo es un proceso; una partición es datos que el nodo contiene. Un nodo puede contener varias particiones.
  • Una partición no es una réplica. Una réplica es una copia de una partición en otro nodo. La partición es la cosa; sus réplicas son copias adicionales de ella.
  • Una partición no es un almacén. Un almacén es el keyspace completo; una partición es una porción de él.
tip

La vista de Nodos de la consola muestra qué particiones contiene cada nodo — cuáles posee como primario y cuáles mantiene como réplica — por palabra de código.

Próximos pasos​