По существу, требования пользователей не изменяются: они хотят всего сразу. И определение этого "всего" тоже не слишком изменяется: они хотят нулевых расходов, мгновенных ответов, бесконечной пропускной способности, бесконечной масштабируемости по отношению к числу поддерживаемых пользователей, линейной масштабируемости при добавлении машин, стопроцентной предсказуемости затрат и производительности, транзакций в стиле ACID, 100-процентной пригодности для чтения и написания запросов и возможности настройки системы к индивидуальным потребностям в любой момент времени с минимальными усилиями. В условиях, когда пользователи не могут иметь все сразу, изменяются приоритеты и ограничения. Коротко говоря, традиционную проблему оптимизации баз данных можно определить следующим образом:
При заданном наборе аппаратных ресурсов и гарантировании полной согласованности данных (т.е. при поддержке ACID-транзакций) требуется минимизировать время ответа за запросы и максимизировать пропускную способность системы по отношению к поступающим запросам.
Новую проблему оптимизиции баз данных можно определить следующим образом:
При заданных требованиях к производительности приложений (пиковая пропускная способность, предельно допустимое время ответа) требуется минимизировать требуемые аппаратные ресурсы и максимизировать согласованность данных.
Эти две проблемы не конфликтуют, и, очевидно, в новом мире применимы многие методы оптимизации традиционных систем баз данных. Однако, как показано в разд. 3 и 4, имеющиеся тонкие различия могут существенно повлиять на архитектуру системы. В табл.1 приведена сводка этих различий в формулировке проблемы. Эти различия немного более подробно описываются далее в этом разделе.
Характеристика | Традиционные базы данных | Новые базы данных |
Затраты [$] | фиксированные | минимизируются |
Производительность [секунды, число транзаций в секунду] | оптимизируется | фиксированная |
Масштабируемость [число машин] | максимизируется | фиксированная |
Предсказуемость [$ и секунды] | - | фиксированная |
Согласованность [%] | фиксированная | максимизируется |
Гибкость [число вариантов] | - | максимизируется |