Monday, October 03, 2005

Плакать или смеятся

"Дизайн не имеет никакого отношения к производительности. Oracle должен со всем справляться сам". Этот пост Тома Кайта можно было бы считать смешным, если бы это не было так грустно.

Я слышу это сплошь и рядом.

- Почему вы хотите вынести это приложение из Oracle?
- Мы избавляемся от блокировок, эта СУБД не может масштабироваться.

Как насчёт:

- Почему вы хотите убрать все светофоры в городе?
- Они замедляют движение, машины вынуждены стоять на перекрёстках.

"Мы избавляемся от блокировок". СУБД специально вставляет Вам палки в колёса, правда? Если вы собираетесь организовать корректный одновременный доступ к данным, Вам понадобятся блокировки. Иначе вы получите мусор. Каким образом вы собираетесь от них избавиться? Где будет целостность Ваших данных?

Как насчёт:

"Наши разработчики не желают обременять себя изучением физической модели этого мира, поэтому спроектировали машину на квадратных колёсах".

Не удивительно, что спроектированная без понимания физической модели машина не едет.

Не удивительно, что написанное без понимания СУБД приложение не достигает нужной производительности.

СУБД была рождена для работы с данными и делает это максимально эффективно. Вынос работающего с данными приложения из СУБД с целью повышени его производительности - абсурд. Решение оказывается хуже проблемы, которое оно пытается решить.
  • Каждое "вынесенное" их СУБД приложение имеет собственный кэш и не разделяет его с другими. Покупайте тонны памяти.
  • Теперь работа с данными происходит на порядок менее эффективно, чем могла быть. Покупайте тонны серверов.
  • Что произойдёт с данными в кэше приложения в случае сбоя? Покупайте еще тонну серверов с тонной памяти для дублирования.
Как насчёт:

"Теперь у каждого квадратного колеса собственный двигатель. В дополнение дорога, по которой будет ездить наша машина, так же полностью переложена для учёта особенностей квадратных колёс. Теперь по ней никто не может ездить, кроме нашей машины."

Плакать или смеяться?