Snel en met minder API-calls Exact Online uitlezen met de incrementele "sync API"-tabellen

De Exact Online API biedt zogenaamde “sync API’s”. Sync API’s zijn nieuwe API’s die een aantal nadelen bij het gebruik van webhooks voor incrementeel replicatie oplossen.

Voor omgevingen op basis van Invantive Cloud of de Excel add-in Invantive Control zijn de sync API’s een welkome verbetering:

  • Eenvoudig: de sync API’s zijn eenvoudig in het gebruik en werken meteen de eerste keer.
  • Betrouwbaarder: doordat de keten van afhankelijkheden is vergeleken met webhooks veel korter is. Het storingsgevoelige opsturen en distribueren van mutatieberichten via Exact Online webhooks blijft achterwege.
  • Minder API calls: de sync API’s beperken het aantal API calls aanzienlijk voor grote Exact administraties.
  • Efficient: het resourcegebruik is meetbaar lager.
  • Goedkoop: de sync API tabellen zijn beschikbaar met elk Invantive Office abonnement en zelfs met de gratis Power BI abonnementen op Exact Online.

Meer achtergrondinformatie is te vinden in de Engelse post Exact Online sync APIs.

Voor elke beschikbare sync API voor Exact Online is er een bijbehorende tabel in Invantive SQL die de complete inhoud weergeeft. Voor bijvoorbeeld Items (artikelen) is dat de tabel ItemsIncremental.

De velden van sync API tabellen zoals bijvoorbeeld ItemsIncremental zijn vrijwel identiek aan de oorspronkelijke tabel (hier ItemsBulk). Echter, afgeleide velden zoals ItemGroupDescription zijn verwijderd. De incrementele aard van ItemsIncremental maakt het gebruik van een genormaliseerd datamodel noodzakelijk. Voor correcte rapportages dienen de gerelateerde tabellen gekoppeld te worden in bijvoorbeeld het Microsoft Power BI datamodel.

Bijwerkfrequentie van sync API tabellen

De data van een sync API tabel wordt automatisch bijgewerkt als een tabel op basis van de sync API’s gebruikt wordt in een query. De standaardcaches in het geheugen en op schijf worden niet gebruikt.

Het raadplegen gaat vlot. Een query op Exact Online die minder dan 1% van de data teruggeeft blijft vaak sneller door een query te formuleren op de normale API met de juiste filters in de where-clause. De automatische optimizer van Invantive SQL zorgt er voor dat een slim filter samengesteld en doorgegeven aan de API servers van Exact. Daardoor zijn bijvoorbeeld de juiste 10 artikelen binnen een miljoen artikelen dan in enkele honderden miljoenen gevonden en opgehaald.

Gebruik van incrementele tabellen

Het gebruik van de incrementele tabellen is eenvoudig.

Met Invantive SQL kun je het actuele en bijgewerkte artikelenbestand opvragen voor alle geselecteerde Exact administraties met bijvoorbeeld:

select * 
from   ItemsIncremental@eol

Dit ziet er in de Invantive Cloud editor als volgt uit:

Voor Microsoft Power BI, Microsoft Power Query en andere OData4 consumers is aanklikken van de tabelnaam voldoende.

Analyse

Alhoewel de sync API’s een veel eenvoudiger structuur kennen dan de webhooks gebruikt voor Trickle Loading, kan er toch soms reden zijn om de juistheid te controleren. Daarom biedt Invantive SQL een aantal analytische views voor de Exact Online sync API’s:

  • IncrementalLoadStatuses: de status per tabel en administratie.
  • IncrementalLoadStatistics: statistieken zoals aantal verwijderde rijen en snelheid per mutatie in de status voor tabellen en administraties.
  • IncrementalLoadEventLogEntries: tekstuele meldingen bij elke mutatie in de status voor tabellen en administraties.

De query select * from IncrementalLoadEventLogEntries toont bijvoorbeeld:

Prestaties

De prestaties van queries op de incrementele tabellen zijn grofweg een factor vijf beter dan de oorspronkelijke queries. De factor kan variëren omdat de prestaties voornamelijk bepaalt worden door de netwerksnelheid en de snelheid van de lokale PC of server, terwijl voorheen de snelheid van de Exact Online servers de snelheid bepaalde.

Releases

De sync API tabellen ItemsIncremental en TransactionLinesIncremental zijn beschikbaar vanaf release 20.1.365 BETA van Invantive SQL in alle producten en op alle operating systems.

Andere sync API tabellen worden geleidelijk beschikbaar gemaakt. Dit zal naar verwachting in het eerste kwartaal van 2021 afgerond zijn.

De sync API tabellen waren sinds de zomer van 2020 beschikbaar in Invantive SQL; de problemen van toendertijd zijn opgelost.

Lokale opslag

Invantive SQL biedt de mogelijkheid om gegevens in lokale caches bij te houden. Dit gebeurt grotendeels automatisch. De sync-API tabellen vereisen een langdurige opslag; de gegevens kunnen eenvoudig uit Exact Online gereconstrueerd worden, maar het actualiseren voor grote administraties met miljoenen boekingen per jaar kost veel tijd. De benodigde gegevens worden na versleuteling opgeslagen in de “Incrementele Cache”. De standaardlocatie hiervan is %USERPROFILE%\invantive\incdata. Voor webproducten geldt dezelfde structuur als voor andere lokale caches. De standaardlocatie kan aangepast worden via de omgevingsvariabele INVANTIVE_CONFIGURATION_INCREMENTAL_DATA_FOLDER. De inhoud van deze map ziet er ongeveer als volgt uit:

En de Exact Online Webhooks dan?

Voor kleinere aantallen administraties is de verwachting dat het gebruik van webhooks binnen enkele maanden serieus zal verminderen door de nieuwe mogelijkheden. Voor grotere aantallen administraties is het de verwachting dat het vervangen van mutatieberichten in Data Replicator door sync API’s pas doorgevoerd zal worden in de grote omgevingen in de tweede helft van dit jaar.

Invantive SQL in combinatie met Invantive Data Replicator is een high-end oplossing voor data replicatie en synchronisatie met Exact Online. Data Replicator is geschikt tot datavolumes van meerdere terabytes. Deze datareplicatie software is en blijft de aanbevolen keuze voor omgevingen met duizend of meer Exact Online administraties en op Exact Online blijft het advies om voor trickle loading voorlopig webhooks te blijven gebruiken.

Voor near real-time event triggering zoals marketingevents zullen de Exact Online webhooks in gebruik blijven. Dergelijke berichten kunnen via de Message Bus-schermen van Invantive Cloud beheerd worden.