Cette section introduit les méthodes uql()
et uqlStream()
sur un objet Connection
pour interroger la base de données en utilisant UQL.
Chaque exemple se concentre uniquement sur l'utilisation de la méthode. Pour un exemple de code complet, veuillez vous référer à l’exemple complet.
UQL (Ultipa Query Language) est le langage conçu pour interagir pleinement avec les bases de données de graph Ultipa. Pour des informations détaillées sur UQL, consultez la documentation.
Uql()
Exécute une requête UQL sur le graphset ou la base de données actuelle et renvoie le résultat.
Paramètres :
string
: La requête UQL à exécuter.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retours :
Response
: Résultat de la requête.error
: Un objet d'erreur contenant les détails de tout problème survenu.nil
est retourné si l'opération réussit.
// Récupère 5 nœuds @movie dans le graphset 'miniCircle' et imprime leur information
requestConfig := &configuration.RequestConfig{
UseMaster: true,
GraphName: "miniCircle",
}
query, _ := conn.Uql("find().nodes({@movie}) as n return n{*} limit 5", requestConfig)
nodeList, schemaList, _ := query.Alias("n").AsNodes()
printers.PrintNodes(nodeList, schemaList)
+-----+------+--------+--------------------------+------------------------+------+--------+
| ID | UUID | Schema | name | genre | year | rating |
+-----+------+--------+--------------------------+------------------------+------+--------+
| m_1 | 1001 | movie | The Shawshank Redemption | crime drama | 1994 | 9.7 |
| m_2 | 1002 | movie | Farewell My Concubine | drama romance LGBT | 1993 | 9.6 |
| m_3 | 1003 | movie | Forrest Gump | drama romance | 1994 | 9.5 |
| m_4 | 1004 | movie | Léon | drama action crime | 1994 | 9.4 |
| m_5 | 1005 | movie | Titanic | drama romance disaster | 1997 | 9.4 |
+-----+------+--------+--------------------------+------------------------+------+--------+
Pour plus d'exemples, veuillez consulter Types Mapping Ultipa et Go.
UQLStream()
Exécute une requête UQL sur le graphset ou la base de données actuelle et renvoie le résultat de manière incrémentielle, permettant de gérer de grands ensembles de données sans tout charger en mémoire d’un coup.
Paramètres :
string
: La requête UQL à exécuter.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retours :
UQLResponseStream
: Résultat de la requête.error
: Un objet d'erreur contenant les détails de tout problème survenu.nil
est retourné si l'opération réussit.
// Récupère tous les chemins à 1 étape dans le graphset 'miniCircle'
requestConfig := &configuration.RequestConfig{
UseMaster: true,
GraphName: "miniCircle",
}
stream, err := conn.UQLStream("n().e().n() as paths return paths{*}", requestConfig)
if err != nil {
println(err)
}
count := 0
for true {
resp, err := stream.Recv(true)
if err != nil {
println("End")
}
if resp != nil {
printers.PrintStatistics(resp.Statistic)
paths, err := resp.Get(0).AsPaths()
if err != nil {
println(err)
}
count += len(paths)
println("Count = ", count)
} else {
break
}
}
stream.Close()
Total Cost : 0.029s | Engine Cost : 0.001s
Count = 1250
Total Cost : 0.029s | Engine Cost : 0.001s
Count = 1390
End
Exemple Complet
package main
import (
"github.com/ultipa/ultipa-go-sdk/sdk"
"github.com/ultipa/ultipa-go-sdk/sdk/configuration"
"github.com/ultipa/ultipa-go-sdk/utils"
)
func main() {
// Configuration des connexions
//Exemple d’URI : hosts="mqj4zouys.us-east-1.cloud.ultipa.com:60010"
config, _ := configuration.NewUltipaConfig(&configuration.UltipaConfig{
Hosts: []string{"192.168.1.85:60061", "192.168.1.86:60061", "192.168.1.87:60061"},
Username: "***",
Password: "***",
})
// Établit une connexion à la base de données
conn, _ := sdk.NewUltipa(config)
// Configuration des requêtes
requestConfig := &configuration.RequestConfig{
UseMaster: true,
GraphName: "miniCircle",
}
// Récupère 10 nœuds et imprime la valeur de la propriété _id et name du premier retourné
query, _ := conn.Uql("find().nodes({@movie}) as n return n{*} limit 10", requestConfig)
nodeList, _, _ := query.Alias("n").AsNodes()
println(utils.JSONString(nodeList[0].GetID()))
println(utils.JSONString(nodeList[0].Values.Get("name")))
}