Pular para o conteúdo principal

Makefile

O arquivo persona_db/Makefile embrulha os comandos mais usados. Rode-os a partir da raiz do repositório com -C persona_db.

Variáveis​

VariávelPadrãoUso
PYTHONpython3Interpretador
PYTHONPATH..Torna persona_db importável sem instalar
DATABASE_URLpostgresql://persona:persona@localhost:5432/personadbConexão
SCHEMAsql/schema/*.sql ordenadosArquivos aplicados pelo migrate
N_PESSOAS10000 (100 em validate)Tamanho da população
SEED7Semente
make -C persona_db generate N_PESSOAS=500 SEED=42
make -C persona_db migrate DATABASE_URL=postgresql://u:p@host:5432/base

Alvos​

AlvoO que faz
setuppip install -e '.[dev,parquet]'
migrateAplica cada sql/schema/*.sql com psql -v ON_ERROR_STOP=1
generatescripts.generate --people $N_PESSOAS --seed $SEED --output dataset.json
validatevalidators.run_validators --personas $N_PESSOAS --seed $SEED
benchmarkscripts.benchmark --people $N_PESSOAS --seed $SEED
loadscripts.bulk_insert dataset.json --database-url $DATABASE_URL
export-csvExporta dataset-csv.tar.gz
export-parquetExporta o diretório dataset-parquet
docs-schemaRegenera docs/SCHEMA.md
resetDROP SCHEMA public CASCADE; CREATE SCHEMA public;
testpython -m pytest

Receita completa​

cp persona_db/.env.example .env
docker compose -f persona_db/docker-compose.yml up -d

# O compose cria a base persona_db; o padrão do Makefile aponta para personadb.
export DATABASE_URL=postgresql://persona:persona@localhost:5432/persona_db

make -C persona_db setup
make -C persona_db migrate DATABASE_URL="$DATABASE_URL"
make -C persona_db generate N_PESSOAS=1000 SEED=42
make -C persona_db validate N_PESSOAS=1000 SEED=42
make -C persona_db load DATABASE_URL="$DATABASE_URL"
make -C persona_db export-csv
make -C persona_db export-parquet

:::caution Nome da base Use o mesmo nome nos dois lados: ou exporte DATABASE_URL com persona_db (como acima), ou mude POSTGRES_DB no docker-compose.yml para personadb. Veja PostgreSQL com Docker Compose. :::

:::danger make reset apaga tudo O alvo derruba o schema public inteiro do banco apontado por DATABASE_URL. Confirme a URL antes de rodar. :::

:::note Sem instalar o pacote Todos os alvos exportam PYTHONPATH=.., então funcionam em um clone recém-baixado, desde que as dependências (numpy, scipy, pandas, …) estejam disponíveis no ambiente. :::