schema/dimension upgrade

What is the best practice for upgrading schema/dimension ?. I saw some where it was mentioned to create a new datasource every time.

However , that seems an issue if you have other app dependent on this . By any chance I can do versioning and upgrade schema like v1/v2/vn and keep the same datasource name .

Thank you

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.