Supporto SQL in NCache

Negli scenari complessi della vita reale, l'applicazione spesso deve recuperare i dati in base a particolari attributi anziché cercare nella chiave primaria. L'esecuzione di query sui dati utilizzando SQL semplifica il recupero dei dati dal database in base alla logica personalizzata in fase di runtime.

NCache supporta un meccanismo di interrogazione SQL per consentirti di cercare nella cache in base a un determinato criterio e restituire il set di risultati richiesto. NCache utilizza un linguaggio di query molto simile al linguaggio strutturato SQL nativo, che semplifica l'interrogazione dei dati memorizzati nella cache indicizzati.

 

Metodi di interrogazione

NCache utilizza un'interfaccia di query simile all'interfaccia ADO.NET per supportare vari metodi di query per cercare o eliminare dati dalla cache. Di seguito sono riportati alcuni dei più importanti metodi di query supportati in NCache.

  • Esegui Lettore viene utilizzato per cercare dati e restituire coppie chiave-valore. Durante l'utilizzo del metodo ExecuteReader, è possibile specificare se si desidera restituire solo le chiavi o entrambe le chiavi e i dati associati (nel loro insieme o in blocchi).
  • 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);
    }
  • EseguiNonQuery viene utilizzato quando si eliminano voci utilizzando istruzioni SQL. Come risultato restituisce il numero di righe cancellate.
  • Esegui Scalare viene normalmente utilizzato per operazioni di conteggio e aggregazione in cui la query deve restituire un singolo valore.
 

Proiezioni SQL

NCache consente di specificare le colonne da proiettare rispetto alla query SQL. Di seguito sono indicate le proiezioni di base più comunemente utilizzate supportate NCache.

  • *: quando utilizzato in una query, restituisce i valori di tutti gli attributi indicizzati dell'oggetto specificato definito al momento della configurazione.
  • $VALORE$ : quando utilizzato in una query, restituisce la chiave con l'intero oggetto che contiene attributi indicizzati e non indicizzati.
  • Funzioni aggregate: queste funzioni includono funzioni come SUM(), COUNT(), MIN/MAX() e così via. È possibile utilizzare funzioni aggregate con qualsiasi combinazione di altre proiezioni SQL fornite.
  • SELECT COUNT(*) FROM FQN.Product WHERE UnitsInStock > ?

Fare riferimento a Ricerca SQL per oggetto per maggiori informazioni.

 

Operatori vari SQL

Questi operatori vengono utilizzati e riutilizzati in tutto il database SQL per l'elaborazione e la manipolazione dei dati. NCache supporta vari operatori SQL che consentono di ottenere il risultato desiderato in modo efficiente. Queste funzioni sono:

  • RAGGRUPPA PER: restituisce il valore raggruppando tutte le chiavi che rientrano nel criterio specificato.
  • ORDINATO DA: restituisce il valore in una forma ordinata.
  • Appuntamento: cerca nella cache relativa ad una data o ora particolare.
  • 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.");
    }
 

Operatori SQL nella query

Gli operatori SQL sono parole chiave riservate nella clausola WHERE per eseguire operazioni logiche e di confronto. NCache ti fornisce il supporto dei seguenti operatori SQL per interrogare i tuoi dati in base a condizioni personalizzate.

  • IN: Questa operazione aiuta a cercare nella cache tutti gli attributi forniti. Allo stesso modo, hai l'operatore NOT IN che cerca attributi diversi da quelli forniti nella clausola.
  • SELECT ProductName, UnitsAvailable From FQN.Product WHERE Category IN ('Beverages', 'Confections')
  • PIACE: Questa operazione ricerca modelli specifici in una colonna. L'operatore LIKE supporta due caratteri jolly:
    • *: un sostituto di zero o più caratteri nella stringa.
    • ? : un sostituto per un singolo carattere in una stringa.
    • Allo stesso modo, hai il NON COME operatore.

Cosa fare dopo?

Review NCache Caratteristiche
Scaricare NCache
Richiedi una Demo LIVE personalizzata
© Copyright Alachisoft 2002 - . Tutti i diritti riservati. NCache è un marchio registrato di Diyatech Corp.