Als u een externe gegevensbron synchroniseert naar een gehoste feature layer in ArcGIS Online of ArcGIS Enterprise, dan wilt u het schrijven van elke periodieke changeset zo efficiënt mogelijk maken. Zodra uw datasets in de honderdduizenden of miljoenen features komen, wordt het berekenen van de optimale insert-, update- en delete-transacties zeer aantrekkelijk, omdat dit downtime en het risico op transactiefouten minimaliseert.<\/P>
Het probleem is dat het afleiden van bewerkingstransacties vereist dat de doel-gehoste laag wordt gelezen, en dit is een dure operatie. Deze blog toont een aanpak die het opvragen van uw doel-feature layer vermijdt ten gunste van het gebruik van een file geodatabase export van de gegevens, die automatisch lokaal wordt gedownload en vervolgens efficiënt wordt gelezen om de changeset te vinden, zonder extra opslagruimte voor items te gebruiken.<\/P>
Hier is de aanpak in actie:<\/P>
BulkUpsert2<\/span><\/span>Vermijden van feature layer query<\/SPAN><\/SPAN><\/SPAN>In een eerder bericht toonde ik een voorbeeld van het afleiden van upsert- en delete-transacties door een doel-feature layer te lezen<\/EM>, wat een geserialiseerde aanpak is. Mijn doel-laag heeft meer dan 1 miljoen features - het lezen ervan duurt enkele minuten. Bovenstaand voorbeeld doet het beter, tegen dezelfde service.<\/P>De download bij het bericht bevat een toolbox met de Pro 3.5 ArcGIS Data Interoperability ETL-tool erin - zie BulkUpsert2<\/STRONG>. De tool leest een CSV-bestand op een URL (vermijdt ook serialisatie, wat standaard is voor de server), maar krijgt ook toegang tot portalinhoud om een file geodatabase-export te starten, wacht in een lus totdat de export is voltooid, downloadt en leest vervolgens de doel-feature layer inhoud, niet de service<\/STRONG><\/EM>, en verwijdert tenslotte het exportitem (de gedownloade file geodatabase wordt ook automatisch verwijderd). Dit is kernfunctionaliteit. Er zijn twee mintgroene aangepaste transformers in de tool. Een EsriOnlineTokenGetter<\/A><\/STRONG> haalt een token op dat nodig is voor een latere HTTP-aanroep (als u werkt met een Enterprise portal zou u een EsriPortalTokenGetter<\/STRONG><\/A> gebruiken).<\/P>Spoiler<\/a>status totdat de taak voltooid is. Houd er rekening mee dat hoe lang een exporttaak duurt afhankelijk is van hoe groot uw service is en ook hoe druk het hostportal is - ik heb gezien dat ArcGIS Online taken in wachtrij zet evenals ze onmiddellijk uitvoert. Hier is een uitvoering die iets meer dan een minuut duurt (alleen voor de export) op een druk moment in ArcGIS Online:<\/P>
FeatureServiceExportLooper<\/span><\/span>FeatureServiceExportLooper<\/SPAN><\/SPAN><\/SPAN>Het netto resultaat is echter een significante netto winst. Hier is een schermafbeelding uit de eerdere blog en de geserialiseerde aanpak - let op de sessieduur.<\/P>
Het lezen van de doel-feature layer duurt langer<\/span><\/span>Het lezen van de doel-feature layer duurt langer<\/SPAN>Dus zo vermijdt u het lezen van gehoste feature layers met een geserialiseerde aanpak. Nu heeft u een optie voor tijdrovende changesetconstructie!<\/<\/SPAN>