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
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:
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
addShardToZoneno encuentra el shard porque el nombre no es el que devuelvelistShardspara ese nodo.
Ver también
- Modo replica set, si tus herramientas esperan un replica set.
- Rangos y réplicas, para ver cómo se reparten los datos sin shard key.