Vue d’ensemble
La clause BATCH
partitionne les données en lots plus petits, où chaque lot collecte les données dans un tableau. Ces tableaux sont ensuite traités séquentiellement par la clause suivante. La clause BATCH
est utile pour gérer de grands ensembles de données qui pourraient saturer les ressources mémoire, pouvant potentiellement provoquer des pannes du système. Bien que cette stratégie puisse entraîner un léger sacrifice de performance, elle réduit considérablement l'utilisation de la mémoire. Cette approche est particulièrement bénéfique lors du transfert d'un grand nombre de nœuds de départ dans une requête de path, garantissant une exécution efficace et stable de la requête.
Syntaxe
La clause BATCH
doit suivre la définition d'un alias, sauf lorsqu'une clause LIMIT
ou SKIP
intervient :
`<clause>` as `<alias>` `<LIMIT/SKIP clause?>` BATCH `<batch-size>`
`<clause>`
Où <batch-size>
est la quantité de données dans chaque lot.
Exemples
find().nodes({@post}) as nodes LIMIT 1000 BATCH 100
khop().n(nodes as a).le()[2].n() as b
GROUP BY a
WITH avg(b.length) as len
RETURN a._uuid, len ORDER BY len DESC LIMIT 10
Cet UQL place 1000 nodes @post dans 10 lots, chacun contenant 100 nodes. Les nodes dans chaque lot sont automatiquement collectés dans un tableau et passés dans la requête khop()
, qui est exécutée 10 fois indépendamment. Ensuite, les résultats finaux de la requête khop()
sont combinés et utilisés dans les clauses suivantes.
find().nodes({@user.age_level == 4}) as users
BATCH 100
n(users).e().n({@ad} as ads)
GROUP BY ads.cate
RETURN table(ads.cate, count(ads.cate))
Cet UQL place tous les nodes @user du groupe d'âge n°4 en lots, chacun contenant 100 nodes. Les nodes dans chaque lot sont automatiquement collectés dans un tableau et passés dans la requête modèle de path, qui est exécutée plusieurs fois indépendamment. Ensuite, les résultats finaux de la requête modèle de path sont combinés et utilisés dans les clauses suivantes.