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

       

Манипулирование массивными данными (P5)


В то время как в поиске по определению используется много объектов, операции обновления часто затрагивают только несколько объектов, что снижает возможности оптимизаций, описанных в предыдущих подразделах. Однако в любом приложении обычно имеется несколько случаев, в которых требуется манипулирование массивными данными. Операции манипулирования данными включают вставки, удаления и обновления данных. Упрощенным примером может служить следующая конструкция:

for (Employee e in db.allEmployees() ) if ( e.department.name.equals(“Sales”) ) e.salary = e.salary * 1.2;

В этом случае применимы оптимизации, описанные в предыдущем подразделе. Легко использовать явное выполнение запроса для запуска оператора SQL, выполняющего массивную операцию:

UPDATE Employee set salary = salary * 1.2 FROM Employee INNER JOIN Department d ON d.ID = e.Department WHERE d.name = 'Sales'

Но ни средства объектно-реляционного отображения, ни основанные на Java персистентные языки программирования не допускают эффективного выполнения массивных операций обновления в реляционных базах данных. AppleScript допускает удаленное выполнение операций обновления. В проектах языка DBPL [] и его приемника Tycoon [] исследовались оптимизация поиска и массивные операции в среде ортогональной персистентности. В проекте Tycoon предполагалось интегрировать оптимизацию в компиляторе с оптимизацией запросов к базам данных, но никакие окончательные результаты не были опубликованы []. Запросы, не ограниченные кодом одного модуля, оптимизировались во время выполнения путем применения динамической компиляции. Ни для DBPL, на для Tycoon не публиковались какие-либо оценки производительности; известно только число строк кода в реализации.

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



Содержание  Назад  Вперед