One of the more heavily promoted advantages of a service-oriented architecture (SOA) is reuse of software assets. However, those who are deploying large-scale SOA-based applications soon come to realize that SOA purity may create a need to sacrifice performance. Arriving at the proper balance of performance and reuse for an SOA application is a critical part of its design when using this type of technology.
For example, in a loosely coupled design, such as a service-oriented architecture, should the data model also be loosely coupled? That is, should each service have its own data model that it uses for persistence and have no intimate knowledge of other service's data models? If reuse is your highest priority for moving to SOA, then your data model should be loosely coupled along with your service architecture. This will maximize your ability to use that service as part of other composite applications.
If one follows this line of thinking, SOA forces us to rethink our entire approach to data management. Today, we leverage powerful relational database engines that can perform high-speed relational operations.