Claves y puntos calientes
Por qué una clave que siempre crece concentra las escrituras y cómo evitarlo.
TeselaDB guarda los documentos y las entradas de índice ordenados por su clave y los reparte en rangos. Una clave que siempre crece manda todas las escrituras al último rango.
Cómo funciona
Cada colección y cada índice ocupan un intervalo del espacio de claves ordenado. Un rango se divide por tamaño o por carga y el equilibrador reparte las réplicas. Si todas las escrituras van al final del intervalo, como con un _id de tipo ObjectId o una fecha de creación, un solo rango y su líder reciben toda la carga hasta que se divide.
Qué implica para tu aplicación
Para colecciones con muchas escrituras, usa un _id que no crezca siempre, como un UUID aleatorio. En un índice sobre una fecha o un contador, crea el índice con teselaBuckets para repartir sus entradas en cubos hash; el planificador junta los cubos al leer.
Límites
La división por carga ayuda durante un tiempo. Después, el nuevo final del intervalo vuelve a recibir las escrituras. Con teselaBuckets, una lectura por orden de esa clave junta tantos cubos como haya.