Prise en charge de SQL dans NCache

Dans des scénarios complexes réels, votre application doit souvent récupérer des données en fonction d'attributs particuliers plutôt que de rechercher via la clé primaire. L'interrogation de vos données à l'aide de SQL vous permet de récupérer plus facilement les données de votre base de données en fonction de votre logique personnalisée au moment de l'exécution.

NCache prend en charge un mécanisme de requête SQL pour vous permettre de rechercher votre cache selon un critère donné et de renvoyer l'ensemble de résultats requis. NCache utilise un langage de requête très proche du langage structuré SQL natif, ce qui vous permet d'interroger facilement vos données indexées en cache.

 

Méthodes de requête

NCache utilise une interface de requête similaire à l'interface ADO.NET pour prendre en charge diverses méthodes de requête pour rechercher ou supprimer des données du cache. Voici quelques-unes des méthodes de requête les plus importantes prises en charge dans NCache.

  • ExécuterReader est utilisé pour rechercher des données et renvoyer des paires clé-valeur. Lors de l'utilisation de la méthode ExecuteReader, vous pouvez spécifier si vous souhaitez uniquement renvoyer les clés ou les deux clés et les données associées (soit dans leur ensemble, soit par morceaux).
  • string query = "SELECT * FROM FQN.Product WHERE ProductID > ?";
    var queryCommand = new QueryCommand(query);
    queryCommand.Parameters.Add("ProductID",50000);
    ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand, false, 0);
    if (reader.FieldCount > 0)
    {
        while (reader.Read())
        {
            string result = reader.GetValue<string>(0);
        }
    }
    String query = "SELECT * FROM FQN.Product WHERE ProductID > ?";
    QueryCommand queryCommand = new QueryCommand(query);
    HashMap<String, Object> parameters = new HashMap<>();
    parameters.put("ProductID", 50000);
    queryCommand.getParameters().putAll(parameters);
    CacheReader cacheReader = cache.getSearchService().executeReader(queryCommand);
    if (cacheReader.getFieldCount() > 0) {
        while (cacheReader.read()) {
            cacheReader.getString(0);
    }
  • ExécuterSans Requête est utilisé lors de la suppression d'entrées à l'aide d'instructions SQL. Il renvoie le nombre de lignes supprimées en conséquence.
  • ExécuterScalaire est normalement utilisé pour les opérations de comptage et d'agrégation où la requête doit renvoyer une valeur unique.
 

Projections SQL

NCache vous permet de spécifier les colonnes à projeter sur votre requête SQL. Ci-dessous sont mentionnées les projections de base les plus couramment utilisées prises en charge dans NCache.

  • *: lorsqu'il est utilisé dans une requête, il renvoie les valeurs de tous les attributs indexés de l'objet spécifié défini au moment de la configuration.
  • $VALUE$ : lorsqu'il est utilisé dans une requête, il vous renvoie la clé avec l'objet entier qui contient des attributs indexés et non indexés.
  • Fonctions d'agrégat : ces fonctions incluent des fonctions telles que SUM(), COUNT(), MIN/MAX(), etc. Vous pouvez utiliser des fonctions d'agrégation avec n'importe quelle combinaison d'autres projections SQL fournies.
  • SELECT COUNT(*) FROM FQN.Product WHERE UnitsInStock > ?

Reportez-vous à Recherche SQL d'un objet pour plus d'information.

 

Opérateurs divers SQL

Ces opérateurs sont utilisés et réutilisés dans toute la base de données SQL pour traiter et manipuler les données. NCache prend en charge divers opérateurs SQL qui vous permettent d'obtenir efficacement le résultat souhaité. Ces fonctions sont :

  • PAR GROUPE: renvoie la valeur en regroupant toutes les clés qui relèvent du critère donné.
  • COMMANDÉ PAR: renvoie la valeur sous une forme triée.
  • DateTime: recherche dans le cache une date ou une heure particulière.
  • string query = "SELECT OrderID FROM FQN.Order WHERE OrderDate = ?";
    var queryCommand = new QueryCommand(query);
    DateTime orderDate = new DateTime(2022, 01, 01);
    queryCommand.Parameters.Add("OrderDate", orderDate);
    ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand);
    if (reader.FieldCount > 0)
    {
        while (reader.Read())
        {
            int orderID = reader.GetValue<int>("OrderID");
            Console.WriteLine($"Order: {orderID} was placed on 1st January, 2022.");
        }
    }
    else
    {
        Console.WriteLine($"No orders were placed on 1st January 2022.");
    }
    
    String query = "SELECT OrderID FROM FQN.Order WHERE OrderDate = ?";
    QueryCommand queryCommand = new QueryCommand(query);
    
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date orderDate;
    orderDate = sdf.parse("2022-01-01");
    HashMap<String, Object> parameters = new HashMap<>();
    parameters.put("OrderDate", orderDate);
    queryCommand.getParameters().putAll(parameters);
    
    CacheReader cacheReader = cache.getSearchService().executeReader(queryCommand);
    if (cacheReader.getFieldCount() > 0) {
        while (cacheReader.read()) {
    
            int orderID = cacheReader.getInt(cacheReader.getOrdinal("OrderID"));
            System.out.println("Order: " + orderID + " was placed on 1st January, 2022.");
        }
    } else {
        System.out.println("No orders were placed on 1st January 2022.");
    }
 

Opérateurs SQL dans la requête

Les opérateurs SQL sont des mots clés réservés dans la clause WHERE pour effectuer des opérations logiques et de comparaison. NCache vous fournit la prise en charge des opérateurs SQL suivants pour interroger vos données selon des conditions personnalisées.

  • IN: Cette opération permet de rechercher dans le cache tous les attributs fournis. De même, vous disposez de l'opérateur NOT IN qui recherche des attributs autres que ceux fournis dans la clause.
  • SELECT ProductName, UnitsAvailable From FQN.Product WHERE Category IN ('Beverages', 'Confections')
  • COMME: Cette opération recherche des modèles spécifiques dans une colonne. L'opérateur LIKE prend en charge deux caractères génériques :
    • *: un substitut pour zéro ou plusieurs caractères dans la chaîne.
    • ? : un substitut à un seul caractère dans une chaîne.
    • De même, vous avez le PAS COMME opérateur.

Que faire ensuite?

Avis NCache Fonctionnalités:
Télécharger NCache
Demander une démo personnalisée en direct
© Copyright Alachisoft 2002 - . Tous droits réservés. NCache est une marque déposée de Diyatech Corp.