Smart contracts are immutable. Unless we're 100% sure that our smart-contract is fully functional without any exception we never want to push that in the main net. That's why we have public test net.
I am writing a smart-contract that stores information in an array. I am worried about something after I deploy my contract in the main net and start using and saving information in the blockchain. Over time my requirement might change(which is hypothetical) and I had to update my contract and then re-deploy in main-net. Now how can I retrieve the information that was saved in the old contract address in the main net because now that I start using the newly deployed address?
Is there any way to link that saved information from the old contract address to the new one?
What is the best way to overcome this scenario?