Compartir a través de


Procedimientos recomendados para mejorar el rendimiento en el servicio de FHIR

En este documento se proporciona una guía sobre los procedimientos recomendados con el servicio de FHIR® de Azure Health Data Services. Encontrará prácticas que debe hacer, considerar o evitar para mejorar el rendimiento del servicio FHIR.

Nota:

Este documento tiene como ámbito los clientes del servicio FHIR de Azure Health Data Services.

Ingesta de datos

Operación de importación

El servicio de FHIR de Azure admite la ingesta de datos a través de la operación de importación, que ofrece dos modos: el modo inicial y el modo incremental. Para obtener instrucciones detalladas, consulte la documentación importación de datos en el servicio FHIR .

Para lograr un rendimiento óptimo con la operación de importación, tenga en cuenta los siguientes procedimientos recomendados.

  • Use archivos grandes al ingerir datos. El tamaño de archivo NDJSON óptimo para la importación es de 50 MB o más (o 20 000 recursos o más, sin límite superior). La combinación de archivos más pequeños en archivos más grandes puede mejorar el rendimiento.
  • Considere la posibilidad de usar la operación de importación a través de solicitudes de API HTTP para ingerir los datos en el servicio de FHIR. La operación de importación proporciona un alto rendimiento y es un método escalable para cargar datos.
  • Considere la posibilidad de importar todos los archivos de recursos de FHIR en una sola operación de importación para obtener un rendimiento óptimo. Apunte a un tamaño total de archivo de 100 GB o más (o 100 millones de recursos, sin límite superior) en una sola operación. Maximizar una importación de esta manera ayuda a reducir la sobrecarga asociada a la administración de varios trabajos de importación.
  • Considere la posibilidad de realizar un trabajo de importación con la asignación de recursos al mismo tipo de recurso para mejorar el rendimiento.
  • Considere la posibilidad de ejecutar varias importaciones simultáneas solo si es necesario, pero limitar los trabajos de importación en paralelo. Una única importación grande está diseñada para consumir todos los recursos del sistema disponibles y el rendimiento de procesamiento no aumenta con los trabajos de importación simultáneos.

Agrupaciones de trabajos

En el servicio de FHIR de Azure, los paquetes actúan como contenedores para varios recursos. Las agrupaciones de transacciones y lotes permiten a los usuarios enviar conjuntos de acciones en una única respuesta o solicitud HTTP. Tenga en cuenta lo siguiente para lograr un mayor rendimiento con la ingesta de agrupación.

  • Genere la carga en el servicio de FHIR de Azure de forma lineal y evite operaciones de ráfaga para evitar la degradación del rendimiento.
  • Ajuste el número de solicitudes de agrupación simultáneas al servidor de FHIR. Un número alto (>100) puede provocar un escalado negativo y un menor rendimiento de procesamiento.
  • DO usar agrupaciones de transacciones independientes para los recursos de FHIR que no dependen entre sí y se pueden actualizar por separado.
  • Considere la posibilidad de usar tamaños de agrupación más pequeños para operaciones complejas, como las creaciones condicionales o las actualizaciones.
  • Considere la posibilidad de habilitar el procesamiento paralelo para agrupaciones de transacciones y lotes. De manera predeterminada, los recursos de los conjuntos se procesan secuencialmente. Para mejorar el rendimiento, puede habilitar el procesamiento de recursos paralelos agregando la marca x-bundle-processing-logic de encabezado HTTP y estableciendola en parallel. Para obtener más información, consulte la documentación de procesamiento paralelo de agrupaciones por lotes.
  • Evite enviar solicitudes de agrupación paralelas que intenten actualizar los mismos recursos simultáneamente, lo que puede provocar retrasos en el procesamiento.
  • Evite enviar un gran número de agrupaciones con una sola solicitud PUT o POST, lo que puede provocar cuellos de botella en las transacciones.

Nota:

El procesamiento de agrupación en paralelo mediante las marcas puede mejorar el x-bundle-processing-logic rendimiento cuando no hay una dependencia implícita en el orden de los recursos dentro de una operación HTTP.

Ajuste del índice de parámetros de búsqueda

El servicio de FHIR de Azure se aprovisiona con parámetros de búsqueda predefinidos por recurso. Los parámetros de búsqueda se indexan para facilitar el uso y la búsqueda eficaz. Los índices se actualizan para cada escritura en el servicio de FHIR. Los parámetros de búsqueda seleccionables permiten habilitar o deshabilitar índices de parámetros de búsqueda integrados. Esta funcionalidad le ayuda a optimizar el uso y el rendimiento del almacenamiento al habilitar solo los parámetros de búsqueda necesarios. Centrarse en los parámetros de búsqueda por relevancia ayuda a minimizar el volumen de datos recuperados durante la ingesta.

Considere la posibilidad de deshabilitar los índices de búsqueda que su organización no usa para optimizar el rendimiento.

Optimización del rendimiento de las consultas

Después de la ingesta de datos, la optimización del rendimiento de las consultas es fundamental. Garantía de un rendimiento óptimo:

  • Genere la carga en el servicio de FHIR de Azure de forma lineal y evite operaciones de ráfaga para evitar la degradación del rendimiento.
  • Considere la posibilidad de usar los parámetros de búsqueda más selectivos (por ejemplo, identifier) sobre los parámetros con baja cardinalidad para optimizar el uso de índices.
  • Considere la posibilidad de realizar búsquedas deterministas mediante identificadores lógicos. El servicio FHIR proporciona dos maneras de identificar un recurso: identificadores lógicos e identificadores empresariales.
    Los identificadores lógicos se consideran "deterministas" porque las operaciones de FHIR realizadas con ellos son predecibles. Los identificadores de negocio se consideran "condicionales" porque sus operaciones tienen un comportamiento diferente en función del estado del sistema. Se recomiendan operaciones deterministas mediante identificadores lógicos.
  • Considere la posibilidad de usar el PUT verbo HTTP en lugar de POST si procede. PUT las solicitudes pueden ayudar a mantener la integridad de los datos y optimizar la administración de recursos. POST Las solicitudes pueden dar lugar a la duplicación de recursos, la mala calidad de los datos y aumentar el tamaño de los datos FHIR innecesariamente.
  • Evite el uso de _revinclude en consultas de búsqueda, ya que pueden dar lugar a conjuntos de resultados no acotados y latencias más altas.
  • Evite usar búsquedas complejas (por ejemplo: _haso parámetros de búsqueda encadenados), ya que afectan al rendimiento de las consultas.

Extracción de datos

Para la extracción de datos, use la operación de $export masiva tal como se especifica en la especificación de acceso a datos de compilación de HL7 FHIR.

  • Use bloques de datos más grandes para las exportaciones de nivel de sistema cuando no use filtros para maximizar el rendimiento. El servicio de FHIR de Azure las divide automáticamente en trabajos paralelos.
  • Considere la posibilidad de dividir las exportaciones de pacientes, grupos y sistemas filtrados en bloques de datos pequeños para la exportación.

Para más información sobre las opciones de exportación, consulte Exportación de los datos de FHIR.

Almacenamiento de datos binarios en recursos de FHIR

  • Almacene cargas pequeñas (hasta 2 MB) como cadenas codificadas en base64 dentro del recurso de FHIR.
  • Considere la posibilidad de usar soluciones de almacenamiento externo para datos binarios más grandes. Almacene datos binarios en un almacenamiento de blobs y haga referencia a ellos en el recurso FHIR mediante una dirección URL para evitar ineficiencias.
  • Considere la posibilidad de dividir archivos binarios grandes en fragmentos más pequeños (menos de 2 MB) y almacenarlos como recursos binarios independientes, que luego se pueden vincular mediante un recurso de FHIR.
  • Evite almacenar datos binarios grandes directamente dentro del recurso de FHIR, ya que puede dar lugar a limitaciones e ineficiencias en las funcionalidades del servicio FHIR, como la importación, exportación y búsqueda.

Al aplicar estos procedimientos recomendados, puede mejorar el rendimiento y la eficacia de la ingesta de datos, el procesamiento de agrupaciones, la ejecución de consultas y la extracción de datos en el servicio de FHIR de Azure.

Nota:

FHIR® es una marca registrada de HL7 y se usa con su permiso.