We do modify DataShapes on production, also we allow users to Add/Remove columns, all associated to Streams ( not DataTables but they are almost the same kind of storage).
All the DataTables/Streams data on rows are stored as a JSON per row ( not as columns as a traditional relational datatable on a DataBase ), knowing this you can know what will happen when you do modification in it.
- If you remove a column from the datashape the data on the row won't be removed
- You can't rename a DataShape field name
- It's safe to modify DataShapes for Streams and DataTables, it won't make any difference on the stored data itself.
On our case, where we have totally dynamic Streams user manager, we did use "code" field names ( column1, column2, column3,... ) and used DataShape Field Description as Column name ( field description can be modified ) then built few services to use Field Descriptions as Field Names