Samples should be stored in their own table and versioned independently. This will make #6 and #7 feasible on large datasets.