RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX


A Data-Centric Approach to Distributed Application Architecture : Page 3

The object-oriented development approach is useful for developing applications in general, but a data-centric approach is better for designing and developing distributed applications.

Implementing Data-Centric Applications
Data-centric applications can be implemented using the precepts of data-oriented programming. In general, the tenets of data-oriented programming include the following principles:
  • Expose the data. Ensure that the data is visible throughout the entire system. Hiding the data makes it difficult for new processing endpoints to identify data needs and gain access to that data.
  • Hide the code. Conversely, none of the computational endpoints has any reason to be cognizant of another's code. By abstracting away from the code, data is free to be used by any process, no matter where it was generated. This provides for data to be shared across the distributed application, and for the application to be modified and enhanced during its lifecycle.
  • Separate data and code into data-handling and data-processing components. Data handling is required because of differing data formats, persistence, and timeliness, and is likely to change during the application lifecycle. Conversely, data processing requirements are likely to remain much more stable. By separating the two, the application becomes easier to maintain and modify over time.
  • Generate code from process interfaces. Interfaces define the data inputs and outputs of a given process. Having well-defined inputs and outputs makes it possible to understand and automate the implementation of the data-processing code.
  • Loosely couple all code. With well-defined interfaces and computational processes abstracted away from one another, endpoints and their computations can be interchanged with little or no impact on the distributed application as a whole.

Table 1 summarizes these and other principles, and it offers a comparison with object-oriented development tenets in order to contrast the two different approaches. The data-oriented approach enforces attention on the data rather than on the processes that manipulate the data.

Object-Oriented Programming Principles Data-Oriented Programming Principles
Hide the data (encapsulation) Expose the data (with MR format)
Expose methods – code Hide the code
Intermix data and code Separate data and code
Mobile code Must agree on data mapping, mapping system
API/object model Messages are primary data model or schema
Combined processing, no restrictions Strict separation of parser, validator, transformer, and logic
Changes: Read and change code Changes: Change declarative data file
Tightly coupled Loosely coupled
Table 1. A Comparison of Data-Oriented and Object-Oriented Programming Principles

The data-oriented approach to application design is effective in systems where multiple data sources are required for successful completion of the computing activity, but those data sources reside in separate nodes on a network in a net-centric application infrastructure. For network-centric distributed applications, applying a data-oriented programming model lets you focus on the movement of data through the network, an easier and more natural way of abstracting and implementing the solution.

Data as the Design and Implementation Focal Points
Data-centric design and data-oriented implementation can bring about a more robust and scalable distributed system, and one that is easier to maintain and enhance over time. For real-time distributed applications that are highly dependent upon the movement of data through the system, the advantages of using data as the design and implementation focal points can make the difference for a successful project.

Dr. Gerardo Pardo-Castellote is Chief Technology Officer of Real-Time Innovations, Inc. He specializes in real-time software architectures and networking. His professional experience includes time-critical software for data acquisition and processing, real-time planning and scheduling software, control system software, and software-system design.
Email AuthorEmail Author
Close Icon
Thanks for your registration, follow us on our social networks to keep up-to-date