Estou usando o Hive atualmente e ele tem tabelas particionadas. Digamos que estes são meus dados:
Country City DailySale
USA NY 200.2
USA SF 190.5
CAN TR 390.4
O posso definir minha tabela
create table SALES_DATA(
Country STRING,
City STRING,
DailySale BIGDECIMAL
) PARTITIONED BY (Country, City)
Então eu crio a estrutura do catálogo no HDFS:
SALES_DATA/
Country=USA/
City=NY/
data-file-0001
data-file-0002
... the rest omitted for brevity...
Em seguida, a poda de partição pode ser aplicada para consultas como
SELECT SUM(DailySale) FROM SALES_DATA
WHERE Country='USA' and City='SF'
O mecanismo Hive removerá todas as partições, exceto uma. Super eficaz e ideal.
Eu gostaria de implementar algo semelhante no Postgres. eu vou ter tabelas imutáveis com dados agregados e gostaria de aplicar algo semelhante para eles. Estou tentando passar por isso https://www.postgresql.org/docs/13/ddl-partitioning.html mas realmente não siga se for o que eu preciso.
Nesse caso, ter um índice de país e cidade provavelmente terá um desempenho muito melhor do que o particionamento.
Se você está realmente decidido a usar particionamento, o postgres sempre usa as restrições CHECK para remover partições. Uma maneira de abordar isso é:
Ao seguir este procedimento e você fizer uma seleção em SalesData, o postgres removerá as tabelas que não correspondem à restrição de verificação.