Overwriting the system ... save the old scheme?

Suppose we have a system (in production) written in outdated technology and difficult to adapt to changing business needs. It was decided to rewrite it in a newer technology. Should we start with a new database schema that will accurately reflect the data models of the new system, but accept the risks and costs of developing a database transformation (required from both sides due to a phased implementation plan)? Or should we adhere to the same scheme, although this will complicate the development, since it does not reflect the new model, but takes advantage of eliminating the conversion problem?

+4
source share
7 answers

As a developer and application developer , starting with a new scheme and rewriting an application is a dream that is not often realized. Given only the information in your question, I would like to move on to the new scheme and the conversion work.

BUT...

There is a ton of missing information needed to make the right decision. For example: how will the decision affect the budget and / or schedule? What are the problems with the current circuit? and etc.

SO ...

As a project sponsor and business analyst , I want the value to be justified due to a good return on investment. Remember that any time and money spent on a new scheme is time and money that can be used for functions or other projects. Some questions to ask yourself, looking at him from this perspective: Will the new scheme reduce maintenance costs? If so, how much? Will the new scheme give us an advantage, giving us the ability to quickly add the next set of functions? Is there an inherited limitation of the old scheme that keeps us from achieving our goals? Will the new scheme provide productivity gains that will lead to more satisfied customers? and etc.

I am afraid that the whole picture is needed, and even when you choose the road, you will never know how it would have happened if you had made another choice.

+9
source

I believe that you should reverse engineer the circuit. There is no reason to pose old problems for a new implementation. data conversion is a one-time mission, it will take some time, but on the bottom line - you will get the best result for a long time.

+1
source

I would only consider a re-schema if you have a database professional to help you with your development. Applicants-programmers generally do a poor job of developing databases for developers who have all the checks and balances needed for a business critical system.

Changing the schema and successfully moving existing data is much harder than you think. It will be a great effort requiring a monthly full-time job, and this is risky. The larger and more complex the existing database, the more complex the redesign.

One thing I would consider is moving the old data to the data warehouse and then designing a new system to move the data. He then periodically sent data to the data warehouse so that people could request historical and current records. Thus, your new system may have limitations that the old data might not have, and you will not need to try to figure out which values ​​you need to put in the required field for old data that does not matter.

If you are considering this, you can also familiarize yourself with refactoring databases. Here is a great book on the topic: http://www.amazon.com/Refactoring-Databases-Evolutionary-Database-Design/dp/0321293533/ref=sr_1_1?ie=UTF8&s= books & QID = 1257433737 & cf = 8-1

Also, do not consider doing this without deeply exploring the depth of performance tuning of the database that you plan to use as your backend. It makes no sense to redo it if you are not developing something that will work well and scale. Forget that garbage is about premature optimization - databases should be designed from the very beginning with performance, as well as taking into account the need and security. There are many well-known methods for increasing productivity that should be considered in any redesign.

+1
source

Your database should meet the needs of the program, and not vice versa. If your business needs have changed, then, no doubt, the data is also, and if it were me, I would take this opportunity to update the program as a chance to update the database for your changing needs. When you save without converting the database, you will spend time creating hacks to make it work in the new program.

0
source

This is a question in each case. How much will the choice cost you in the short term? In the long run?

However, it might be better to take this opportunity to reverse engineer your circuit. It is, of course, better to do it now, when you rewrite a lot of code anyway, than a few years after the track.

Just remember this question.

0
source

You will have to weigh the time added by additional development difficulties against the amount of time needed to convert the database.

Personally, I cannot work with a scheme that does not exactly meet business requirements and cannot be changed. It always introduces a lot of hacks and bad code smells.

I would suggest that additional development complications outweigh the usually simple ETL type for database conversion.

0
source

I believe that the meat of your decision will fall into How, and not change the scheme. Be disciplined and thorough in choosing decisions.

You must evaluate the services provided by the old system, in order to confirm all the business requirements that it meets, must also be fulfilled by the new system. How many new models cannot coexist with the old (i.e. can you separate parts of a complex transition?) How tolerant is your system at risk?

The more parts you change immediately, the less likely you are to get what you expect from all the effort in the first place.

After you go through all the mechanics of your migration, make sure that you have ways to test and quantify the characteristics of your new system. Are you still meeting all the business requirements? Are old system flaws really eliminated? Does the new system work better? Does your maintenance cost decrease?

So, etc.

0
source

All Articles