Optimizar el rendimiento en ArcGIS

Para ofrecer un nivel de rendimiento similar a los usuarios que acceden a un servicio, es importante comprender que existen diferentes métodos de optimización, en función del tipo de servicio geoespacial. Las opciones disponibles pueden depender de cuál sea la fuente de datos backend o del patrón de implementación de software utilizado. Comprender los distintos tipos de caché y ordenación en teselas, junto con otras formas de optimización, es una parte importante para garantizar una experiencia de usuario positiva. Esta sección cubre brevemente una variedad de técnicas de optimización del rendimiento, a través de distintos niveles de la arquitectura de ArcGIS.

Diseño de redes para el rendimiento

El diseño de la red en la que se despliegan los componentes de ArcGIS es un factor clave que contribuye al rendimiento (tanto al buen rendimiento como al rendimiento deficiente). Normalmente, los sistemas empresariales son de naturaleza global y dan servicio a los usuarios en una amplia matriz de condiciones y conectividad de red, por lo que existen importantes diferencias entre los componentes y flujos de trabajo de ArcGIS en cuanto a su dependencia de la conectividad de red. La amplitud de las consideraciones de red para los flujos de trabajo de ArcGIS es más amplia que este tema, pero algunas recomendaciones y consideraciones iniciales incluyen:

  • En general, la latencia de la red repercute más en la experiencia del usuario que el ancho de banda de la red para las operaciones diarias del SIG. Para actividades como la descarga de datos, la copia de archivos o la visualización de grandes datasets de imágenes, el ancho de banda también es importante.
  • El tráfico desde ArcGIS Pro directamente a las bases de datos es sensible a la latencia, y se realizan muchas solicitudes pequeñas mientras se ven y editan datos o se trabaja y se cambia el esquema.
  • El tráfico desde ArcGIS Server a bases de datos, archivos o almacenamiento de objetos también requiere una baja latencia y, por lo general, un gran ancho de banda. Esto permite que el proceso del servidor acceda a los datos, los transforme para que se ajusten a las peticiones de los usuarios y les devuelva una respuesta optimizada.
  • Clientes como los navegadores que acceden a aplicaciones web son menos sensibles a las limitaciones de la red que los clientes de escritorio, ya que el SDK de mapas para JavaScript optimiza las solicitudes para reducir el tráfico excesivo.
  • Muchas redes modernas difuminan la distinción entre los recursos locales y los de la nube a través de la interconexión de redes y otras tecnologías, lo que puede dar lugar a una latencia muy baja entre los recursos de la nube y los recursos o clientes in situ. En general, se recomienda que los clientes, los procesos del servidor, el almacenamiento y las bases de datos estén alojados en la misma «zona de red». Por ejemplo, alojándolos todos en la nube, o todos en las instalaciones, pero en algunos escenarios es aceptable que los clientes estén separados de los servidores, o los servidores de las bases de datos. La adecuación de este diseño a su sistema dependerá del diseño de su red y de la comprobación estructurada de las implicaciones.

Optimización de aplicaciones web

Las aplicaciones web se entregan desde un servidor web, que suele ser un servicio SaaS de ArcGIS Online, un servidor web que aloja un ArcGIS Web Adaptor o un servidor web dedicado a alojar aplicaciones web personalizadas. A continuación se describen métodos para alojar aplicaciones web optimizadas.

Proceso de generación

Antes de implementar una aplicación, se puede utilizar un proceso de generación (que también incluye o se conoce como minificación o empaquetado) para reducir el tamaño y la complejidad de los activos estáticos de la aplicación, como los archivos JavaScript, CSS y HTML, o eliminar la información innecesaria de estos archivos. Aunque existen muchos planteamientos válidos para establecer un proceso de creación correcto y adecuado, estos procesos suelen estar estrechamente ligados al marco de aplicación utilizado para crear la aplicación web.

Almacenamiento en caché de respuestas HTTP

Otro método utilizado para optimizar el rendimiento de las aplicaciones web es habilitar el caché de respuesta HTTP para los activos estáticos de la aplicación web. Esta configuración proporciona al cliente final un encabezado de respuesta del servidor web, indicando que el activo estático se puede cachear en el cliente y durante cuánto tiempo se puede cachear. De esta forma, el navegador del cliente puede evitar una solicitud de ida y vuelta completa en una recarga de la aplicación, ya que el contenido de ese archivo ya está almacenado localmente en el equipo cliente y se reutiliza tal cual hasta que se alcanza el tiempo de caducidad de la caché. El caché de respuesta HTTP puede habilitarse de forma selectiva para determinados tipos de archivo, ya sea a través de un servidor web o de otro proxy inverso o capa de software de aceleración de aplicaciones.

Red de distribución de contenido (CDN)

Las aplicaciones web alojadas en ArcGIS Online ya hacen uso de estos dos patrones de optimización, ya que se crean antes de su implementación y se alojan en un entorno SaaS que hace uso del almacenamiento en caché de la Red de distribución de cotenido (CDN) de las respuestas estáticas de la aplicación.

Las CDN también pueden utilizarse con ArcGIS Enterprise, pero tenga cuidado de distinguir entre los activos estáticos que son adecuados para el almacenamiento en caché en una CDN, como los archivos HTML, CSS y JavaScript, frente a las respuestas dinámicas de la API REST que no deben almacenarse en caché para evitar comportamientos inesperados de los usuarios. Tenga también especial cuidado al considerar el uso de una CDN en lo que se refiere a las actualizaciones, ya que la caché de la CDN debe invalidarse forzosamente cuando se actualice el software o cambie una aplicación, para garantizar que los usuarios no reciban información obsoleta.

Optimizar los servicios web

Existen muchos otros tipos de servicios web que pueden utilizarse en un entorno ArcGIS, algunos de los cuales mostrarán o responderán en función de fuentes de datos dinámicas. No existe un planteamiento único para el caché y la optimización de estos servicios, sino una variedad de patrones que deben utilizarse con consideración y planificación. Entre los métodos habituales para optimizar los servicios web se incluyen:

  • Cachés de teselas rasterizadas
  • Cachés de teselas vectoriales

Ambos métodos toman los datos de entrada (de cualquier origen), a los que de otro modo se podría acceder dinámicamente a través de un mapa, una entidad o un servicio de imágenes, y los almacenan en caché en teselas. Estas teselas son paquetes de datos predefinidos, organizados en una cuadrícula estándar de varios niveles. Las teselas almacenadas en caché permiten a los clientes solicitar varias teselas predefinidas al mismo tiempo para una escala determinada, que se «renderizan con anterioridad» en forma de tesela, por lo que no hay que solicitar datos al backend ni dibujar dinámicamente la simbología o las entidades.

  • El caché de teselas rasterizadas se refiere a los datos que se almacenan en caché en teselas rasterizadas. Estas teselas son imágenes que muestran una vista renderizada con anterioridad de los datos, que luego se dibujan en el cliente como un conjunto de varias teselas cosidas entre sí para cada extensión de visualización. Las teselas rasterizadas pueden crearse a partir de servicios de mapas, servicios de entidades alojados o servicios de imágenes, con consideraciones ligeramente diferentes para cada uno.
  • El caché de teselas vectoriales tiene un concepto similar, pero las teselas son archivos binarios comprimidos (basados en memorias intermedias de protocolo) que almacenan entidades como geometría y atributos, cortadas en teselas individuales que luego se vuelven a montar y se representan en el cliente.

Recursos relacionados:

Estrategias para el almacenamiento en caché de teselas rasterizadas

El caché de teselas rasterizadas es un método eficaz cuando se suministran datos relativamente estáticos que deben verse en una representación cartográfica primaria. Aunque las teselas rasterizadas pueden tener un alto rendimiento, no ofrecen al usuario la posibilidad de consultar atributos, identificar entidades o cambiar símbolos, desactivar capas de etiquetado, etc.

A pesar de que, durante muchos años se utilizaron teselas rasterizadas para entregar mapas base cartográficos, en la actualidad estos servicios utilizan con mayor frecuencia mapas base vectoriales por diversas razones relacionadas con el rendimiento, la calidad cartográfica y la flexibilidad. Las teselas rasterizadas se siguen utilizando para servir a muchos mapas base de imágenes o servicios basados en fotografía por satélite u ortofotografía, ya que estos servicios pretenden presentar una única capa de imágenes cuidadosamente equilibrada como fondo para aplicaciones o herramientas.

Estrategias para el almacenamiento en caché de teselas vectoriales

El caché de teselas vectoriales es un método más reciente, pero ampliamente admitido, para almacenar datos en caché, cuando una tesela rasterizada podría ser limitante o inadecuada por otras razones. Las teselas vectoriales pueden ser más rápidas de generar y de menor tamaño, lo que ofrece ventajas para el almacenamiento del conjunto de teselas, así como en la velocidad a la que se transfieren a un cliente a través de una conexión de red.

Las teselas vectoriales también permiten una representación dinámica mediante el uso de un estilo de tesela vectorial, que puede configurarse o actualizarse por completo en el cliente, como un navegador o una aplicación nativa, y puede mostrar u ocultar dinámicamente diferentes capas, filtrar en función de los atributos y mostrar varias versiones cartográficas diferentes de los mismos datos, todo ello utilizando la misma capa de teselas vectoriales.

Tanto el almacenamiento en caché de teselas rasterizadas como el de teselas vectoriales tienen una gran variedad de configuraciones, opciones y elecciones que deben realizarse durante la optimización de un servicio. Consulte documentación adicional de Esri, recursos y actas de conferencias para obtener orientación adicional en estas áreas.

Teselas de entidades

Otro planteamiento de optimización relacionado es una funcionalidad más reciente de ArcGIS denominada teselas de entidades. Las teselas de entidades no se generan previamente mediante un proceso planificado (como las teselas vectoriales o las teselas rasterizadas), sino que son generadas por clientes conscientes de la funcionalidad que solicitan extensiones normalizadas de datos para niveles de zoom estándar. Dado que estas peticiones son idénticas entre distintos clientes, las entidades pueden ser cacheadas por una CDN o proxy intermedio, y reutilizadas o reenviadas a otros clientes. Esta funcionalidad está disponible exclusivamente para su uso por parte de clientes diseñados para utilizar esta entidad, principalmente a través de ArcGIS Maps SDK for JavaScript, aunque también a través de ArcGIS Pro y aplicaciones nativas creadas con ArcGIS Maps SDK. El uso de teselas de entidades se basa en varios supuestos clave:

  • Las teselas de entidades solo se utilizan cuando se hacen peticiones a capas de entidades (basadas en un servicio de mapas o en un servicio de entidades) que admiten esta funcionalidad, que varía en función de la versión. Los servicios de entidades alojados basados en ArcGIS Online han admitido esta funcionalidad durante varios años.
  • Normalmente, las teselas de entidades son solicitadas automáticamente por los clientes a los servicios que las admiten. Aunque ArcGIS Online proporciona varias capas de caché para estas teselas de entidades, las capas basadas en ArcGIS Enterprise tienen consideraciones adicionales para aprovechar al máximo esta función.
  • La funcionalidad de almacén de objetos de ArcGIS Data Store está diseñada para respaldar el almacenamiento en caché de teselas de entidades, de modo que los usuarios que soliciten una tesela de entidades que ya se ha generado para otra solicitud de usuario puedan recibir esa tesela existente, proporcionando una respuesta rápida y almacenando el resultado en caché durante un determinado periodo de tiempo. Esta funcionalidad requiere habilitar el caché en capas individuales de la capa de entidades alojada mediante una solicitud a la API REST.

Los servicios de entidades alojados en ArcGIS Online incluyen una opción para habilitar el dibujo optimizado de capas, que puede generar datos de resolución reducida en la base de datos que se utilizan a escalas de visión más pequeñas o con más zoom. Estos datos de resolución reducida son consultados automáticamente por el proceso de generación de teselas de entidades cuando se utilizan esas escalas, lo que a su vez, mejora el rendimiento de la respuesta.

Fuentes de datos y almacenamiento

Más allá de la optimización de aplicaciones y servicios, un área igualmente importante para la mejora del rendimiento es el almacenamiento y las características de los datos que hay detrás de un servicio específico. La mayoría de los datos utilizados en los servicios web son de naturaleza tabular (a excepción de los servicios de imágenes), y con frecuencia se trata de ambos:

  • Geometría: una columna de datos con un tipo de datos de geografía o geometría
  • Atributos: columnas con otros tipos de datos admitidos

Tanto la geometría como los atributos pueden optimizarse para mejorar el rendimiento del servicio. Encontrará documentación adicional sobre estas áreas en la documentación de ArcGIS Pro para los ajustes que afectan al rendimiento del acceso a los datos.

Optimizar atributos

Puede optimizar el uso de los atributos mediante la reducción de atributos. En pocas palabras, implica el proceso de eliminar u ocultar columnas o atributos que pueden existir en una tabla pero que no son necesarios para su aplicación o caso de uso. Puede lograrse eliminando columnas cuando no sean necesarias o desmarcándolas para su visualización en el mapa cuando se autorice su publicación, por ejemplo, para las capas de imágenes de mapa.

Indexación de atributos

La indexación de atributos es otra consideración importante, principalmente cuando las columnas se utilizarán para filtrar o consultar en una aplicación. La indexación permite realizar consultas más rápidas y eficientes cuando los filtros de la solicitud se basan en un atributo conocido o se consulta por un atributo basado en texto, números o fechas, y agregar índices de atributos es una forma excelente de aprovechar la tecnología de optimización ya incorporada en las bases de datos relacionales.

Optimizar la geometría

Las columnas geométricas también pueden optimizarse de varias formas importantes, en función del caso de uso y los requisitos de los datos. Una opción es la generalización espacial, a menudo también denominada simplificación, que es un proceso de simplificación, suavizado o reducción del nivel de detalle de una representación geométrica, como una línea o un polígono, para reducir el tamaño de la característica y los requisitos de almacenamiento y procesamiento. Este proceso puede completarse de forma permanente, si los datos originales son demasiado precisos o demasiado detallados en cuanto a los vértices incluidos, o podría completarse en una copia de solo lectura de los datos que se utilice para la visualización, conservando todos los detalles en los datos de origen.

La idea de reducir la precisión espacial está estrechamente relacionada: se refiere al tipo de dato geométrico o geográfico, que suele almacenar un valor decimal para las coordenadas reales de cada vértice de una entidad, como 124999.24541512. Este valor representa una unidad lineal, que varía, dependiendo del sistema de coordenadas del dataset, que podría ser tan grande como grados decimales o tan pequeña como pies o metros. En cualquier caso, garantizar que la precisión espacial captada refleja el caso de uso real de los datos puede ser importante tanto por razones funcionales como de rendimiento.

Para datos en un sistema de coordenadas con una unidad lineal basada en metros, una geometría almacenada como (123456.789101112, 234567.891011121) tiene 9 dígitos decimales de precisión, equivalentes a una precisión de nivel nanométrico. Si los datos son captados por una unidad GPS con una precisión de 1 m (de media), entonces esta precisión está sobrevalorando la precisión real de la medición en un factor significativo. Reducir la precisión espacial del conjunto de datos eliminando la parte decimal no solo es más exacto, sino que reducirá el tamaño de la geometría cuando se transfiera en una solicitud de red en un 50 %, lo que ayuda en todo, desde los procesos de serialización hasta las limitaciones de ancho de banda. Utilizar una precisión espacial apropiada es especialmente importante con las entidades poligonales muy detalladas, ya que el número de vértices puede alcanzar rápidamente los miles de registros, y el impacto resultante en el rendimiento del servicio es significativo.

Más allá de los ajustes de atributos y geometría, otros planteamientos de almacenamiento de datos de nivel superior pueden ayudar a optimizar el rendimiento, entre ellos:

  • Utilizar vistas de base de datos o vistas materializadas para almacenar una consulta de acceso común a nivel de base de datos, que luego puede publicarse en un servicio de mapas para su uso en aplicaciones ArcGIS
  • Considerar si una geodatabase de archivos puede beneficiarse de ser compactada; esta operación puede mejorar el rendimiento al reorganizar el almacenamiento interno de una geodatabase de archivos editada con frecuencia
  • Las geodatabases corporativas incluyen una variedad de otras consideraciones de rendimiento, algunas de las cuales pueden ser específicas de la base de datos, pero es importante tener en cuenta las operaciones Comprimir y Analizar datasets cuando se trabaja con datos versionados, así como una amplia variedad de consideraciones de rendimiento cuando se utiliza un flujo de trabajo de varios editores.

Mosaicos y servicios de imágenes

Los servicios de imágenes suelen construirse a partir de datasets de mosaico, que son objetos de geodatabases que siguen muchas de las sugerencias de optimización anteriores. Además, hay que tener en cuenta varias técnicas de optimización específicas de los servicios de imágenes:

  • Los ajustes del mosaico, incluido el número máximo de rásteres por mosaico y el tamaño máximo de la imagen, influyen en el rendimiento del servicio, ya que garantizan que el sistema no busque demasiadas imágenes para generar el mosaico resultante, y que la imagen resultante no sea tan grande como para que construirla y enviarla de vuelta al cliente sature el acceso de red que el usuario tiene al mosaico.
  • Las visiones generales de dataset de mosaico existen principalmente para mejorar el rendimiento del servicio a escalas más pequeñas (más alejadas); las visiones generales representan vistas renderizadas con anterioridad de un dataset de mosaico, ya sea cuando los datos no cambian con frecuencia o cuando los detalles específicos de las imágenes no son necesarios a esa pequeña escala. La creación y actualización de resúmenes cuando sea necesario puede mejorar considerablemente el rendimiento de visualización del servicio de imágenes para los usuarios.
  • El formato y la configuración de las imágenes de origen también son fundamentales, ya que hay formatos de imagen más, o menos, optimizados que pueden repercutir en el rendimiento, así como propiedades como las pirámides de imágenes, que pueden calcularse con un coste de cómputo inicial pero benefician a todos los futuros usuarios de esa imagen.
Top