FastBit e Índice Bitmap de Junção. Anderson Chaves Carniel Prof. Thiago Luís Lopes Siqueira

Documentos relacionados
Algoritmos de Junção Estrela em MapReduce

SB-index: Um Índice Espacial baseado em Bitmap para Data Warehouse Geográfico

Tecnologias Oracle para DW Índice Bitmap no Oracle 11g EE. Cristiane Yaguinuma Débora Marrach Luana Annibal Vinícius Ferraz

COMPUTAÇÃO EM NUVEM E PROCESSAMENTO MASSIVO DE DADOS Conceitos, tecnologias e aplicações

Anderson Chaves Carniel Profa. Dra. Cristina Dutra de Aguiar Ciferri

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

Rápida revisão do Modelo Relacional

BANCO DE DADOS GERENCIAL 1 A U L A 2

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

OTIMIZAÇÃO DE CONSULTAS - MYSQL. Prof. Antonio Almeida de Barros Junior

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

ARMAZENAMENTO E PROCESSAMENTO DE BANCOS DE DADOS RELACIONAIS

MySql. Introdução a MySQL. Andréa Garcia Trindade

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

mod._1_teoria_sistemas de bancos de dados.doc

Conceitos SQL SQL 19/03/2017 O que é dado? O que é BD? O que é uma informação? O que é SGBD? O que é SQL? O que é BD? O que é SGBD?

Tecnologias Oracle para DW Visões Materializadas no Oracle

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Banco de Dados I Introdução SQL

Tecnologias Oracle para DW Visões Materializadas no Oracle

PROGRAMA. 3.SQL Básico. 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação. Prof. Dr. Marcos Tsuzuki

SQL (Tópicos) Structured Query Language

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

Avisos. SQL: Visões. Roteiro SELECT. Suporte de SQL para OLAP SQL DML CONTINUAÇÃO CONSULTAS AVANÇADAS. Cronograma das próximas aulas

Comandos de Manipulação

Índice Bitmap e Indexação de Ambientes de Data Warehousing

Android e Bancos de Dados

Utilizando o Postgres - comandos SQL para a manipulação de dados

BCD29008 Banco de dados

Roteiro. SQL: Visões. Suporte de SQL para OLAP SELECT. Detalhando GROUP BY SQL DML CONTINUAÇÃO CONSULTAS AVANÇADAS. Consultas Avançadas Visões

Bancos (Bases) de Dados

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro

Importar e Exportar Dados

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

A linguagem SQL

MANUAL DE INSTALAÇÃO SISTEMA DE GERÊNCIA CONSCIUS

Instalação do TextPad

Android e Bancos de Dados

BCD29008 Banco de dados

Tarefa Orientada 8 Criação de tabelas

Banco de dados 1. Linguagem SQL DDL e DML. Professor: Victor Hugo L. Lopes

Laboratório de Banco de Dados II Aula 04. Prof. Érick de Souza Carvalho

SQL. Processamento Analítico de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri Prof. Dr. Ricardo Rodrigues Ciferri

Administração de Banco de Dados

IMPLEMENTAÇÃO DE BANCO DE DADOS

Administração de Banco de Dados

Gerenciamento de pedidos Teoria e Prática

1. Construindo Índices Bitmap de Junção

Page 1. Prof. Constantino Jacob

Introdução ao Banco de Dados. Banco de Dados

BCD29008 Banco de dados

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

A linguagem SQL

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

Introdução ao PostgreSQL

Modelagem Multidimensional - Nível Físico -

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

SQL Linguagem de Definição de Dados

SIG: Sistemas de Informações Geográficas. Adaptado de Gilberto Câmara

SQL. Processamento Analítico de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri Prof. Dr. Ricardo Rodrigues Ciferri

DGPAPP Tutorial. Introdução. Daniel Centeno Einloft Vinicius Meirelles Pereira. 20 May 2014

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados>

ANÁLISE E PROJETO DE BANCO DE DADOS

Múltiplas Tabelas. Disciplina de Banco de Dados

SISTEMAS DE INFORMAÇÃO

Banco de Dados. Professora: Luciana Faria

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

Modelagem Física e SQL

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

Linguagem SQL. Comandos Básicos

Agenda. Linguagem de Consulta SQL. 1. Introdução Histórico. 1. Introdução BD Relacionais

BANCO DE DADOS PARA NINJAS

Persistência de Objetos

EXERCÍCIOS PRÁTICOS. Banco de Dados

15 - Introdução às Bases de Dados

BANCO DE DADOS. Araújo Lima. Jan / Araújo

Índice Bitmap. Aluno: Carlos Henrique Villa Pinto Orientador: Ricardo Rodrigues Ciferri Colaboradora: Renata Miwa Tsuruda

Modelagem Física e SQL

Instalação JDK. Joyce França. Professora de Ciência da Computação - IFNMG

Fundamentos de SQL. Curso: Técnico em Redes de Computadores Disciplina: Tecnologias e Linguagem de Banco de dados Professor: Rodrigo da Rocha

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

Instalação JDK 10/03/2017

Aula 06 Sistemas Embarcados LT38C

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

Linguagem SQL Sub-linguagem DDL

SQL - Structured Query Language. Karine Reis Ferreira

Introdução em Banco de Dados

Comentários: Banco de Dados Thiago Cavalcanti

SQL. Prof. Roger Cristhian Gomes

P R O F. M E. H É L I O E S P E R I D I Ã O. Eng. Computação

Manipulação de Dados com SQL

INSTALAÇÃO EM 1 (um) COMPUTADOR INSTALAÇÃO EM REDE

Conceito de Campos e Tabelas

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Transcrição:

FastBit e Índice Bitmap de Junção Anderson Chaves Carniel Prof. Thiago Luís Lopes Siqueira

AGENDA Introdução Instalação Índice Bitmap de Junção Construção do índice Consultas sobre o índice

Introdução FastBit é um software desenvolvido pelo Lawrence Berkeley National Laboratory Usado para a construção e o uso do Índice Bitmap Este índice é amplamente empregado em DW para diminuir o tempo de resposta das consultas Codificado em C++ https://sdm.lbl.gov/fastbit/

AGENDA Introdução Instalação Índice Bitmap de Junção Construção do índice Consultas sobre o índice

Requisitos Sistema operacional Windows Compilador Visual C++ 2008 Express Sistema operacional Linux Compilador GCC PostgreSQL FastBit 1.2.1

Instalação - Linux Usando Ubuntu 9.04. 1º Passo: em https://codeforge.lbl.gov/projects/fastbit/ façam o download do fastbit ibis1.2.1 2010-11-03. 2º Passo: descompactar o arquivo 3º Passo: dentro da pasta criada pelo arquivo descompactado, executar o comando./configure

Instalação - Linux 4º Passo: usar o comando make all 5º Passo: usar o comando make check 6º Passo: usar o comando make install

Instalação - Windows É necessário compilar o código-fonte. 1º Passo: instalar o Visual C++ Express Edition (caso não exista no ( Studio pc uma outra versão, como o Visual 2º Passo: em https://codeforge.lbl.gov/projects/fastbit/ façam o download do fastbit ibis1.2.1 2010-11-03. Descompactem esta pasta, preferencialmente, no C:\ 3º Passo: precisamos da biblioteca POSIX Threads for Win32 para compilar o FastBit. Façam o download da versão 2.8.0: (ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-8-0-release.exe) Instalem esta biblioteca, de preferência no C:\

Instalação - Windows 4º Passo: Explorem a pasta onde ficaram os arquivos da Pthreads e copiem os arquivos conforme as imagens a seguir. Cuidado para não mover os arquivos. Criem apenas cópias deles e colem nestes destinos Pre2build\lib\ *.dll para C:\Windows\System32 Pre2build\include\ (os 3 arquivos) para C:\fastbit-ibis1.0.8\src\ 5º Passo: No Visual C++ Express, abrir o projeto ibis.sln ( C:\fastbit-ibis1.0.8\win\ibis.sln (na pasta

Instalação 6º Passo (opcional): Alterar o winver de 0x0600 (Vista) para 0x0501 (XP) ou 0x0601 (Seven) nos arquivos ardea, dll, ibis, java e thula no Solution Explorer.

Instalação Clicar com o botão da direita no arquivo e depois em Properties. Ir na guia Configuration Properties -> C/C++ -> Preprocessador Alterar o WINVER Compilar

AGENDA Introdução Instalação Índice Bitmap de Junção Construção do índice Consultas sobre o índice

Índice Bitmap Conceitualmente, um índice bitmap é um vetor de bits para cada chave do índice, em que cada bit substitui um rowid; se o bit é 1, então o correspondente rowid contém o valor da chave. Uma função de mapeamento converte a posição de um bit para o rowid real. Vantagens: Tempos de respostas reduzidos para uma larga gama de consultas ad hoc Espaço de armazenamento pequeno, quando comparado com outros tipos de índice

Índice Bitmap Desvantagens: A atualização de índices bitmap não é tão eficiente quanto a de índices árvores-b, o que faz com que índices bitmap sejam indicados para BDs read-only, o que é o caso de DW. Para que haja ganho de espaço, é preciso que o número de valores da chave do índice seja pequeno. Exemplo: Suponha uma tabela Cliente, com índice bitmap por sexo (2 valores), estado civil (3 valores) e nível de renda (12 níveis). Seja a consulta: SELECT COUNT(*) FROM customers WHERE cust_marital_status = 'married' AND cust_income_level IN (8, 9);

Índice Bitmap Índices bitmap podem processar eficientemente esta consulta, simplesmente contando o número de bits da composição lógica dos bits. Lidando com valores Nulls: Diferentemente da maioria dos outros tipos de índice, índices bitmap incluem linhas que têm valores NULL. SELECT COUNT(*) FROM customers WHERE cust_marital_status IS NULL; Esta consulta usará um índice bitmap sobre cust_marital_status. Note que esta consulta não será capaz de usar um índice árvore-b.

Índice Bitmap de Junção TABELA DE DIMENSÃO: Supplier s_suppkey : s_address 1:1 TABELA DE FATOS: lineorder BITMAP DE JUNÇÃO 16

Índice Bitmap de Junção TABELA DE DIMENSÃO: Supplier s_suppkey : s_address 1:1 TABELA DE FATOS: lineorder BITMAP DE JUNÇÃO 17

Índice Bitmap de Junção TABELA DE DIMENSÃO: Supplier s_suppkey : s_address 1:1 TABELA DE FATOS: lineorder BITMAP DE JUNÇÃO 18

Índice Bitmap de Junção TABELA DE DIMENSÃO: Supplier Region < Nation < City < Address TABELA DE FATOS: lineorder BITMAP DE JUNÇÃO BITMAP DE JUNÇÃO 19

Índice Bitmap de Junção Region < Nation < City < Address TABELA DE DIMENSÃO: Supplier BITMAP DE JUNÇÃO BITMAP DE JUNÇÃO TABELA DE FATOS: lineorder 20

Índice Bitmap de Junção Region < Nation < City < Address TABELA DE DIMENSÃO: Supplier TABELA DE FATOS: lineorder BITMAP DE JUNÇÃO BITMAP DE JUNÇÃO 21

Índice Bitmap de Junção Region < Nation < City < Address TABELA DE DIMENSÃO: Supplier TABELA DE FATOS: lineorder BITMAP DE JUNÇÃO BITMAP DE JUNÇÃO 22

Índice Bitmap de Junção Processamento de consultas Velozes operações lógicas bit-a-bit Pode evitar a junção estrela a partir de distintas tabelas de dimensão TABELA DE FATOS: lineorder RESPOSTA 23

Considerações Índice Bitmap em DW convencionais Junção estrela e hierarquias de atributos Vantagens Multidimensionalidade não deteriora drasticamente o desempenho do processamento de consultas Desvantagem Atributos com alta cardinalidade Binning, Compressão, Codificação 24

AGENDA Introdução Instalação Índice Bitmap de Junção Construção do índice Consultas sobre o índice

Construção 1. Preparação dos dados: gerar arquivo csv separado por vírgula com informações das tabelas; 2. Criação das partições-ferramenta ardea: ardea -d /bjin/index0 -m "a:int, b:float, c:short" -t /bjin/test0.csv -d diretório de saída; -m especificar nomes e tipos das colunas t arquivo com informações para geração das partições

Construção Tipos de dados: byte: 8-bit signed integer. short: 16-bit signed integer. int: 32-bit signed integer. long: 64-bit signed integer. unsigned byte: unsigned 8-bit signed integer. unsigned short: unsigned 16-bit signed integer. unsigned int: unsigned 32-bit signed integer. unsigned long: unsigned 64-bit signed integer. float: 32-bit IEEE floating-point values. double: 64-bit IEEE floating-point values. key: String values with a small number of distinct choices. text: Arbitrary string values.

Construção 1. Criação das partições-ferramenta ardea: Trata dados como tabelas com linhas e colunas; Divisão de tabelas em partições ; Cada coluna é armazenada em um arquivo separado na forma binária pura; O nome do arquivo é o mesmo da coluna; O arquivo de metadados part.txt informações como: nome da partição, número de linhas e colunas de uma partição, nome das colunas, etc.

Construção 1. Criação das partições-arquivos de dados: Arquivo -part-txt colname colname.idx colname.msk colname.bin colname.sp Descrição Arquivo de metadados. Descreve o conteúdo das partições. Nome do arquivo de dados para uma coluna. Nome do arquivo de índice associado à coluna colname. Vetor de bits da máscara para valores null da coluna. Versão reordenada dos dados. Utilizado para aumentar velocidade Posição inicial das strings nos arquivos de colunas do tipo string. colname.tdlist Lista usada para construir o índice. colname.terms colname.dic colname.int Termos usados em colname.tdlist. Dicionário que mapeia string em inteiros. Versão inteira dos valores categóricos (traduzidos no dicionário de dados).

Construção 1. Criação do índice: ibis -v -d /bjin/index0 -b "<binning none/><encoding equality/> none gera um bitmap para cada valor distinto de atributo; 2. Execução da consulta: ibis -d /bjin/index0 -q "select sum(extendedprice*discount) where year = 1993 and discount between 1 and 3 and quantity < 25" -o /bjin/index0/query.csv -l /bjin/index0/log.txt -d diretório da partição -q consulta a ser executada -o arquivo de saída -l arquivo de log da consulta

( PostgreSQL Preparando o BD (usando o 1º Passo: Copiar os arquivos TBL (do SSB) para /opt/postgres 2º Passo: criar as tabelas e povoar com os arquivos TBL. Exemplo: CREATE TABLE supplier ( s_suppkey integer NOT NULL, s_name character(25), s_address character varying(25), s_city character(10), s_nation character(15), s_region character(12), s_phone character(15), atnull character(1), ( s_suppkey ) CONSTRAINT supplier_pk PRIMARY KEY ); copy supplier from /opt/postgressupplier.tbl with delimiter ' '; alter table supplier drop column atnull;

Construção do Índice ÍNDICE BITMAP DE JUNÇÃO Usar o conteúdo do arquivo construcao_consulta_fastbit.txt Segue um exemplo. Consulta Q1 do SSB: SELECT sum(lo_extendedprice*lo_discount) AS revenue FROM lineorder, date WHERE lo_orderdate = d_datekey AND d_year = [YEAR] -- Specific values below AND lo_discount BETWEEN [DISCOUNT] - 1 AND [DISCOUNT] + 1 AND lo_quantity < [QUANTITY];

Construção do Índice ÍNDICE BITMAP DE JUNÇÃO No SGBD: Computação da junção para a criação do Índice Bitmap de Junção. CREATE TABLE q1 AS SELECT lo_extendedprice, lo_discount, lo_quantity, d_year, d_yearmonthnum, d_weeknuminyear FROM lineorder, date WHERE lo_orderdate = d_datekey; Exportar a junção computada para um arquivo CSV (usando um comando do PostgreSQL): COPY q1 TO /bjin/ssb/q1.csv WITH DELIMITER ',' CSV QUOTE '\''; (se for exportar uma string, antes do ; deve-se acrescentar FORCE QUOTE seguido do nome da coluna (s_region, por exemplo)) OBS: A pasta deve ter permissão de escrita para o usuário Postgres

Construção do Índice ÍNDICE BITMAP DE JUNÇÃO No SGBD: Apagar a junção: DROP TABLE q1; Copiar o CSV para /bjin/ (por exemplo) No terminal de comando: Ir em /opt/fastbit/

No Fastbit: Construção do Índice ÍNDICE BITMAP DE JUNÇÃO Criar a partição:./ardea -d /bjin/ssb/index0 -m "col0:double, col1:double, col2:double, col3:double, col4:double, col5:key, col6:key, col7:key, col8:key, col9:key, col10:key, col11:key, col12:key, col13:key, col14:int, col15:key, col16:key" Criar o índice bitmap: ibis -v -d /bjin/ssb/index0 -b "<binning none/><encoding equality/>"

Construção do Índice ÍNDICE BITMAP DE JUNÇÃO FastBit col0 col1 col2 col3 col4 col5 col6 col7 col8 col9 Tabela de Mapeamento das colunas SGBD lo_revenue lo_extendedprice lo_discount FastBit lo_quantity col10 lo_supplycost col11 c_region col12 c_nation col13 c_city col14 s_region col15 s_nation col16 SGBD s_city p_brand1 p_category p_mfgr d_year d_month d_dayofweek

AGENDA Introdução Instalação Índice Bitmap de Junção Construção do índice Consultas sobre o índice

Consulta Q1.1 No SGBD: select sum(lo_extendedprice*lo_discount) as revenue from lineorder, date where lo_orderdate = d_datekey and d_year = 1993 and lo_discount between 1 and 3 and lo_quantity < 25; No Fastbit : ibis -d /bjin/ssb/index0 -q "select sum(col1*col2) where col14 = 1993 and col2 between 1 and 3 and col3 < 25" -o /bjin/ssb/resultq11.csv

Consulta Q1.2 No SGBD: select sum(lo_extendedprice*lo_discount) as revenue from lineorder, date where lo_orderdate = d_datekey and d_yearmonthnum = 199401 and lo_discount between4 and 6 and lo_quantity between 26 and 35; No Fastbit :./ibis -d /bjin/ssb/index0 -v -l q12_fastbit.log -o q12_fastbit.txt -q "select sum (lo_extendedprice * lo_discount) where d_yearmonthnum = 199401 and lo_discount >= 4 and lo_discount <=6 and lo_quantity >= 26 and lo_quantity <= 35"

Consulta Q1.3 No SGBD: select sum(lo_extendedprice*lo_discount) as revenue from lineorder, date where lo_orderdate = d_datekey and d_weeknuminyear = 6 and d_year = 1994 and lo_discount between 5 and 7 and lo_quantity between 26 and 35; No Fastbit :./ibis -d /bjin/ssb/index0 -v -l q13_fastbit.log -o q13_fastbit.txt -q "select sum (lo_extendedprice * lo_discount) where d_weeknuminyear = 6 and d_year = 1994 and lo_discount >= 5 and lo_discount <=7 and lo_quantity >= 26 and lo_quantity <= 35"

Consulta Q2.1 No SGBD: select sum(lo_revenue), d_year, p_brand1 from lineorder, date, part, supplier where lo_orderdate = d_datekey and lo_partkey = p_partkey and lo_suppkey = s_suppkey and p_category = 'MFGR#12' and s_region = 'AMERICA' group by d_year, p_brand1 order by d_year, p_brand1; No Fastbit :./ibis -d /bjin/ssb/index0 -v -l q21_fastbit.log -o q21_fastbit.txt -q "select sum(lo_revenue), d_year, p_brand1 where p_category = 'MFGR#12' and s_region = 'AMERICA ' ;

Consulta Q2.2 No SGBD: select sum(lo_revenue), d_year, p_brand1 from lineorder, date, part, supplier where lo_orderdate = d_datekey and lo_partkey = p_partkey and lo_suppkey = s_suppkey and p_brand1 between 'MFGR#2221' and 'MFGR#2228' and s_region = 'ASIA' group by d_year, p_brand1 order by d_year, p_brand1; No Fastbit :./ibis -d /bjin/ssb/index0 -v -l q22_fastbit.log -o q22_fastbit.txt -q "select sum(lo_revenue), d_year, p_brand1 where (p_brand1 = 'MFGR#2221' or p_brand1 = 'MFGR#2222' or p_brand1 = 'MFGR#2223' or p_brand1 = 'MFGR#2224' or p_brand1 = 'MFGR#2225' or p_brand1 = 'MFGR#2226' or p_brand1 = 'MFGR#2227' or p_brand1 = 'MFGR#2228') and s_region = 'ASIA '"

Consulta Q2.3 No SGBD: select sum(lo_revenue), d_year, p_brand1 from lineorder, date, part, supplier where lo_orderdate = d_datekey and lo_partkey = p_partkey and lo_suppkey = s_suppkey and p_brand1 = 'MFGR#2221' and s_region = 'EUROPE' group by d_year, p_brand1 order by d_year, p_brand1; No Fastbit :./ibis -d /bjin/ssb/index0 -v -l q23_fastbit.log -o q23_fastbit.txt -q "select sum(lo_revenue), d_year, p_brand1 where p_brand1 = 'MFGR#2221' and s_region = 'EUROPE '"

Consulta Q3.0 No SGBD: select c_nation, s_nation, d_year, sum(lo_revenue) as revenue from customer, lineorder, supplier, date where lo_custkey = c_custkey and lo_suppkey = s_suppkey and lo_orderdate = d_datekey and c_region = 'ASIA' and s_region = 'ASIA' and d_year >= 1992 and d_year <= 1997 group by c_nation, s_nation, d_year order by d_year asc, revenue desc; No FastBit?

Consulta Q3.2 No SGBD: select c_city, s_city, d_year, sum(lo_revenue) as reve-nue from customer, lineorder, supplier, date where lo_custkey = c_custkey and lo_suppkey = s_suppkey and lo_orderdate = d_datekey and c_nation = 'UNITED STATES' and s_nation = 'UNITED STATES' and d_year >= 1992 and d_year <= 1997 group by c_city, s_city, d_year order by d_year asc, revenue desc; No Fastbit?

Consulta Q3.3 No SGBD: select c_city, s_city, d_year, sum(lo_revenue) as revenue from customer, lineorder, supplier, date where lo_custkey = c_custkey and lo_suppkey = s_suppkey and lo_orderdate = d_datekey and (c_city='united KI1' or c_city='united KI5') and (s_city='united KI1' or s_city= UNITED KI5') and d_year >= 1992 and d_year <= 1997 group by c_city, s_city, d_year order by d_year asc, revenue desc;

Consulta Q3.4 No SGBD: select c_city, s_city, d_year, sum(lo_revenue) as reve-nue from customer, lineorder, supplier, date where lo_custkey = c_custkey and lo_suppkey = s_suppkey and lo_orderdate = d_datekey and (c_city='united KI1' or c_city='united KI5') and (s_city='united KI1' or s_city='united KI5') and d_yearmonth = 'Dec1997' group by c_city, s_city, d_year order by d_year asc, revenue desc;

Consulta Q4.0 No SGBD: select d_year, c_nation, sum(lo_revenue - lo_supplycost) as profit from date, customer, supplier, part, lineorder where lo_custkey = c_custkey and lo_suppkey = s_suppkey and lo_partkey = p_partkey and lo_orderdate = d_datekey and c_region = 'AMERICA' and s_region = 'AMERICA' and (p_mfgr = 'MFGR#1' or p_mfgr = 'MFGR#2') group by d_year, c_nation order by d_year, c_nation

Consulta Q4.2 select d_year, s_nation, p_category, sum(lo_revenue - lo_supplycost) as profit from date, customer, supplier, part, lineorder where lo_custkey = c_custkey and lo_suppkey = s_suppkey and lo_partkey = p_partkey and lo_orderdate = d_datekey and c_region = 'AMERICA' and s_region = 'AMERICA' and (d_year = 1997 or d_year = 1998) and (p_mfgr = 'MFGR#1' or p_mfgr = 'MFGR#2') group by d_year, s_nation, p_category order by d_year, s_nation, p_category

Consultas OLAP Roll-up? Drill-down? Considere as hierarquias de atributos: p_mfgr < p_category < p_brand1 < p_partkey c_region < c_nation < c_city < c_address s_region < s_nation < s_city < s_address... Modifique as colunas de agrupamento ou aquelas presentes na cláusula WHERE