La respuesta es ambas para mí, pero tú sé el juez para tu situación! Sigue leyendo para los criterios de decisión...<\/P>
Si quieres mantener un gran servicio de entidades alojado a partir de datos externos, es mejor práctica evitar sobrescrituras completas en cada actualización, por dos razones:<\/P>
Para evitar ambos problemas es preferible implementar un enfoque CDC (captura de datos cambiados) y escribir solo los deltas al servicio de entidades destino. Este blog describirá dos maneras de hacer esto:<\/P>
En la situación usual donde un delta periódico es una pequeña fracción de los datos, una escritura directa del delta podría tomar varios segundos, mientras que para un intercambio de fuente de vista el tiempo de inactividad puede ser milisegundos, pero tiene el doble del costo de almacenamiento.<\/EM> Haremos un ejemplo práctico para que puedas elegir entre los enfoques, pero en cualquier caso ¡eres el ganador usando CDC!<\/STRONG><\/P>Aquí están mis datos temáticos, sobre aproximadamente un millón de puntos de dirección de Los Ángeles, California, mantenidos diariamente:<\/P>Puntos de dirección de Los Ángeles<\/span><\/span><\/P>El trabajo es calcular y aplicar la transacción delta diaria (típicamente unas pocas centenas bajas de entidades) con bajo tiempo de inactividad, y aunque nuestros modos candidatos de escritura (directa, intercambio de fuente de vista) aíslan el tiempo de inactividad del servicio del trabajo del tiempo de cálculo del delta, siempre es bueno incorporar cualquier optimización que puedas. El sitio abierto de datos de la ciudad soporta descarga CSV, y CSV es un formato eficiente en herramientas ETL espaciales, así que eso es la mitad del paso del cálculo delta. La otra mitad es leer el estado actual del servicio/vista de entidades.<\/P>Aquí está mi optimización para la lectura del servicio de entidades, en LAChangeDetection.fmw (en la descarga del blog):<\/P>Escritura directa después de detección de cambios<\/span><\/span><\/P>Mientras que el paquete Esri ArcGIS Connector provee un lector para servicios de entidades, en la búsqueda por velocidad implementé la lectura del servicio destino usando múltiples llamadas concurrentes Query con HTTP. Encontré que el conteo máximo por llamada predeterminado (2000) en 4 solicitudes concurrentes daba un rendimiento óptimo, aproximadamente el doble que el lector empaquetado. El transformador ChangeDetector calcula el delta en segundos una vez que tiene los datos, luego escribir el delta toma 3-4 segundos para un conjunto típico diario (si inspeccionas el espacio de trabajo verás que lo instrumenté con transformadores Emailer para enviar información con marcas temporales).<\/P>Para personas no satisfechas con unos pocos segundos de tiempo inactivo del servicio, implementar intercambio de fuente vista es solo ligeramente más desafiante, ve LAViewSourceSwap.fmw en la descarga del blog:<\/P>Intercambio de fuente vista<\/span><\/span><\/P>Verás lógica en el espacio de trabajo para alternar entre los servicios "A" y "B" para lectura, escritura e intercambio fuente. Por esta razón los cambios se detectan un poco diferente; se lee la misma URL pública accediendo a los datos direccionales como CSV, pero el delta se calcula versus la capa alojada que no es la fuente actual para la vista alojada, y el delta se aplica a esa capa.<\/P>Luego la capa actualizada debe ser intercambiada para ser la fuente para la vista. ¿Cómo? <\/?STRONG>
La respuesta requiere algo de investigación, inspeccionando cómo ArcGIS maneja nativamente el intercambio fuente en configuraciones del ítem:<\/?P>
Intercambio Fuente Vista<\/?span><\/?span><\/?P>Lo que ves arriba soy yo haciendo manualmente un intercambio fuente pero con las herramientas para desarrolladores activas en el navegador, filtrado para registrar transacciones POST en vista fila grande. Mientras hacía clic en el intercambio fuente pude ver que el sistema usa dos llamadas, deleteFromDefinition<\/?A> y addToDefinition<\/?A>. Mejor aún, si inspecciono cualquier llamada POST puedo ver la carga JSON usada - lo cual es afortunado porque la documentación REST API es algo desafiante para alguien sin código como yo 😉.<\/?P>La carga deleteFromDefinition es trivial, pero la carga JSON addToDefinition es enorme. Sin embargo, como hice mis servicios con configuraciones predeterminadas que no busco cambiar, recorté el JSON a objetos que pensé valía la pena conservar, y por supuesto el puntero requerido a la fuente deseada. Aquí está el JSON:<\/?P>{@SashaLockamy<\/a> quien exploró primero este flujo de trabajo, y a quien estoy agradecido, y algunos trabajos previos en un flujo de trabajo relacionado donde se republican geodatabases de archivos, vea la primera presentación aquí<\/A>.<\/P>
La carga deleteFromDefinition es trivial, pero la carga JSON addToDefinition es enorme. Sin embargo, como hice mis servicios con configuraciones predeterminadas que no busco cambiar, recorté el JSON a objetos que pensé valía la pena conservar, y por supuesto el puntero requerido a la fuente deseada. Aquí está el JSON:<\/?P>
{
Hello everyone. If you downloaded the blog attachment with workspace source files before 5:45 am PDT Friday 3rd October then please do so again, I simplified the LAViewSourceSwap.fmw workspace to remove unnecessary parameters which were artifacts of development testing.
Hello again
Esri staff can't create Ideas posts so see here instead, where it will get more visibility in the FME world, an idea to make this work easier:
https://community.safe.com/ideas/arcgisfeatureserviceviewmanager-transformer-in-the-esri-arcgis-connector-package-39204
Los miembros registrados pueden publicar, seguir actualizaciones y más. ¿Nuevo aquí? Regístrate gratis.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.