СУБД Oracle Database 12c, которую компания разрабатывала пять лет, включает более 500 новых функций, в том числе улучшения архитектуры, средства повышения надежности и эффективности использования ресурсов. Но главная новинка — поддержка мультиарендности (multitenancy), упрощающая применение СУБД в облачных средах. На это указывает буква “с” (от слова “cloud”), которая появилась в названии новой версии. Правда за последнюю возможность пользователям Oracle, имеющим контракт на сопровождение, придется заплатить дополнительно, так как она поставляется в качестве опции.

Марк Ривкин, руководитель группы технологий баз данных “Oracle СНГ”, выделил четыре наиболее важных усовершенствования Oracle 12c. Первым, конечно, является мультиарендность. “Если у вас есть множество баз данных, то для этого приходится иметь много компьютеров и нанимать много администраторов. Объединить их вместе на одной машине сложно, так как они начинают мешать друг другу. Теперь появилась возможность размещать множество баз данных внутри одной. Это упрощает администрирование и повышает эффективность использования оборудования”, — объяснил Марк Ривкин и в качестве доказательства привел результаты сравнительного тестирования новой и предыдущей версий базы данных на одной и той же задаче. Оказалось, старая версия позволяет реализовать на компьютере 50 БД, а новая — более 250.

Реализовать такую консолидацию позволяет новая архитектура БД, дающая возможность создать контейнерную БД, которая может содержать множество подключаемых (pluggable) баз данных. Поддерживать их будет единый набор процессов и одна область памяти. “Другими словами, единый экземпляр БД будет обслуживать множество баз данных. При этом перенос БД из нынешнего состояния в консолидированное очень прост, ничего не надо переписывать”, — сказал Марк Ривкин.

По его словам, этот механизм хорошо подходит для использования базы данных в облаке в качестве сервиса: “Многоарендность позволяет быстро разворачивать большие базы данных по заранее созданному шаблону”.

Однако, когда пользователь заказывает облачный сервис, он обычно задает требуемый уровень обслуживания. Но если в одной БД работает множество баз данных, то они потребляют одни и те же ресурсы и встает вопрос как их делить. По словам Марка Ривкина, для этого предусмотрена система задания приоритетов по использованию памяти, процессоров, устройств ввода/вывода и т. д., которая упрощает разделение ресурсов и позволяет обеспечить требуемое качество обслуживания.

Не забыт и вопрос защиты информации, который всегда возникает в отношении облачных сервисов. Как объяснил Марк Ривкин, несмотря на то что все подключаемые базы данных “живут” внутри одного экземпляра БД, они остаются совершенно изолированными, потому что как бы “не видят” друг друга.

Второе важное новшество обеспечивает непрерывность работы приложений (application continuity) за счет автоматического повтора транзакций. Это позволяет в случае сбоя кластера во время выполнения транзакции понять, надо ли повторять эту операцию. “Oracle с этим борется уже давно. Теперь появился новый компонент Transaction Guard, который помогает узнать, закончилась транзакция или нет. В случае сбоя клиентское приложение, не получившее подтверждения о завершении транзакции, может послать запрос, прошла ли транзакция, и в зависимости от ответа действовать дальше — повторять ее или нет или выполнить другие действия в зависимости от заданных заранее политик. Это позволяет избежать повторной оплаты одного и того же товара, потери важных данных и т. д.”, — пояснил Марк Ривкин. Правда, для использования этого функционала в существующем приложении в него придется вносить изменения.

Третье полезное новшество связано с автоматической оптимизацией данных. Сейчас, когда объемы данных стремительно растут, управлять ими вручную становится невозможно. Обычно для “борьбы” с информационной лавиной применяют два способа: сжатие данных ради сокращения объема памяти и перемещение неиспользуемых данных на более дешевые и медленные носители. “В Oracle 12с реализован механизм отслеживания того, кто и что с какими данными делает. На основе этого составляется так называемая температурная карта для сегментов и блоков данных. Если, например, в течение некоторого времени секция не изменялась, она будет сжата с помощью того или иного алгоритма сжатия и перемещена на более дешевое устройство в соответствии с заранее заданными политиками. Другими словами, система автоматически определяет, с какими данными как надо работать и какие алгоритмы применять”, — сказал Марк Ривкин.

Четвертое усовершенствование касается маскирования данных “на лету” для того, чтобы показывать не все данные из БД, а только те, которые можно в каждом конкретном случае. “Например, в БД хранятся номера кредитных карт. Некоторые сотрудники банка должны их видеть полностью, а служащие из call-центра — только последние четыре цифры. Или, допустим, медицинская информация, которую не стоит полностью показывать пациентам, — привел примеры Марк Ривкин. — Новый механизм позволяет в соответствии с заданными политиками маскировать данные на лету, т. е. в тот момент, когда ее запрашивает пользователь”.

Кроме того, в версии 12с появилась возможность создавать приложения, работающие с чужими базами данных. “Сейчас поддерживаются СУБД Microsoft SQL, Sybase и IBM DB2. Они посылают запросы каждая на своем диалекте SQL, а Оracle 12c переводит их на свой язык”, — пояснил Марк Ривкин.

Это новшество указывает на изменение рыночной политики Oracle, которая раньше не очень стремилась “дружить” с конкурентами. Судя по этому шагу, а также по недавно заключенным соглашениям с NetSuite, Salesforce.com и Microsoft, компания сделала поворот в сторону сотрудничества. Валерий Лановенко, вице-президент Oracle и глава представительства Oracle в СНГ и России, объяснил это стремлением удовлетворить требования клиентов: “Они хотят, чтобы их мультивендорные решения работали более интегрированно. Партнерские соглашения Oracle направлены на интеграцию продуктов в облачных средах”.