data-centric architectural style
Note
A data-centric architectural style has two main components:
- Central Data: Used to store and serve data to all components connected to it.
- Data Accessors: The components connected to the central data.
A high level view of this architecture is fairly simple and easy to understand.
After you take a look at each component, often the central data is stored in a Database. The central data is passive in this style and the database is generally not involved in heavy data processing or large amount of business logic.
Data-centric architecture presents many advantages over a basic programming system, because of the integration of a central database. These advantages include:
- Increased support of data integrity, backup, and restoration.
- Reduced overhead for data transfer between data accessors. They do not need to communicate with each other as the database communicates for them.
- A system that can be easily scaled up. Data accessors are functionally independent, so additional features can be added without having to worry about affecting another accessor.
- Central data components usually "Live" on a separate server machine with sufficient disk storage dedicated to the database. This allows for easier management of information.
But sadly it is not always sunshine and rainbows, this style has some disadvantages:
- The system is heavily reliant on the central data component. If the central data becomes unavailable or if the data becomes corrupted, the entire system is affected. Safe guards such as data redundancies that replicate data on separate hard disks can be costly
- Data accessors are dependent on what gets stored in the database. New data accessors need to build around the existing data schema, anything that isn't stored needs to be computed, or if there is no matching column/table for a specific data needed, then the database cannot be used.
- It is difficult to change the existing data schema. Particularly if a large amount of data is already stored. Furthermore, data schema changes will affect data accessors.
In summary, data-centric software architecture is a commonly used design by many companies. They allow large amounts of data to be stored and managed in a central data repository, making a system more stable, reusable, maintainable, and exhibit better performance. They also separate the functionality of data accessors, so it is easier to scale the system. Finally, they also facilitate data sharing between data accessors through database queries and transactions.
As always, the decision to use a data-centric architecture relies on the context of the problem at hand.