DESCRIÇÃO DAS BASES DE DADOS Primeira Base de dados: BD1 Gerada pelo programa dbgen do TPC-H. Os registros dessa base não tem tamanho fixo. As relações escolhidas na geração dos dados foram Customer e Orders, os dados foram gerados considerando que Os dados foram gerados considerando que 1/3 dos customers não possuem orders. Os atributos são separados pelo símbolo “|” e o atributo de junção é O_CUSTKEY. Relação Customer CUSTOMER Table Layout Column Name Datatype Requirements C_CUSTKEY Identifier C_NAME variable text, size 25 C_ADDRESS variable text, size 40 C_NATIONKEY Identifier C_PHONE fixed text, size 15 C_ACCTBAL Decimal C_MKTSEGMENT fixed text, size 10 C_COMMENT variable text, size 117 Primary Key: C_CUSTKEY Quantidade de Registros: 750.000 Comment Foreign Key to N_NATIONKEY Tamanho: 116 MB Exemplo de um registro da tabela: 1|Customer#000000001|IVhzIApeRb ot,c,E|15|25-989-7412988|711.56|BUILDING|to the even, regular platelets. regular, ironic epitaphs nag e| Relação Orders ORDERS Table Layout Column Name Datatype Requirements O_ORDERKEY Identifier O_CUSTKEY Identifier O_ORDERSTATUS fixed text, size 1 O_TOTALPRICE Decimal O_ORDERDATE Date O_ORDERPRIORITY fixed text, size 15 O_CLERK fixed text, size 15 O_SHIPPRIORITY Integer O_COMMENT variable text, size 79 Primary Key: O_ORDERKEY Quantidade de Registros: 7500.000 Comment Foreign Key to C_CUSTKEY Tamanho: 829 MB Exemplo de um registro da tabela: 1|221401|O|217606.77|1996-01-02|5LOW|Clerk#000005704|0|nstructions sleep furiously among | Segunda Base de dados: BD2 Gerada pelo programa Spawner e por manipulações de arquivo usando comandos do Linux. Tabela 1 Tabela 1 Table Layout Column Name Datatype Requirements Comment A Texto deTamanho fixo Composto por números, o início do campo é preenchido com espaços em brancos (ver exemplo) para se ter registros de tamanho fixo B Texto de Tamanho fixo Composto por letras e espaço em branco Primary Key: A Quantidade de registros: 24.403.223 Tamanho: 535 MB Exemplo de um registro da tabela: Registro1: 14776252,sMd uywjpr Registro2: 4533703,xBSRtFiNuh Os valores do atributo A e do atributo B têm 10 bytes cada. Os campos são separados por vírgula e o registro tem tamanho fixo de 21 bytes. Tabela 2 Tabela 2 Table Layout Column Name Datatype Requirements Comment A Texto deTamanho fixo Chave estrangeira que referencia o campo A da tabela 1 C Texto de Tamanho fixo Composto por letras e espaço em branco Quantidade de registros 48.000.000 Tamanho: 1.02 GB Dos 24.403.223 valores distintos da coluna A da primeira tabela 403.223 não ocorrem na tabela 2. Os 48.000.000 registros da tabela2 possuem a seguinte distribuição: 1/3 dos valores da coluna A não possuem repetições, 1/3 repete o valor da chave duas vezes e 1/3 repete o valor da chave 3 vezes. QUESTÕES IMPORTANTES a) Parâmetros do programa • • • • • • • Nome do arquivo que contém os dados da relação menor Nome do arquivo que contém os dados da relação maior Tamanho do Buffer em MB (para os algoritmos que utilizam buffer) Tamanho da Página em MB Tabelas com registros de tamanho fixo. Tamanho de cada atributo da relação menor. Tamanho de cada atributo da relação maior. b) Cálculo da quantidade de páginas no Buffer: npb=tamanho do buffer/tamanho da pagina Exemplo: tamanho do buffer=36MB, tamanho da página=4MB, npb=36/4=8 páginas c) Cálculo da quantidade de registros por Página: • Para registros de tamanho fixo: nrp=tamanho da pagina/tamanho do registro, utilizar as medidas em Bytes, fazer arredondamentos para ter uma quantidade inteira de registros na página. Exemplo: tamanho da página=4MB, tamanho do registro=21 bytes nrp=4*(1024*1024)/22=199.728 registros por página • Para registros de tamanho variável: A quantidade de registros por página irá variar conforme o tamanho dos registros. Nesse caso deve ser definida uma estratégia de ler sempre um número de registros inteiros que não ultrapassem o tamanho da página. Uma possível solução seria determinar o tamanho máximo de um registro na base de dados e usar esse valor como referência para determinar o número de registros por página. d) Como definir o buffer e as páginas no programa: Uma possibilidade Definir o buffer como sendo uma estrutura de dados contendo uma lista de páginas. A quantidade de página do buffer será dada pelo cálculo descrito anteriormente. O buffer e a página terá o tamanho informado via parâmetro. As páginas terão um identificador e poderão ser utilizadas para carregar informações da Relação Menor, Maior ou o resultado da junção dos dados conforme o algoritmo implementado. Buffer tamanho= 16MB Página 1 Página 2 1 Página 3 Página 4 INSTRUÇÕES PARA A PREPARAÇÃO DOS DADOS PARA OS TESTES DOS ALGORITMOS UNION EXCEPT TABELA R1 • R1 = N primeiras tuplas da Tabela 2 (trata-se da tabela R de 1GB disponivel em clique aqui), onde N = ¾ X, X = total de tuplas da Tabela 2 TABELA R2 • R2 = N últimas tuplas da Tabela 2 (trata-se da tabela R de 1GB disponivel em clique aqui), onde N = ¾ X, X = total de tuplas da Tabela 2 TABELA R3 • • • • Considere a Tabela 2 descrita aqui. Os valores da coluna C são combinações de letras Transforme tais valores em um número inteiro de no máximo 10 algarismos, da seguinte: considere o número K obtido considerando-se o string substituindo-se cada caracter pelo seu código ASCII e calcule K mod N, onde N = 1010 Tabela R3 = Tabela 2 com os valores da coluna C transformados em números inteiros.