My little team is just a few days from launching our web page. Its another user content type page so a lot of our data will be about user preferences and behavior. We decided to get it out of the door as soon as minimal functionality is ready and tested but have grand plans of more stuff to be implemented while its live.
These things will most likely include new columns in data tables and maybe even complete reinterpretations of existing ones. Those kinds of changes will likely take a long time to implement and we'd like to keep the downtime to a minimum. We think we have it figured out by
- creating a parallel database with the new structure
- swapping the software to a transitory one that would duplicate new user submissions to both the old and the new database while still using the old database
- simultaneously converting data from the old db to the new one
- swap the software to the final release that only uses the new db
- discard the old db
This would result in 2 very small downtimes (less than a second really) separated by whatever amount of time it takes to complete the transfer of old data (likely being throttled and done at low activity times to not disturb the response performance).
We have all our db access methods set up to make whipping up the transitory version as easy as possible, sounds like a good plan? How do the big guys(like google or facebook) do it?
We're using asp.net + MariaDB if that matters.