Несомненно, самой главной новостью прошедшего Oracle OpenWorld 2012 был анонс новой версии базы данных Oracle Database. Количество и качество новых возможностей просто поражает, некоторые из них носят глобальный характер (напр: Pluggable Database).
На моей памяти, ни в одной версии СУБД Oracle не было анонсировано столько новых возможностей. Так что нас ждет интересное время!
Мне впервые удалось попасть на Oracle OpenWorld, и только здесь осознаешь огромные масштабы компании: 50 тысяч человек - участников конференции, приехавшие сюда с всего мира, перекрытый центр Сан-Франциско, огромное количество сессий и очень много информации. Я выбирал только сессии посвященные новым возможностям СУБД, но мой день был занят с утра до вечера! К сожалению, не удалось попасть на сессии посвященные другим интересным темам.
Не буду скрывать: чувствуешь некоторую гордость, связанную с причастностью к всему этому.
После прилета (перелет из Москвы в Сан-Франциско занял 16 часов!), самое трудное - это адаптироваться к 11-ти часовой разнице в времени с Москвой. Удалось побывать в центральном офисе Oracle в Redwood city, съездить на мост GoldenGate, а также... прогуляться по кампусу Google. Офис Google произвел впечатление своей оригинальностью и подходом к организации работы сотрудников.
Спасибо за экскурсию сотруднику Oracle Development Team Впадимиру Бегуну !
В последний день Oracle OpenWorld 2012 выступил Том Кайт с рассказом о самых лучших 12-ти новых возможностей следующей версии СУБД Oracle Database. Вот этот список с небольшими моими комментариями.
1. Even better PL/SQL from SQL
Непосредственно в тексте SQL-запроса можно указывать текст PL/SQL-функции, которая вызывается внутри запроса. Цель этого нововведения: уменьшить время переключения между SQL-движком и виртуальной машиной PL/SQL в процессе выполнения запроса. Также появилась новая прагма компилятора PL/SQL, которая позволяет пометить функции вызываемые внутри SQL-запросов.
Для таких функций PL/SQL-компилятор генерирует дополнительную информацию для уменьшения затрат на переключение контекста SQL<->PL/SQL.
В результате: значительно повысилась скорость выполнения запросов внутри которых вызывается PL/SQL-функции!
2. Improved defaults
Расширение возможностей установки значений по умолчанию для колонок таблиц.
Включает в себя две новые возможности:
- автоинкрементные поля (значение которых вставляются автоматически из последовательности);
- установка значения по умолчанию при вставке NULL в поле, при этом в строке таблицы фактически НЕ происходит замена NULL на значение по умолчанию, а устанавливается ссылка на словарь (dictionary based default for NULL).
3. Bigger varchar2, nvarchar2, raw -up to 32K
Поля типа varchar2, nvarchar2, raw теперь могут иметь размер до 32K. Добавлен новый параметр Max_SQL_String_Size в init.ora для включения этой возможности.
4. Top-N and pagination queries
В SQL-запросах теперь поддерживается фраза TOP, FETCH NEXT и OFFSET для получения необходимого количества строк в произвольном окне курсора. Очень полезная возможность при формировании результата запроса, который должны отображаться в многостраничном виде (pagination) !
5. Row pattern matching
С помощью фразы MATCH_RECOGNIZE в SQL-запросе теперь можно получить набор строк которые удовлетворяют определенному условию по времени (time series use case explained). Например: строки в которых объем продаж возрастал, а затем пошел на понижение.
6. Adaptive Execution plans
Динамическое изменение отдельных шагов плана (например замена Nested Loops на Hash Join), если после первого выполнения оптимизатор понял, что ошибся.
7. Partitioning Improvements
Асинхронная перестройка глобальных индексов после операций TRUNСATE или DROP секции.
Теперь, после удаления или очистки партиции, глобальные индексы на таблице не переводятся в недействительное состояние, а производится их перестройка в фоновом режиме.
В DDL-операций над секциями теперь можно указывать несколько секций.
Поддержка смешанного секционирования Interval+Reference.
Перемещение секций (ALTER TABLE .. MOVE PARTITION) в online, без остановки. DML-операции при этом не блокируются и продолжают свою работу.
8. Enhanced Statistics
Расчет статистики для временных таблиц на уровне сессии.
Поддержка гибридных гистограмм.
Операции CTAS и INSERT … SELECT автоматически рассчитывают статистику в ходе своего выполнения.
9. Temporary Undo
Теперь undo-сегменты для временных таблиц сохраняются в TEMP-табличном пространстве, а не в UNDO, как это было в прошлых версиях. Раньше, при изменении временных таблиц все равно генерировалось REDO-информация, поскольку производилась запись в UNDO (redo генеривароал undo !).
Благодаря этому стала возможна поддержка DML-операций над временной таблицей на StandBy-сервере.
10. Data Optimization
Встроенный Information Lifecycle Management [ILM]
СУБД автоматически сопровождает температурную карту (heat map) данных.
"Холодные" данные автоматически сжимаются и перемещаются на лругие уровние хранения. Политики ILM объявляются декларативно на уровне DDL-операций над таблицами.
11. Transaction Guard
Встроенная инфраструктура для определения факта фиксации транзакции после сбоя.
Transaction Guard использует другая мощная технология - Application Continuity.
Разработчикм могут использовать Transaction Guard в своих приложениях самостоятельно (независимо от Application Continuity).
12. Pluggable database
Теперь несколько баз данных могут работать в рамках одного набора фоновых процессов и SGA. Применяется для конлидации нескольких БД в едином экземпляре (контейнере). Эта новая возможность потребовала изменения всей архитектуры СУБД Oracle.
Чуть позже после релиза новой версии СУБД будет подробная информация об этой и других новых технологиях,