
- •Понятие технологии баз данных. Эволюция технологий баз данных.
- •Стандарт языка sql и его окружения.
- •Перспективные направления развития технологий баз данных.
- •Проблемы и текущие задания исследований в области баз данных.
- •Новые возможности sql-3. Перспективы развития стандарта.
- •6. Інтеграція інформаційних ресурсів
- •7. Аналітичні функції. Призначення. Синтаксис
- •8. Динамічний sql. Призначення. Порівняння динамічного та статичного
- •9. Реалізація динамічного sql за допомогою пакета dbms_sql
- •11. Native Dynamic sql
- •12. Засоби апи (остальное – на пикче)
- •13. Стандарты языка sql. Их виды и предназначение.
- •14. Динамічний і статичний sql
- •18. Проектування баз даних за допомогою uml. Порівняння оомд та інших
- •19. Управління сводними даними
- •20. Проблеми сховищ даних
- •21. Моделювання даних за допомогою uml.
- •22. Ообд: основні концепції, організація і управління
- •23. Проектування сховищ даних
- •24. Архітектура сховища даних
- •25. Вибір субд для сховища даних
- •26. Концепція сховищ даних.
- •27. Завантаження даних у сховища.
- •28. Експлуатація сховищ даних
- •29. Управління сховищем даних
- •30. Створення сховища даних
- •31. Секціонування сховищ даних.
- •32. Індексування сховищ даних. Индексирование данных
- •36. Принципы построения xml документов
6. Інтеграція інформаційних ресурсів
Типичным подходом к интеграции информации в масштабах предприятия является построение хранилищ (DataWarehouse) витрин (data mart) данных на основе извлечения операционных данных, их трансформации к единой схеме и загрузки данных в хранилище (процедура ETL - extraction, transfotamation, loading). Этот подход пригоден для использования на предприятии с несколькими десятками операционных баз данных, находящихся под единым контролем. В Internet парадигма ETL не приемлема. Теперь требуется производить интеграцию информации между несколькими предприятиями. Как правило, организации не позволят в массовом порядке извлекать данные из своих операционных баз данных, к ним можно будет адресовать лишь одиночные запросы.
В результате потребуется интеграция, возможно, миллионов информационных источников "на лету". В связи с этим существует множество нерешенных проблем: семантическая неоднородность; неполнота и неточность данных; ограниченность доступа к конфиденциальным данным и т.д.
Исторически хранилища данных предназначались, прежде всего, для поддержки приложений оперативной аналитической обработки данных (OLAP). Для этих приложений исключительно важна "качественность" данных, которая и поддерживается процедурой OLAP. Так что, наряду с потребностью в решении технических проблем интеграции данных "на лету", нужно понять, в какой мере и каким образом этот подход может заменить традиционные хранилища данных.
7. Аналітичні функції. Призначення. Синтаксис
Аналитические функции используют общий синтаксис и предоставляют специфические возможности.
В отличие от обычных скалярных функций аналитические функции берут аргументом SQL-таблицу, представляющую логический промежуточный результат обработки SQL-оператора, где использовано обращение к такой функции, и возвращают в качестве своего результата обычно тоже SQL-таблицу.
Впервые появились в версии СУБД Oracle 8.1.6 (26 штук) и получили дальнейшее развитие в версии 9. Созданы совместными усилиями фирм IBM, Oracle и Compaq путем разработки улучшений некоторых конструкций, имеющихся в стандарте SQL:1999.
Техническая цель введения аналитических функций - дать лаконичную формулировку и увеличить скорость выполнения "аналитических запросов" к БД. Пользование аналитическими функциями может дать следующие выгоды перед обычными операторами:
Лаконичную и простую формулировку. Многие аналитические запросы к БД традиционными средствами сложно формулируются, а потому с трудом осмысливаются и плохо отлаживаются.
Снижение нагрузки на сеть. То, что раньше могло формулироваться только серией запросов, сворачивается в один запрос. По сети только отправляется запрос и получается окончательный результат.
Перенос вычислений на сервер. С использованием аналитических функций нет нужды организовывать расчеты на клиенте; они полностью проводятся на сервер, ресурсы которого могут быть более подходящими для быстрой обработки больших объемов данных.
Лучшую эффективность обработки запросов. Аналитические функции имеют алгоритмы вычисления, неразрывно связанные со специальными планами обработки запросов, оптимизированными для большей скорости получения результата.
В случае использования предложения OVER функция называется аналитической. Аналитические функции могут возвращать несколько строк для каждой группы, а не единственное значение, как делают групповые функции.
Все функции имеют следующий синтаксис
ИМЯ_ФУНКЦИИ(<аргумент>,< аргумент >, . . . )
OVER (<конструкция_фрагментации> <конструкция_упорядочения> <конструкция_окна>)
Аналитические функции условно разбиваются на четыре основных класса в зависимости от возможностей.
функции ранжирования, позволяющие строить запросы типа "первых N".
оконные функции, позволяющие вычислять разнообразные агрегаты (групповые операции).
итоговые функции. Они очень похожи на оконные, но итоговые функции работают со всеми строками секции или группы. Ключевое отличие итоговой функции от оконной — отсутствие конструкции ORDER BY в операторе OVER. При отсутствии конструкции ORDER BY функция применяется к каждой строке группы. При наличии конструкции ORDER BY функция применяется к окну.
статистические функции, такие как VAR_POP, VAR_SAMP, STDEVJPOP, набор функций линейной регрессии и т.п. Эти функции позволяют вычислять значения статистических показателей для любой неупорядоченной секции.
Конструкция секционирования
Конструкция PARTITION BY логически разбивает результирующее множество на группы по критериям, задаваемым выражениями секционирования. Аналитические функции применяются к каждой группе независимо, — для каждой новой группы они сбрасываются. Если не указать конструкцию секционирования, все результирующее множество считается одной группой. Каждая аналитическая функция в запросе может иметь уникальную конструкцию секционирования. Синтаксис конструкции секционирования аналогичен синтаксису конструкции GROUP BY в обычных SQL-запросах: PARTITION BY выражение [, выражение] [, выражение]
Конструкция упорядочения
Конструкция ORDER BY задает критерий сортировки данных в каждой группе (в каждой секции). Это существенно влияет на результат выполнения любой аналитической функции: при наличии (или отсутствии) конструкции ORDER BY аналитические функции вычисляются по-другому. В отсутствие конструкции ORDER BY среднее значение вычисляется по всей группе, и одно и то же значение выдается для каждой строки (функция используется как итоговая). Когда функция используется с конструкцией ORDER BY, то она применяется по текущей и всем предыдущим строкам (функция используется как оконная).
Конструкция ORDER BY в аналитических функциях имеет следующий синтаксис:
ORDER BY выражение [ASC | DESC] [NULLS FIRST | NULLS LAST]
Необходимо учитывать, что строки будут упорядочены только в пределах секций (групп). Конструкция окна
Синтаксис
{ROWS | RANGE} {{UNBOUNDED | выражение} PRECEDING | CURRENT ROW }
{ROWS | RANGE}
BETWEEN
{{UNBOUNDED PRECEDING | CURRENT ROW |
{UNBOUNDED | выражение 1}{PRECEDING | FOLLOWING}}
AND
{{UNBOUNDED FOLLOWING | CURRENT ROW |
{UNBOUNDED | выражение 2}{PRECEDING | FOLLOWING}}
Конструкция окна позволяет задать перемещающееся или жестко привязанное окно (набор, интервал) данных в пределах группы, с которым будет работать аналитическая функция.
Например, конструкция диапазона RANGE UNBOUNDED PRECEDING означает: "применять аналитическую функцию к каждой строке данной группы, с первой по текущую". Стандартным является жестко привязанное окно, начинающееся с первой строки группы и продолжающееся до текущей. Очень важно: для использования окон необходимо задавать конструкцию ORDER BY.
Фразы PRECEDING и FOLLOWING задают верхнюю и нижнюю границы агрегирования (то есть интервал строк, "окно" для агрегирования).
Можно создавать окна по двум критериям:
по диапазону (RANGE) значений данных
по смещению (ROWS) относительно текущей строки.
Окна диапазона
Окна диапазона объединяют строки в соответствии с заданным порядком. Если в запросе сказано, например, "range 5 preceding", то будет сгенерировано перемещающееся окно, включающее предыдущие строки группы, отстоящие от текущей строки не более чем на 5 значений. Применять конструкцию RANGE с другими типами данных нельзя.
Окна строк
Окна срок задаются в физических единицах, строках. Окно заданное конструкцией count (*) over (order by x ROWS 5 preceding) будет включать до 6 строк: текущую и пять предыдущих (порядок определяется конструкцией ORDER BY). Для окон по строкам нет ограничений, присущих окнам по диапазону; данные могут быть любого типа и упорядочивать можно по любому количеству столбцов.
Применять аналитические функции в запросах можно только в предложениях SELECT, включающих фразы ORDER BY, поскольку эти функции оперируют с множеством результатов, полученным после соединений (joins) и выполнения фраз WHERE, GROUP BY и HAVING.
Нельзя использовать одну аналитическую функцию над другой. Это ограничение можно обойти с помощью нескольких вложенных SELECT.