Chapter 5. Agility in Models Requires Agility in Access
In 2011, Martin Fowler wrote about what he called polyglot persistence, “where any decent sized enterprise will have a variety of different data storage technologies for different kinds of data.”1 Even single systems, he envisioned, might use multiple backend data stores to take advantage of multiple NoSQL (and SQL) technologies:
This polyglot effect will be apparent even within a single application. A complex enterprise application uses different kinds of data, and already usually integrates information from different sources. Increasingly we’ll see such applications manage their own data using different technologies depending on how the data is used.
The conventional understanding is that to achieve polyglot persistence, you store each discrete data type in its own discrete technology. But the definition of polyglot is “the ability to speak many languages,” not “the ability to integrate many components.” This is where enterprises get into trouble. They tend to want to take the conventional route of using multiple stores for multiple data types.
On the surface, it might appear to make sense to store each data model in its own distinct management system, but integrating this data with data from other systems increases the complexity of managing any unified view of the data exponentially. Fowler correctly noted that each system will have its own interface, requiring new skills to be learned, and that different systems will ...