STEP 1: Partition
- Split into equally sized data subsets
- Partition (different strategies might be used)

STEP 2: Anonymize

Step 2a (iff the transformation model is global)
- Anonymize all partitions (using all privacy models defined, the utility model defined, the transformation scheme defined etc.)
- Calculate average generalization levels (we might also try different strategies here)

Step 2b
- Anonymize all partitions (using all privacy models defined, the utility model defined, the transformation scheme defined etc.)
- Use average generalization levels, iff the transformation model is global

Step 3 (iff the privacy models include a non-monotonic model)
- Partition dataset again but make sure that each equivalence class is assigned to just one partition (and not split between partitions; the exact partitioning strategy is irrelevant in this case).
- Anonymize all partitions (containing already anonymized data) by suppressing all equivalence classes that do not meet the privacy models specified.

Step 4: Finalize
- Merge the partitions
- Calculate overall utility.

===============
| OPEN ISSUES |
===============
- Global distribution needed for t-closeness, b-likeness et al.
  * Done for equal-distance-t-closeness and enhanced-beta-likeness
- (Check for each privacy model whether local transformation is valid)
- Utility estimation currently ignores step 3
- Poor performance on differential privacy
  * Check local vs global differential privacy
  * If the dataset is split up (potentially: randomly), maybe the Epsilons don't add up?
  * Ignore or optimize time needed for parameter calculation

=========
| TODOS |
=========

- Measure execution times for Step 1-4 separately and plot stacked lines
- Measure memory consumption over time (likely increases with the number of workers)

================
| RELATED WORK |
================

Scalable Distributed Data Anonymization for Large Datasets
- Sabrina De Capitani di Vimercati, Senior Member, IEEE, Dario Facchinetti, Member, IEEE,
- Sara Foresti, Senior Member, IEEE, Giovanni Livraga, Member, IEEE, Gianluca Oldani, Member, IEEE,
- Stefano Paraboschi, Member, IEEE, Matthew Rossi, Member, IEEE,
- Pierangela Samarati, Fellow, IEEE