Twinfield : plus de vitesse grâce à moins de trafic de données et une gestion plus intelligente

Les performances du driver Twinfield d’Invantive ont été améliorées grâce à un trafic de données réduit et une gestion plus intelligente. Pour cela, il n’est pas nécessaire de modifier les requêtes existantes. Les améliorations fonctionnent immédiatement.

Les améliorations suivantes ont été mises en œuvre :

  • seules les colonnes demandées sont récupérées auprès de Twinfield ;
  • le filtrage est possible sur beaucoup plus de champs qu’auparavant grâce au filtrage côté serveur ;
  • les totaux comme le nombre de lignes sont déterminés avec une seule API call au lieu de récupérer toutes les lignes.

Sous le Capot

Comptage

select count(*)
from   VATCodes@twinfield

L’exécution donne :

COUNT___
15

Recherche

select code
,      name
from   VATCodes@twinfield
where  code like 'V%'
order
by     code

L’exécution donne :

CODE | NAME
V19  | Ventes 19% en surplus
VBIN | Livraison intra-UE
VBUI | Livraison extra-UE
VH   | Ventes hautes
VINS | Installation/Demande à distance
VL   | Ventes basses
VN   | TVA 0%
VP   | Utilisation privée

Le motif n’est pas signalé comme traité. Invantive UniversalSQL applique encore une fois la même condition. C’est nécessaire car Twinfield recherche sur plus d’un champ : le motif peut être plus large que la condition dont il découle. Une réponse plus large coûte des lignes, une réponse plus étroite les perd. Une valeur avec un * ou ? littéral reste donc entièrement au sein d’Invantive UniversalSQL, car Twinfield ne documente pas de méthode pour échapper ces caractères.

Consommation visible dans le dictionnaire de données

Les limites s’appliquent chez Twinfield par environnement. C’est pourquoi SystemDataContainers@datadictionary affiche maintenant par connexion ce que Twinfield indique sur ses propres limites de taux : le budget par minute, ce qui en reste, quand il sera reconstitué et ce que le dernier appel a coûté.

select minutely_limit
,      minutely_remaining
,      consumption_last_call
from   SystemDataContainers@datadictionary
where  minutely_limit is not null

L’exécution donne :

MINUTELY_LIMIT MINUTELY_REMAINING CONSUMPTION_LAST_CALL
500 489 1

L’environnement mesuré dispose donc de 500 appels par minute.

Voir aussi

Disponibilité

Les améliorations sont disponibles à partir de la version 27.0.