Many people think of software as the graphical interfaces that users interact with, like mobile apps, windows programs or web applications. But sometimes these are just top of the iceberg of technologies and software components that make the whole business work.

While the user experience is important to attract the customers, the backend is crucial for effective process organization and well structured data is the key to make meaningful business decisions.

The proper design of data structures also affects the ability to build flexible and functional applications. Almost all types of serious business applications make use of databases (and database managment system).

In many cases the database is just a data storage layer, and all processing is coded in application. That approach may be appropriate when the system only needs to process small amounts of data at a time, like single customer’s order.

However, when the system grows, it will eventually need to process data on a large scale, and then we need to focus on data processing efficiency.

The number one rule here is to make data processing as close to the data as possible. Modern database management systems do not only manage the storage and fetching of the data, but also provide environment to code data processing behaviour by means of stored procedures and functions, or even hosted .Net or Java programs. So the possibilities are there, and can be applied to build a robust data processing solution. Of course, it requires expertise to use properly, so that is another story how much systems really do take advantage of it.

If you develop a system, where data is a significant asset and volume, we give the following advice. First, design the data structure with utmost care, so it models the business as close as possible but still provides some flexibility to changes and extensions. Poorly designed data structures may be restricting system functionality and growth, and also may allow for inconsistent and false data to appear. Second, design your software to process data in optimal manner. That means, do not restrain yourself to coding every process in the same way, but think what will best serve the purpose. Should it be application with an ORM framework, or a web service, or maybe some code residing in database. For intensive data processing, that will be mostly code in database. For securing data integrity during complex operations, I would entrust it to database stored procedure. For allowing a user to edit some data object in a well structured data model, an ORM enabled application would be just great.

Software building blocks

Leave a Comment

Your email address will not be published. Required fields are marked *