Configuración de Cosmos DB

Basado en las pruebas de rendimiento que se realizaron, las siguientes claves de partición e índices deben ser definidos en el CSM Reachability base de datos.

Rendimiento Recomendado para Bank Directory Plus en Cosmos DB

Configuraciones recomendadas para la ingestión de la Entidad de Partido para BANKDIRECTORYPLUS archivo completo:

Tamaño del archivo: ~1. 5 millones de registros

Elemento de Configuración Valor Propiedad de ConfigMap

Rendimiento

30000 RUs

Esquema de Cosmos DB

Paralelismo directo

16

ipf.csm-reachability.settings-api.direct.parallelism

Paralelismo de identificadores de entidades de partido

2(default)

ipf.csm-reachability.settings-api.party-entity-identifiers.parallelism

Paralelismo de entidades de partido

100(default)

ipf.csm-reachability.settings-api.party-entity.parallelism

Estos valores se determinaron a través de pruebas de rendimiento, reduciendo el tiempo de ingestión de aproximadamente 175 minutos a aproximadamente 45 minutos.

Rendimiento recomendado para el archivo IDENTIFICADORES-ALL de Party Entity en Cosmos DB

Rendimiento recomendado para la ingestión de la entidad de partido para IDENTIFIERS-ALL archivo completo:

Tamaño del archivo: ~4. 9 millones de registros, pero después de algunas operaciones de filtrado, 3 115 384 registros son ingeridos.

Elemento de Configuración Valor Propiedad de ConfigMap

Rendimiento

30000 RUs

Esquema de Cosmos DB

Paralelismo directo

8

ipf.csm-reachability.settings-api.direct.parallelism

Paralelismo de identificadores de entidades de partido

5

ipf.csm-reachability.settings-api.party-entity-identifiers.parallelism

Paralelismo de entidades de partido

8

ipf.csm-reachability.settings-api.party-entity.parallelism

Estos valores se determinaron a través de pruebas de rendimiento, con un tiempo de ingestión ~160 minutos .

Para tanto Bank Directory Plus como Identifiers-ALL, ajuste según sea necesario, de acuerdo con las futuras pruebas de carga y los requisitos comerciales.

Claves de partición

Para tener un tiempo normal de procesamiento de archivos grandes en CosmosDB, necesitamos añadir claves de partición para cada colección. La clave de partición debe ser añadida directamente en el portal de Azure. La forma de añadir claves de partición:

Primero necesitamos abrir la consola de Mongo y escribir use {database_name} e.j.

use ipf-csm-test

Después de que haya cambiado a la base de datos requerida, escriba los comandos a continuación:

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 índices a continuación son necesarios para el correcto funcionamiento y el rendimiento óptimo de la aplicación. Deben ser creados automáticamente al iniciar la aplicación. Si no se han creado automáticamente (generalmente un problema que ocurre con las implementaciones de Cosmos) por favor asegúrese de que las siguientes sobreescrituras estén en su lugar

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 de índices programáticos en Cosmos fallaría ocasionalmente y necesitaría un mayor número de reintentos para garantizar el éxito. Las sobreescrituras mencionadas han sido probadas y confirmadas para asegurar que los índices se creen correctamente.
Típicamente core los índices se ven afectados ya que la configuración de reintentos se define en un módulo externo, mientras que los índices de la aplicación ya tienen la configuración correcta.

Habilitando el función de reintento del lado del servidor se recomienda encarecidamente en CosmosDB. Si por alguna razón necesita mantener esta función desactivada, puede que deba aumentar el valor de ipf.mongodb.max-retry configuración para evitar errores de límite de tasa que fallen sus operaciones de base de datos.