2011-07-04 17 views
5

Estoy tratando de entender MongoDB y el concepto de sharding. Si comenzamos con 2 nodos y partición, digamos datos de cliente, basados ​​en el apellido donde se almacenan datos de A a M en el nodo 1 y N a Z los datos se almacenan en el nodo 2. ¿Qué sucede cuando queremos escalar y agregar más nodos? ? Simplemente no veo cómo funcionará.MongoDB sharding, ¿cómo se equilibra al agregar nuevos nodos?

Respuesta

5

Si tiene 2 nodos, no significa que los datos estén divididos en 2 fragmentos. Se puede por particiones de digamos 10 trozos y 6 de ellos se encuentran en el servidor 1 ane resto está en el servidor 2.

Cuando se agrega otro servidor MongoDB es capaz de redistribuir esos trozos entre los nodos de nueva configuración

Usted puede leer más en documentos oficiales:

3

Si hay varios fragmentos disponibles, MongoDB comenzará a migrar datos a otros fragmentos una vez que tenga una cantidad suficiente de fragmentos. Esta migración se denomina balanceo y es realizada por un proceso llamado equilibrador. El equilibrador mueve trozos de un fragmento a otro.

Para que se produzca una ronda de equilibrio, un fragmento debe tener al menos nueve fragmentos más que el fragmento menos poblado . En ese punto, los trozos se migrarán desde el fragmento lleno de gente hasta que esté parejo con el resto de los fragmentos.

Cuando agrega un nuevo nodo al clúster, MongoDB redistribuye esos fragmentos entre los nodos de la nueva configuración. Es un pequeño extracto, para obtener una comprensión completa de cómo se vuelve a equilibrar al agregar un nuevo nodo, lea el capítulo 2 "Descripción del deshilado" del libro de Kristina Chodrow "Scaling MongoDB"

Cuestiones relacionadas