A organização deste projeto baseia-se nos padrões de estilo descritos neste blog: https://goodresearch.dev/. Ademais, o projeto contém diretórios não especificados no blog.
A lista a seguir apresenta o esqueleto do projeto.
/data: diretório para armazenamento dos conjuntos de dados;/raw: diretório para armazenamento dos conjuntos de dados originais./predicates: diretório para armazenamento dos predicados.
/estimators: (nossa) implementação dos estimadores IEJoin e Repas et al (baseado em histogramas);/inequality-join-estimation: diretório para armazenamento das variáveis de configuração e módulos, e.g., geração dos conjuntos de dados;/notebooks: Notebook's Jupyter dos experimentos;/scripts: scripts para execução dos experimentos;/third_party: código-fonte utilizado ou adaptado de trabalhos anteriores;/estimators/grid-ar: "Grid-AR: A Grid–based Booster for Learned Cardinality Estimation and Range Joins".- Código-fonte adaptado para suportar outros modelos durante a construção do grid (arquivos criados/modificados:
eval_ineq_join.py,multidimensional_grid.py,range_regressor.py).
- Código-fonte adaptado para suportar outros modelos durante a construção do grid (arquivos criados/modificados:
Para garantir reprodutibilidade, execute os Notebooks sequencialmente com base na enumeração (crescente).
OBS. (1): este projeto utiliza dois ambientes conda devido a dependências desatualizadas do Grid-AR. Portanto, utilize o ambiente grid-ar para executar o Notebook 3_grid_ar.ipynb. Os outros Notebooks devem ser executados com o ambiente iejoinest.
OBS. (2): é possível pular a etapa de geração dos conjuntos de dados sintéticos (em 1_workload.ipynb). Para facilidade, disponibilizamos todos os conjuntos de dados utilizados no experimento no Google Drive.
Antes de executar qualquer experimento, crie os ambientes Conda por meio dos arquivos de configuração.
iejoinest:
conda env create -f environment.ymlgrid-ar:
conda env create -f environment_gridar.yml