Sharding y zonas

Las shard keys, las zonas y las operaciones de chunks de MongoDB, aplicadas a los rangos de TeselaDB.

En TeselaDB no necesitas una shard key: cada colección se reparte en rangos por tamaño y por carga. Si tu aplicación ya usa shard keys o zonas, los comandos de MongoDB funcionan igual.

Requisitos

  • Un clúster en marcha y un usuario con los privilegios de los comandos de sharding.
  • Para las zonas, el nombre de shard de cada nodo, que muestra listShards.

Shard key

JavaScript
sh.shardCollection("tienda.pedidos", { cliente: 1, _id: 1 });

shardCollection, con una shard key por rangos, una hashed o una compuesta, reordena la colección para que cada documento se guarde por su shard key. reshardCollection y refineCollectionShardKey la cambian en línea.

Unicidad

_id es único en todo el clúster y un índice único no necesita llevar la shard key como prefijo. En MongoDB solo es único dentro de cada shard.

Zonas

Una zona restringe las réplicas de unos intervalos de shard key a unos nodos, por ejemplo para tener los datos de clientes europeos en máquinas de la UE. El nombre de shard de cada nodo es el que muestra listShards:

JavaScript
sh.addShardToZone("<shard>", "eu");
sh.updateZoneKeyRange("tienda.pedidos", { region: "eu" }, { region: "eu~" }, "eu");

Chunks y equilibrador

split, moveChunk, mergeChunks, balancerStart, balancerStop y la base config (config.chunks, config.shards) tienen la forma de MongoDB. Cada nodo aparece como un shard en listShards.

Comprobar

En mongosh, db.adminCommand({ listShards: 1 }) devuelve un shard por cada nodo del clúster, con las zonas que asignaste a cada uno.

Problemas frecuentes

  • addShardToZone no encuentra el shard porque el nombre no es el que devuelve listShards para ese nodo.

Ver también