Классика баз данных - статьи

       

Что же делать?


Мы разъяснили суть конфликта между инкапсуляцией и оптимизацией запросов, но что же в связи с этим может сделать разработчик?

  1. Программные приложения. Здесь нет проблем, поскольку в языках программирования нет оптимизатора запросов. Нужно просто инкапсулировать код, следуя советам литературы, посвященной объектно-ориентированному программированию.
  2. Приложения ООСУБД. Обычно следует склоняться к инкапсуляции. В настоящее время у большинства ООСУБД имеются достаточно слабые оптимизаторы запросов, не слишком стимулирующие формулировку широких запросов.
  3. Приложения РСУБД. В этом случае нет простого ответа. Имеются три разных случая.

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



Содержание раздела