Supporto SQL in NCache

A differenza dei database NoSQL standard che richiedono l'indicizzazione manuale o plugin di terze parti, NCache Offre funzionalità di interrogazione SQL native che colmano il divario tra la familiarità con i tradizionali RDBMS e la scalabilità distribuita dei database NoSQL. In scenari complessi reali, la tua applicazione spesso ha bisogno di recuperare dati in base ad attributi specifici anziché effettuare una ricerca tramite la chiave primaria. L'interrogazione dei dati tramite SQL semplifica il recupero dei dati dal database in base alla tua logica personalizzata in fase di esecuzione.

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. NCache SQL supporta i tipi di dati standard .NET e Java, tra cui string, int, decimal, bool e DateTime, garantendo la sicurezza dei tipi durante l'esecuzione delle query.

 

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). NCache ottimizza Esegui Lettore per ambienti ad alta concorrenza utilizzando un approccio basato su flussi, consentendo l'elaborazione efficiente di grandi set di dati con un sovraccarico di memoria minimo.
  • // Using SQL parameters to fetch specific Product keys and values from the distributed cache
    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);
        }
    }
    // Executes an SQL-based search to retrieve Product objects matching criteria
    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 di aggregazione SQL e query avanzate (GROUP BY e ORDER BY)

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.
 

Casi d'uso comuni per le query SQL

  • Rapporti dinamici: Recupero dei dati in base ai filtri utente in fase di esecuzione.
  • Operazioni in blocco: Identificazione di grandi insiemi di elementi di stato scaduti o specifici da eliminare utilizzando EseguiNonQuery.
  • Analytics: utilizzando SUM or COUNT per un dashboarding in tempo reale senza accedere al database primario.

Cosa fare dopo?

Domande frequenti (FAQ)

NCache consente di cercare dati memorizzati nella cache utilizzando la sintassi SQL-92 standard (SELEZIONA, DAe DOVE clausole). È possibile eseguire queste query tramite SearchService.ExecuteReader metodo, che fornisce un'interfaccia in stile ADO.NET per le applicazioni .NET e Java.

NCache supporta le funzioni di aggregazione SQL comuni, tra cui SUM, COUNT, MIN, MAXe AVGQueste funzioni vengono eseguite lato server sul cluster di cache, il che riduce al minimo il traffico di rete restituendo al client solo il risultato calcolato.

Sì, NCache fornisce supporto nativo per RAGGRUPPA PER and ORDINATO DA operatori. Ciò consente di categorizzare i set di risultati in base agli attributi e di ordinarli in ordine crescente o decrescente direttamente all'interno della cache distribuita.

Sì. Esecuzione query SQL in NCache È completamente thread-safe e progettato per ambienti aziendali ad alta concorrenza. Garantisce la coerenza dei dati su più istanze client anche durante carichi transazionali elevati.

NCache SQL supporta tutti i tipi di dati standard .NET e Java, inclusi stringa, int, decimale, boole AppuntamentoCiò garantisce una rigorosa sicurezza dei tipi e un'integrazione perfetta con il modello di oggetti della tua applicazione.

© Copyright Alachisoft 2002 - . Tutti i diritti riservati. NCache è un marchio registrato di Diyatech Corp.