[Volta]

CI 763 - Gerenciamento de Dados Distribuídos

Terceiro trabalho prático - Modelo de Armazenamento Decomposto

2016-1

Objetivo

Neste exercício iremos implementar o armazenamento colunar (i.e. armazenamento DSM visto em sala [1]) seguindo uma simplificação do armazenamento do SGBD C-Store [2].

[1] A Query Processing Strategy for The Decomposed Storage Model Setrag Khoshafian, George P. Copeland, Thomas Jagodis, Haran Boral, Patrick Valduriez. ICDE, pages 636-643, 1987.

[2] C-Store: A Column Oriented DBMS. Mike Stonebraker, Daniel Abadi, Adam Batkin, Xuedong Chen, Mitch Cherniack, Miguel Ferreira, Edmond Lau, Amerson Lin, Sam Madden, Elizabeth O'Neil, Pat O'Neil, Alex Rasin, Nga Tran and Stan Zdonik. VLDB, pages 553-564, 2005.

Aplicações

Duas aplicações devem ser feitas:

Importação de dados e criação de colunas à partir de um arquivo texto separado por CSV:

$ ./importa arquivo.csv

Execução de consultas recebendo um arquivo de comandos do stdin e retornando o resultado para um arquivo no stdout:

$ ./colunas < teste.in > teste.out

Exemplo:

Considere o seguinte "arquivo.csv" de entrada com 3 atributos:
100;3;10;
200;16;34;
100;56;25;
500;9;12;
300;11;22;
300;30;50;
A aplicação importa irá criar um arquivo para cada atributo que será nossa abstração de armazenamento colunar. Serão então criados os arquivos R1.col, R2.col e R3.col.

Requisitos mínimos:

O trabalho deve ser implementado de forma que possa ser compilado e executado nas servidoras de computação do Departamento de Informática.

O nome do executável deve ser mycstore.

Não deve ter nenhuma opção de linha comando.

O que deve ser entregue:

Além dos arquivos fonte, deve acompanhar um makefile e um relatório com no máximo 2 páginas contendo a documentação sintetizada do sistema implementado. Qualquer particularidade deve estar descrita neste texto, como: algoritmo de detecção de ciclo em grafo.

Para compilar será usado o comando make (sem nenhum parâmetro), portanto preparem o Makefile para fazer isso mesmo que o programa seja implementado em linguagens interpretadas (e.g., Java).

Para testar será executado um script como o abaixo.

$ ./mycstore < teste.in > teste.out
$ diff teste.sol teste.out

Onde teste.in é o arquivo de entrada do teste e teste.sol é o esperado como saída.
Caso o teste seja positivo (não imprime nada) será analisado o código fonte e o relatório.
Os fontes também devem ser comentados para uma possível análise (e.g., Javadoc).

Forma de entrega:

O trabalho deve ser empacotado em um arquivo login.tar.gz, onde "login" é uma string com o login do aluno nas servidoras do DInf. Ao descompactar este arquivo deverá ser criado um diretório de nome "login" que conterá todos os demais arquivos. O make e o script acima deverão funcionar dentro deste diretório (não em subdiretórios).

Este arquivo deve ser enviado por e-mail ao endereço do professor com o assunto "CI763-trab3 " (exatamente). IMPORTANTE: Minha caixa de email usa o assunto do email como filtro.

Equipe:

O trabalho é individual.