Editorials

Have You Ever Re-Architected a Database?

Has there been a time where you had to change out the schema, security, views, etc. associated with an established application?

I ask because with new technologies, new techniques, increasing security needs and the like, along with just flat learning better ways to do things, sometimes it’s nothing short of a re-architecting situation. We’ve worked through situations like this where the only real solution was to sort of rebuild the underlying system of tables and such.

It wasn’t fun. It wasn’t easy.

In one case, our directive was to not mess with the application – this meant having a good understanding of the application, how it accessed SQL Server and what we needed to replicate. We had to take that information and our objectives of updating access controls overall, and make it all work.

The core of the work ended up involving views that replicated tables that the application expected, but that would give us a lever to apply security to data one level down. Sometimes, during testing, it felt like we screwed up more than we helped, but in the end, with the new access controls and other functionality that we needed to get in place, it was a “win.”

There have been rare cases where we had to do such a fundamental back-hoe of the systems. In most cases, it was adding a new or improved approach to pulling information that was needed. Oftentimes this comes from a performance requirement and we’re trying improve things for the end-users.

So, the question of the day, or rather, discussion I suppose, is whether you’ve been through this process, and, if so, was it successful? Any tips you’d like to share?

I think the biggest takeaway we experienced in the most drastic project was that we didn’t know the applications like we thought we did. We ended up with several different use cases for the information on file that we didn’t expect or know about. Whlie it’s easy to say we should have known, I believe it’s as much a sign of the times. There simply are a good number of ways that people access and use information you provide.