Posts

Showing posts from March, 2020

Designing Data Intensive Application

Image
Designing Data Intensive Application A data-intensive application is typically built from standard building blocks that provide commonly needed functionality. For Example, many applications need to: Store data so that they, or another application, can find it again later(databases). Remember the result of an expensive operation, to speed up reads (caches) Allow users to search data by keyword or filter it in various ways (search indexes) Send a message to another process, to be handled asynchronously (stream processing) Periodically crunch a large amount of accumulated data (batch processing) Data Systems We typically think of databases, queues, caches etc. as being very different categories of tools. Although a database and a message queue have some superficial similarity -- both store data for some time-they have very different access patterns, which means different performance characteristics, and thus very different implementations. For example, there are d...