There is no "correct" database architecture for all control applications. The complexity and dynamism of the application environment, the size of the data set, the number of clients of the data, the acceptable latencies and the degree of acceptable coupling between database and client all have an effect. This does not mean that no conclusion can be reached. Some important observations are:
For all but very small applications, an active database will perform better with lower latency and lower CPU usage than a passive database.
As the size of the data set increases, the speed advantage of a shared memory database is reduced. At some data set size, this advantage is likely to be lost altogether.
A message-passing database will result in lower coupling between the database and its clients. Coupling is generally considered to be a negative side effect of database design.
A message-passing database will offer networked functionality.
A message-passing database will preserve time order in data change events, where a shared memory database will not.
A message-passing database is much less likely to lose significant data change events relative to a shared memory database.
A shared memory database will be more efficient for periodic computation, while a message-passing database will be more efficient for data driven computation.
These observations really suggest that a system may require the performance aspects of both a message passing database and a shared memory database. Since a shared memory database is best suited to small, localized data sets with few clients, it seems appropriate to use this approach for such things as high-speed drivers where access is periodic and access time cost is significant. At the same time, those data points that do not have these performance characteristics can be made available through a message passing database, giving rise to efficient user interface, reliable data logging, and network availability.
Where the performance of either database architecture is acceptable, the message-passing database is more general. It is capable of providing all of the functionality of the shared memory database, plus several capabilities that the shared memory database cannot duplicate. A hybrid solution is really only necessary where a subset of the problem requires performance beyond the reach of the message passing database. In this case, the minimum amount of data should be placed in a shared memory database to keep performance high, with the rest being placed in a message passing database to maintain flexibility, expandability and reliability.
With these thoughts in mind, Cogent has developed and makes extensive use of the Cascade DataHub, an active, message-passing real-time database, and offers it as a practical solution for a wide range of real-time data applications.