Best practice is to update in place. Not sure where you read that it
was best to create a new datasource everytime, but would only be a
recommendation in a very small number of circumstances.
If you are adding a new column, you can just add it, no problem. The
segments that don't have it will act as if they had it and its value
was always null.
If you are replacing an existing column, the recommendation is to
create the "replacement" as a new column, switch your app to start
using that and then go back and remove the old column. If you really,
really, want to preserve the old name, at this point you can replicate
the "new" column into the old column name and update your app again.