Como trabalhar com consultas no Amazon Keyspaces - Amazon Keyspaces (para Apache Cassandra)

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como trabalhar com consultas no Amazon Keyspaces

Esta seção fornece uma introdução ao trabalho com consultas no Amazon Keyspaces (para Apache Cassandra). As instruções CQL disponíveis para consultar, transformar e gerenciar dados são SELECT, INSERT, UPDATE e DELETE. Os tópicos a seguir descrevem algumas das opções mais complexas disponíveis ao se trabalhar com consultas. Para obter a sintaxe completa da linguagem com exemplos, consulte Declarações DML (linguagem de manipulação de dados) no Amazon Keyspaces.

Como usar o operador IN com a Instrução SELECT no Amazon Keyspaces

SELECT IN

Você pode consultar dados de tabelas usando a instrução SELECT, que lê uma ou mais colunas para uma ou mais linhas em uma tabela e retorna um conjunto de resultados contendo as linhas correspondentes à solicitação. Uma instrução SELECT contém uma select_clause que determina quais colunas devem ser lidas e retornadas no conjunto de resultados. A cláusula pode conter instruções para transformar os dados antes de retorná-los. A cláusula opcional WHERE especifica quais linhas devem ser consultadas e é composta por relações nas colunas que fazem parte da chave primária. O Amazon Keyspaces oferece suporte à palavra-chave IN na cláusula WHERE. Esta seção usa exemplos para mostrar como o Amazon Keyspaces processa instruções SELECT com a palavra-chave IN.

Esses exemplos demonstram como o Amazon Keyspaces divide a instrução SELECT com a palavra-chave IN em subconsultas. Neste exemplo, usamos uma tabela com o nome my_keyspace.customers. A tabela tem uma coluna de chave primária department_id, duas colunas de clustering sales_region_id e sales_representative_id e uma coluna que contém o nome do cliente na coluna customer_name.

SELECT * FROM my_keyspace.customers; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 0 | 0 | 0 | a 0 | 0 | 1 | b 0 | 1 | 0 | c 0 | 1 | 1 | d 1 | 0 | 0 | e 1 | 0 | 1 | f 1 | 1 | 0 | g 1 | 1 | 1 | h

Usando essa tabela, você pode executar a instrução SELECT a seguir para encontrar os clientes nos departamentos e regiões de vendas nos quais você está interessado com a palavra-chave IN na cláusula WHERE. A instrução a seguir é um exemplo disso.

SELECT * FROM my_keyspace.customers WHERE department_id IN (0, 1) AND sales_region_id IN (0, 1);

O Amazon Keyspaces divide essa instrução em quatro subconsultas, conforme mostrado na saída a seguir.

SELECT * FROM my_keyspace.customers WHERE department_id = 0 AND sales_region_id = 0; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 0 | 0 | 0 | a 0 | 0 | 1 | b SELECT * FROM my_keyspace.customers WHERE department_id = 0 AND sales_region_id = 1; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 0 | 1 | 0 | c 0 | 1 | 1 | d SELECT * FROM my_keyspace.customers WHERE department_id = 1 AND sales_region_id = 0; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 1 | 0 | 0 | e 1 | 0 | 1 | f SELECT * FROM my_keyspace.customers WHERE department_id = 1 AND sales_region_id = 1; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 1 | 1 | 0 | g 1 | 1 | 1 | h

Quando a palavra-chave IN é usada, o Amazon Keyspaces pagina automaticamente os resultados em qualquer um dos seguintes casos:

  • Depois que cada 10ª subconsulta for processada.

  • Depois de processar 1MB de E/S lógica.

  • Se você configurou um PAGE SIZE, o Amazon Keyspaces pagina depois de ler o número de consultas para processamento com base no conjunto PAGE SIZE.

  • Quando você usa a palavra-chave LIMIT para reduzir o número de linhas retornadas, o Amazon Keyspaces pagina depois de ler o número de consultas para processamento com base no conjunto LIMIT.

A tabela a seguir é usada para ilustrar isso com um exemplo.

Para obter mais informações sobre paginação, consulte Como paginar resultados no Amazon Keyspaces.

SELECT * FROM my_keyspace.customers; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 2 | 0 | 0 | g 2 | 1 | 1 | h 2 | 2 | 2 | i 0 | 0 | 0 | a 0 | 1 | 1 | b 0 | 2 | 2 | c 1 | 0 | 0 | d 1 | 1 | 1 | e 1 | 2 | 2 | f 3 | 0 | 0 | j 3 | 1 | 1 | k 3 | 2 | 2 | l

Você pode executar a instrução a seguir nessa tabela para ver como a paginação funciona.

SELECT * FROM my_keyspace.customers WHERE department_id IN (0, 1, 2, 3) AND sales_region_id IN (0, 1, 2) AND sales_representative_id IN (0, 1);

O Amazon Keyspaces processa essa declaração como 24 subconsultas, porque a cardinalidade do produto cartesiano de todos os termos IN contidos nessa consulta é 24.

department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 0 | 0 | 0 | a 0 | 1 | 1 | b 1 | 0 | 0 | d 1 | 1 | 1 | e ---MORE--- department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 2 | 0 | 0 | g 2 | 1 | 1 | h 3 | 0 | 0 | j ---MORE--- department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 3 | 1 | 1 | k

Este exemplo mostra como você pode usar a cláusula ORDER BY em uma instrução SELECT com a palavra-chave IN.

SELECT * FROM my_keyspace.customers WHERE department_id IN (3, 2, 1) ORDER BY sales_region_id DESC; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 3 | 2 | 2 | l 3 | 1 | 1 | k 3 | 0 | 0 | j 2 | 2 | 2 | i 2 | 1 | 1 | h 2 | 0 | 0 | g 1 | 2 | 2 | f 1 | 1 | 1 | e 1 | 0 | 0 | d

As subconsultas são processadas na ordem em que as colunas da chave de partição e da chave clustering são apresentadas na consulta. No exemplo abaixo, as subconsultas para o valor da chave de partição “2” são processadas primeiro, seguidas pelas subconsultas para o valor da chave de partição “3” e “1”. Os resultados de uma determinada subconsulta são ordenados de acordo com a cláusula de ordenação da consulta, se presente, ou com a ordem de clustering da tabela definida durante sua criação.

SELECT * FROM my_keyspace.customers WHERE department_id IN (2, 3, 1) ORDER BY sales_region_id DESC; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 2 | 2 | 2 | i 2 | 1 | 1 | h 2 | 0 | 0 | g 3 | 2 | 2 | l 3 | 1 | 1 | k 3 | 0 | 0 | j 1 | 2 | 2 | f 1 | 1 | 1 | e 1 | 0 | 0 | d

Como ordenar resultados no Amazon Keyspaces

A cláusula ORDER BY especifica a ordem de classificação dos resultados retornados em uma instrução SELECT. A instrução usa uma lista de nomes de colunas como argumentos e, para cada coluna, você pode especificar a ordem de classificação dos dados. Você só pode especificar colunas de clustering em cláusulas de ordenação; colunas sem clustering não são permitidas.

As duas opções de ordem de classificação disponíveis para os resultados retornados são ASC para ordem de classificação crescente e DESC para decrescente.

SELECT * FROM my_keyspace.my_table ORDER BY (col1 ASC, col2 DESC, col3 ASC); col1 | col2 | col3 ------+------+------ 0 | 6 | a 1 | 5 | b 2 | 4 | c 3 | 3 | d 4 | 2 | e 5 | 1 | f 6 | 0 | g
SELECT * FROM my_keyspace.my_table ORDER BY (col1 DESC, col2 ASC, col3 DESC); col1 | col2 | col3 ------+------+------ 6 | 0 | g 5 | 1 | f 4 | 2 | e 3 | 3 | d 2 | 4 | c 1 | 5 | b 0 | 6 | a

Se você não especificar a ordem de classificação na instrução de consulta, a ordem padrão da coluna de clustering será usada.

As possíveis ordens de classificação que você pode usar em uma cláusula de ordenação dependem da ordem de classificação atribuída a cada coluna de clustering na criação da tabela. Os resultados da consulta só podem ser classificados na ordem definida para todas as colunas de clustering na criação da tabela ou no inverso da ordem de classificação definida. Outras combinações possíveis não são permitidas.

Por exemplo, se a CLUSTERING ORDER da tabela for (col1 ASC, col2 DESC, col3 ASC), os parâmetros válidos para ORDER BY serão (col1 ASC, col2 DESC, col3 ASC) ou (col1 DESC, col2 ASC, col3 DESC). Para obter mais informações sobre a CLUSTERING ORDER, consulte table_options em CRIAR TABELA.

Como paginar resultados no Amazon Keyspaces

O Amazon Keyspaces pagina automaticamente os resultados das instruções SELECT quando os dados lidos para processar a instrução SELECT excedem 1 MB. Com a paginação, os resultados da instrução SELECT são divididos em "páginas" de dados com 1 MB de tamanho (ou menos). Uma aplicação pode processar a primeira página de resultados e, em seguida, a segunda página, e assim por diante. Os clientes devem sempre verificar os tokens de paginação ao processar consultas SELECT que retornam várias linhas.

Se um cliente fornecer um PAGE SIZE que exija a leitura de mais de 1 MB de dados, o Amazon Keyspaces divide os resultados automaticamente em várias páginas com base nos incrementos de 1 MB de leitura de dados.

Por exemplo, se o tamanho médio de uma linha for 100 KB e você especificar um PAGE SIZE de 20, o Amazon Keyspaces pagina os dados automaticamente depois de ler 10 linhas (1000 KB de dados lidos).

Como o Amazon Keyspaces pagina os resultados com base no número de linhas que lê para processar uma solicitação e não no número de linhas retornadas no conjunto de resultados, algumas páginas podem não conter nenhuma linha se você estiver executando consultas filtradas.

Por exemplo, se você definir PAGE SIZE como 10 e o Keyspaces avaliar 30 linhas para processar sua consulta SELECT, o Amazon Keyspaces retornará três páginas. Se apenas um subconjunto das linhas corresponder à sua consulta, algumas páginas poderão ter menos de 10 linhas. Para ver um exemplo de como LIMIT as consultas PAGE SIZE of podem afetar a capacidade de leitura, consulteLimitar consultas.