Я бы также рассмотрел, как приложения используют базу данных. Обычно база данных (как разработка, так и реализация) должна относиться к одной из двух разных категорий: транзакционная (OLTP) или отчетная (OLAP).
Хорошо спроектированная (и реализованная) транзакционная база данных должна обеспечивать превосходную производительность в типичном сценарии приложения для бизнеса; аналогично, хорошо спроектированная (и реализованная) база данных отчетов должна обеспечивать превосходную производительность при запросах больших объемов данных.
Другим важным отличием является разница между «в реальном времени» и «почти в реальном времени».
Предположим, что вашему различному приложению необходимо выполнять как транзакции (в режиме реального времени), так и некоторые отчеты по текущим / более старым данным; вам понадобятся два хранилища данных: транзакционное хранилище, созданное исключительно для оперативной скорости для поддержки операций приложений в режиме реального времени, и другое, содержащее «исторические» данные, которые будут созданы исключительно для отчетности.
Хитрость заключается в том, чтобы выяснить, сколько данных вам нужно хранить в хранилище транзакционных данных, и когда / как переместить их в хранилище отчетных данных.