IBM Cloud Docs
Aprofundando-se no IBM Cloudant Dashboard

Aprofundando-se no IBM Cloudant Dashboard

O IBM® Cloudant® for IBM Cloud® Dashboard dá aos usuários do IBM Cloudant novos e experientes a oportunidade de incluir, editar e excluir documentos. Os usuários do IBM Cloudant podem refinar as opções de indexação e consulta que melhor se adequam aos casos de uso de seu aplicativo.

Objetivos

Configure alguns índices básicos usando o Dashboard para ver como funciona cada um dos mecanismos de consulta do IBM Cloudant.

Antes de Iniciar

É necessário criar uma instância de serviço no IBM Cloudant antes de iniciar este tutorial. É possível seguir as instruções no tutorial de Introdução para criar uma.

Etapa 1. O conjunto de dados

  1. Crie um banco de dados chamado books.

  2. Crie alguns dados de exemplo que representam um livro em uma biblioteca, conforme mostrado no exemplo a seguir:

    {
      "_id": "BXP9G5ZQY9Q4EA13",
      "author": "Dickens",
      "title": "David Copperfield",
      "year": 1840,
      "pages": 723,
      "publisher": "Penguin",
      "url": "https://www.somurl.com/dc"
    }
    
  3. Continue a incluir alguns documentos que correspondem ao padrão na etapa anterior usando o IBM Cloudant Dashboard.

    Os documentos armazenam pares key/value simples que contêm metadados sobre cada livro: seu autor e seu editora. Neste exemplo, abordamos os três casos de uso a seguir:

    1. Um recurso de consulta que permite que um usuário encontre um livro por editora e ano conhecidos.
    2. Um mecanismo de busca de uso geral que permite a um usuário encontrar livros por uma combinação de um ou mais dos descritores a seguir: autor, título, ano e editor.
    3. Um relatório que detalha o número de livros que são publicados por ano.

Etapa 2. Consultando livros por editora e ano - IBM Cloudant Query

O IBM Cloudant Query é uma linguagem de consulta que permite pequenas fatias de um banco de dados total a ser localizado. A consulta a seguir encontra 10 livros que são publicados por Penguin no ano de 2000:

{
  "selector": {
    "$and": [
      { "publisher": "Penguin" },
      { "year": { "$gt": 2000 } }
    ]
  },
  "limit": 10
}

A consulta contém um objeto selector, que usa operadores e campos de texto para definir a fatia de dados que você precisa:

  • $and significa que ambas as cláusulas de consulta devem ser atendidas para que um documento chegue ao conjunto de resultados.
  • { "publisher": "Penguin" }- a editora deve ser "Penguin".
  • { "year": { "$gt": 2000 } } - o ano deve ser maior que 2000. $gt significa "maior que".

Podemos tentar a consulta escolhendo "Consulta" ao visualizar nosso banco de dados books no IBM Cloudant Dashboard. É possível colar na consulta JSON e clicar em Executar consulta.

Executando uma consulta

Para tentar a consulta, execute as etapas a seguir:

  1. Acesse o painel do IBM Cloudant.

  2. Abra a instância de serviço que você criou na seção de pré-requisitos.

  3. Abra o banco de dados que você criou.

  4. Acesse a guia Consulta.

  5. Cole a consulta JSON da seção anterior na janela Consulta do Cloudant.

  6. Clique em Executar consulta. Veja os resultados na captura de tela a seguir:

    Executar a consulta, e os resultados mostram o _id, autor, páginas, editora e ano.
    Window for running queries

O IBM Cloudant corresponde aos documentos que atendem aos seus critérios e parece fazê-lo rapidamente, mas há um problema. O IBM Cloudant não está usando um índice para atender a essa consulta, o que significa que o banco de dados precisa varrer todos os documentos no banco de dados para obter sua resposta. Esta varredura está ótima para conjuntos de dados pequenos. Mas se você estiver executando um aplicativo de produção em que o conjunto de dados se expanda o tempo todo, você definitivamente não vai querer contar com consultas não indexadas.

Criando um índice

Para criar um índice, podemos dizer a IBM Cloudant para criar um índice nos campos publisher e year que estamos usando em nossa consulta.

  1. No IBM Cloudant Dashboard, selecione o banco de dados books.

  2. Selecione a guia Documentos de design.

  3. Selecione Novos índices no menu Documentos de design.

  4. Copie e cole a definição de índice a seguir:

    {
       "index": {
          "fields": [
             "publisher", "year"
          ]
       },
       "name": "publisher-year-index",indexingdashboard5
       "type": "json"
    }
    

    Veja um exemplo na captura de tela a seguir:

    Clique em Criar índice para criar um índice.
    Window for creating indexes

A matriz fields contém uma lista de campos que queremos que o IBM Cloudant indexe.

Se repetirmos nossa consulta, ela será mais rápida e permanecerá rápida mesmo que o tamanho do banco de dados atinja milhões de documentos.

A indexação instrui o IBM Cloudant a criar uma estrutura de dados secundária que permita encontrar a fatia de dados necessária muito mais rápido do que examinar todos os documentos. O IBM Cloudant Query é melhor para consultas fixas com base nos mesmos campos na mesma ordem.

Para obter mais informações, veja os detalhes a seguir na documentação do IBM Cloudant:

Este índice é útil para consultas que envolvem tanto o publisher quanto o year, mas se introduzirmos outro campo ou tornarmos a consulta mais complexa (por exemplo, usando o operador $or), o índice não será usado. Estamos de volta a uma varredura de banco de dados completa.

Para um recurso de procura de propósito geral, precisamos do IBM Cloudant Search, que é descrito na próxima seção.

Etapa 3. Criando um mecanismo de procura - IBM Cloudant Search

O IBM Cloudant Search é baseada no Apache Lucene e tem sua própria linguagem de consulta que permite que consultas ricas sejam construídas. Veja o exemplo a seguir de uma procura:

publisher:Penguin AND (year:1972 OR year:1973) AND title:Crash

Ao contrário do IBM Cloudant Query, deve-se especifica os campos para indexar antes de realiza uma consulta. Os índices do IBM Cloudant Search são definidos fornecendo-se o IBM Cloudant com uma função JavaScript que é chamada uma vez para cada documento no banco de dados - se a função chamar index, dados serão incluídos no índice.

  1. No IBM Cloudant Dashboard, selecione o banco de dados books.

  2. Selecione a guia Documentos de design.

  3. Selecione Novo índice de procura no menu.

  4. Insira um nome de documento de design.

  5. Insira um nome de índice.

  6. Cole o código a seguir na função de índice de procura:

    function (doc) {
      index("author", doc.author);
      index("publisher", doc.publisher);
      index("title", doc.title);
      index("year", doc.year);
    }
    
  7. Escolha o "Analisador padrão".

    Selecione o Standard Analyzer, e clique em Criar Documento e Construção de Índice para criar um índice de pesquisa.
    New Search Index window

Em seguida, é possível construir consultas complexas que envolvem um, alguns ou todos os campos indexados combinados com os operadores AND e OR.

O IBM Cloudant Search é melhor se você tiver muitos casos de uso de pesquisa envolvendo diferentes combinações de campos.

Para obter mais informações, consulte os recursos a seguir:

Etapa 4. Agregando dados - MapReduce

IBM Cloudant Consulta e IBM Cloudant A pesquisa não pode agregar resultados de pesquisa. Em outras palavras, não é possível perguntar: Quantos livros foram publicados em 1973? o recurso MapReduce do IBM Cloudant permite a criação de índices secundários que podem ser usados para seleção ou agregação. Os índices MapReduce são, como IBM Cloudant Search, que é criado com o fornecimento de uma função JavaScript- qualquer chamada a uma função emit adiciona uma linha ao índice.

  1. No IBM Cloudant Dashboard, selecione o banco de dados books.

  2. Selecione a guia Documentos de design.

  3. Selecione Nova visualização do menu.

  4. Mantenha Novo documento no campo suspenso.

  5. Digite um nome no campo Nome do índice. Este nome é o novo nome da visualização.

  6. Selecione _count no menu suspenso Reduzir (opcional). Desta forma nossos resultados serão contados.

  7. Cole o código a seguir no campo Função do mapa:

    function (doc) {
      emit(doc.year, null);
    }
    

    Veja um exemplo da janela na captura de tela a seguir:

    Para criar uma nova visão MapReduce, inclua um nome de documento de design; inclua _design de documentos; inclua um nome de Índice e inclua uma função Mapa.
    New View window

    A visualização MapReduce subsequente permite que os documentos sejam encontrados por ano (já que essa é a chave do índice). Mas se nós selecionarmos a caixa de seleção para a função Reduce no menu suspenso Opções, o índice agregará os resultados, agrupando por chave (ano):

    A visualização MapReduce subsequente permite que os documentos sejam encontrados por ano (já que essa é a chave do índice). Mas se marcarmos a caixa de seleção da função Reduzir no menu suspenso Opções, o índice agregará os resultados, agrupando-os por chave (ano).
    Windows for running queries

    Veja um exemplo de resultado depois que o índice agregou os resultados.

    Veja os resultados agregados do índice.
    Conjunto de resultados

    As visualizações MapReduce são perfeitas para gerar visualizações ordenadas de seus dados, contendo pares key/value que você define. Eles podem ser usados para seleção de chaves individuais, consultas de intervalo ou agrupamento de agregação por chave.

Para obter mais informações, consulte os recursos a seguir na documentação do IBM Cloudant: