Suporte SQL em NCache

Em cenários complexos da vida real, seu aplicativo geralmente precisa buscar dados com base em atributos específicos, em vez de pesquisar na chave primária. Consultar seus dados usando SQL facilita a recuperação de dados do seu banco de dados com base em sua lógica personalizada em tempo de execução.

NCache suporta um mecanismo de consulta SQL para permitir que você pesquise seu cache de acordo com um determinado critério e retorne o conjunto de resultados necessário. NCache usa uma linguagem de consulta muito próxima da linguagem estruturada SQL nativa, o que facilita a consulta de seus dados indexados em cache.

 

Métodos de consulta

NCache usa interface de consulta semelhante à interface ADO.NET para oferecer suporte a vários métodos de consulta para pesquisar ou excluir dados do cache. Aqui estão alguns dos métodos de consulta mais importantes suportados em NCache.

  • ExecuteReader é usado para pesquisar dados e retornar pares de valores-chave. Ao usar o método ExecuteReader, você pode especificar se deseja retornar apenas as chaves ou ambas as chaves e os dados associados (como um todo ou em partes).
  • 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);
    }
  • Executar sem consulta é empregado ao excluir entradas usando instruções SQL. Ele retorna o número de linhas excluídas como resultado.
  • Executar Escalar normalmente é usado para operações de contagem e agregação em que a consulta precisa retornar um único valor.
 

Projeções SQL

NCache permite que você especifique colunas para projetar em sua consulta SQL. A seguir mencionadas são as projeções básicas e mais comumente usadas suportadas em NCache.

  • *: quando usado em uma consulta, ele retorna os valores de todos os atributos indexados do objeto especificado definido no momento da configuração.
  • $VALUE$: quando usado em uma consulta, ele retorna a chave com todo o objeto que contém atributos indexados e não indexados.
  • Funções agregadas: essas funções incluem funções como SUM(), COUNT(), MIN/MAX(), etc. Você pode usar funções agregadas com qualquer combinação de outras projeções SQL fornecidas.
  • SELECT COUNT(*) FROM FQN.Product WHERE UnitsInStock > ?

Consulte Pesquisa SQL para Objeto para obter mais informações.

 

Operadores diversos SQL

Esses operadores são usados ​​e reutilizados em todo o banco de dados SQL para processamento e manipulação de dados. NCache suporta vários operadores SQL que permitem obter o resultado desejado de forma eficiente. Essas funções são:

  • GRUPO: retorna o valor agrupando todas as chaves que se enquadram no critério fornecido.
  • ORDENAR POR: retorna o valor em um formulário classificado.
  • DateTime: pesquisa o cache em relação a uma data ou hora específica.
  • 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.");
    }
 

Operadores SQL na consulta

Os operadores SQL são palavras-chave reservadas na cláusula WHERE para realizar operações lógicas e de comparação. NCache fornece suporte dos seguintes operadores SQL para consultar seus dados de acordo com condições personalizadas.

  • IN: Esta operação ajuda a pesquisar no cache todos os atributos fornecidos. Da mesma forma, você tem o operador NOT IN que procura atributos diferentes daqueles fornecidos na cláusula.
  • SELECT ProductName, UnitsAvailable From FQN.Product WHERE Category IN ('Beverages', 'Confections')
  • GOSTAR: Esta operação procura padrões específicos em uma coluna. O operador LIKE suporta dois curingas:
    • *: um substituto para zero ou mais caracteres na string.
    • ? : um substituto para um único caractere em uma string.
    • Da mesma forma, você tem a NÃO PARECE operador.

O que fazer a seguir?

Avaliações NCache Funcionalidades
Baixar NCache
Solicite uma demonstração AO VIVO personalizada
© Copyright Alachisoft 2002 - . Todos os direitos reservados. NCache é uma marca registrada da Diyatech Corp.