The access patterns for a data system (e.g. database, cache, etc.) motivate different implementations, and thus performance characteristics.
Because many applications have a wide range of requirements, single tools no longer meet all of the data processing and storage needs. It’s up to the application to stitch together different tools.
Despite the behind-the-scenes stitching, the data system may provide certain guarantees, e.g. the cache will be correctly invalidated.