Documentation for a newer release is available. View Latest

Cosmos DB settings

Según pruebas de rendimiento realizadas, se deben definir las siguientes partition keys e índices en la base de datos de CSM Reachability.

Partition Keys

Para tener tiempos normales al procesar archivos grandes en CosmosDB, necesitamos añadir partition keys para cada colección. La partition key debe añadirse directamente en el portal de Azure. Forma de añadir las partition keys:

Primero debemos abrir la Mongo shell y escribir use {database_name}, p. ej.

use ipf-csm-test

Después de cambiar a la base de datos requerida, escribe los siguientes comandos:

db.runCommand({customAction:"CreateCollection", collection: "settings-approvals", shardKey:"_id"})
db.runCommand({customAction:"CreateCollection", collection: "settings-history", shardKey:"_entityId"})
db.runCommand({customAction:"CreateCollection", collection: "settings-agent-settings", shardKey:"_id"})
db.runCommand({customAction:"CreateCollection", collection: "settings-agent-clearing-settings", shardKey:"_id"})
db.runCommand({customAction:"CreateCollection", collection: "settings-agent-settlement-settings", shardKey:"_id"})
db.runCommand({customAction:"CreateCollection", collection: "settings-cs-agent-selection-settings", shardKey:"_id"})
db.runCommand({customAction:"CreateCollection", collection: "settings-iban-plus", shardKey:"_id"})
db.runCommand({customAction:"CreateCollection", collection: "settings-iban-structure", shardKey:"_id"})
db.runCommand({customAction:"CreateCollection", collection: "settings-participant", shardKey:"_id"})
db.runCommand({customAction:"CreateCollection", collection: "settings-processing-entity", shardKey:"_id"})
db.runCommand({customAction:"CreateCollection", collection: "settings-party-entity", shardKey:"_id"})
db.runCommand({customAction:"CreateCollection", collection: "settings-generic-processing-settings", shardKey:"_id"})
db.runCommand({customAction:"CreateCollection", collection: "settings-bicdir2018", shardKey:"_id"})

Los siguientes índices son necesarios para la operación correcta y el rendimiento óptimo de la aplicación. Deberían crearse automáticamente al iniciar la aplicación. Si no se han creado automáticamente (normalmente un problema que ocurre con despliegues en Cosmos), asegúrate de tener las siguientes overrides:

ipf.mongodb.max-retry = 6
ipf.mongodb.retryable-error-codes = [16500, 48]
ipf.mongodb.delay-duration = 1000ms

Durante las pruebas, se descubrió que la creación programática de índices en Cosmos fallaba ocasionalmente y necesitaba un mayor número de reintentos para garantizar el éxito; las overrides anteriores se han probado y confirmado para asegurar que los índices se creen correctamente.
Normalmente se ven afectados los índices del core ya que la configuración de reintentos se define en un módulo externo, mientras que los índices de la aplicación ya tienen los ajustes correctos.

Es muy recomendable habilitar la server-side retry feature en CosmosDB. Si por alguna razón necesitas mantener esta característica deshabilitada, puede que debas aumentar el valor de la setting ipf.mongodb.max-retry para evitar que los errores de rate limit fallen tus operaciones de DB.