If we have multiple custom components on a page with its own Apex controller, we can easily repeat SOQL queries.
Let's take a look at a scenario wherein multiple components have their own SOQL query, and there is no data sharing between components, as illustrated in the following diagram:
Lightning Data Service provides the following advantages:
The following diagram shows how the data flow is simplified with Lightning Data Service, with the ability to cache and share the data: