Horizontal partitioning of very-large data warehouses under dynamically-changing query workloads via incremental algorithms