Сервер Oracle: тяжелый, как танк, или легкий, как пушинка?

Если бы 20 лет назад вы спросили у сотрудников фирмы Oracle, что они разрабатывают, то получили бы краткий ответ: СУБД Oracle. Задав этот же вопрос сегодня, вы, скорее всего, услышите длинный перечень, куда приведенный выше ответ войдет лишь в качестве одной из позиций: Web-сервер, средства разработки Oracle, системы управления предприятием Oracle и т.д. И все же, несмотря на разительные изменения, сервер СУБД Oracle остается для фирмы основным, базовым продуктом, на мой взгляд, наиболее проработанным, отлаженным и ценным для клиентов. Само понятие «сервер Oracle» со временем претерпело целый ряд изменений. Сегодня сервер уже представляет собой не один продукт (реализованный для разных операционных систем), а линейку продуктов — впрочем, подобная практике принята и у конкурентов. Для новичка, не вполне ориентирующегося в названиях и конфигурациях, предлагаемых Oracle, и озабоченного необходимостью принять вполне конкретное решение, наличие такой линейки — одно из главных затруднений. К счастью, линейка «не длинна», поэтому затруднение преодолимо. Посмотрим, что входит в линейку продуктов Oracle.

Сегодняшняя номенклатура серверов Oracle состоит из следующих типов:

  • Oracle Enterprise Edition;
  • Oracle Standard Edition;
  • Personal Oracle;
  • Oracle Lite.

Говоря о формальной стороне дела, нужно отметить, что, во-первых, этот набор типов сформировался не сразу (в свое время не было, например, Oracle Lite, а еще раньше — Personal Oracle), а во-вторых — к огорчению пользователей, но в полном соответствии с рыночными стереотипами поведения крупных компаний — приведенные названия со временем не раз менялись «в приказном порядке». Так, Oracle Standard Edition ранее именовался Oracle Workgroup Server, и различие между этими двумя типами серверов не «видовое», а чисто версионное, то есть отражает ход естественного эволюционного развития одного и того же продукта.

Эти замечания следует учесть тем, кто активно пользуется литературой по Oracle. Там вы вполне можете столкнуться с описанием того продукта, что вам требуется, но под другим названием — не стоит из-за этого бросать книжку или статью в дальний угол и искать новую! Реальные версионные изменения в системе часто оказываются незначительными или вовсе отсутствуют.

Разберемся с тем, что кроется за теперешней типизацией серверов Oracle. Нагляднее всего будет соотнести ее с областью применения. В табл. 1 показано, как предлагает применять типы своих серверов сама фирма.

Таблица 1
Тип сервера Рекомендуемая платформа Предлагаемая область использования
Oracle Enterprise Edition UNIX, Windows NT, в том числе с возможностями параллельной обработки Сервер прямого доступа для всего предприятия (завода, организации)
Oracle Standard Edition UNIX (в том числе Linux) и Windows NT Сервер прямого доступа в рамках подразделения (отдела)
Personal Oracle Windows-платформы Локальный сервер, встроенный в самостоятельную прикладную систему; сервер для «персонального использования»
Oracle Lite Windows NT/9x/CE Сервер для автономных мобильных компьютеров, подключаемых время от времени к основной БД

По поводу этих рекомендаций нужно заметить, что в целом они — корректный ориентир, однако составлены в расчете на зарубежную действительность. Масштабам «нашего» предприятия, например, вполне может соответствовать «их» отдел. К тому же это общие рекомендации, вовсе не запрещающие возможность использования того или иного сервера «не в своей нише».

Функциональные различия серверов разных типов постоянно изменяются с выпуском новых версий, однако некоторое постоянство этих различий все же имеет место. Осуществляя выбор сервера конкретного типа, полезно знать, что первые три из них («персональный», «стандартный» и «заводской») — это генетически родственные продукты. Все три имеют общую архитектуру, общее устройство, логику и принципы работы и являются развитием того самого магистрального сервера баз данных, который существовал 20 лет назад. Различаются они реализацией общей архитектуры применительно к менее ресурсоемким платформам и более простым требованиям, а также связанным с этим возможным отключением каких-то функций. Personal Oracle можно считать функциональным сужением сервера Standard Edition и применением архитектуры последнего к более простым условиям; в свою очередь, Standard Edition — это функциональное сужение Enterprise Server. Разрабатывается как бы одна общая архитектура, а потом делаются ее более простые реализации.

Примерами такого сужения могут служить процессная архитектура и параллельная обработка. Общая для всех трех типов серверов логика работы СУБД как совокупности самостоятельных процессов в Enterprise Edition для Unix выполнена «один к одному» в виде именно процессов, а в версии Standard Edition для NT (как, впрочем, и для Enterprise Edition для NT) имитируется потоками (threads) этой операционной системы. Personal Oracle (как и Standard Edition) фактически реализован как частный случай параллельного сервера (когда две или более СУБД работают одновременно с одной базой данных), выполненного в полном объеме в Enterprise Edition. Докапывающиеся до самых глубин знатоки Oracle утверждают, что тонкости работы отдельного (не параллельного) сервера можно понять только с учетом этого обстоятельства.

Таким образом, некоторые функции в младших типах серверов не реализованы, а некоторые попросту отключены. Знание последнего факта позволяет некоторым пользователям творчески относиться к данным табл. 1. Так, если повезет, то в Internet можно найти не документированный фирмой Oracle способ перевода Personal Oracle в состояние, когда он сможет обслуживать более одного соединения с базой данных по сети (напомню, что по замыслу изготовителя этот тип сервера должен использоваться локально и ему формально выделено только одно внешнее соединение для обмена с другими серверами). Для этого требуется выставить соответствующие конфигурационные параметры, что позволит получить удовлетворительный сервер с меньшими требованиями к ресурсам, чем предъявляются к Oracle Standard Edition. Следует, правда, заметить, что подобные настройки, во-первых, требуют определенной квалификации, а во-вторых, не встречают понимания у представителей Oracle.

Табл. 2 дает некоторое представление о схожести и различии функциональности двух наиболее популярных типов серверов из упомянутой тройки.

Таблица 2
Свойство Oracle8 Server (Standard Edition) Enterprise Server (Enterprise Edition)
Oracle Enterprise Manager (OEM) Есть Есть
Резервирование и восстановление без остановки сервера Есть Есть
Инкрементальное восстановление Нет Есть
Параллельное резервирование и восстановление Нет Есть
Восстановление табличного пространства на указанный момент времени Нет Есть
Поразрядные индексы Нет Есть
Оптимизация запросов типа «звезда» Есть Есть
Параллельная обработка (запросов, операторов DML; загрузка, сканирование индексов и т.д.) Нет Есть
Распределенные запросы Есть Есть
Репликация (основные возможности) Есть Есть
Репликация (расширенные возможности) Нет Есть
Pro*C Есть Есть
ODBC-драйвер Есть Есть
Расширенная поддержка очередей Нет Есть
Встроенные процедуры и триггеры Есть Есть
Поддержка больших объектов (LOB) Есть Есть
Поддержка картриджей  Частично Полностью
Расширенная сетевая поддержка Нет Есть
Работа с объектами Нет Есть
Режим рассредоточения табличных пространств по дисковым областям (partitioning) Нет Есть
Режим параллельного сервера Нет Есть

По-иному обстоит дело с Oracle Lite. Исторически это была внешняя по отношению к линейке серверов система, которая эволюционировала в противоположном направлении: не в сторону ограничения возможностей более старших серверов с целью «снижения веса» системы для использования в более простых условиях, а в сторону достижения совместимости с основной линейкой. Как результат, Oracle Lite характеризуется не только невероятно низкими для серверов Oracle требованиями к ресурсам платформы, но и некоторыми «генетическими» расхождениями с основной линией.

Так, имеются расхождения в базовых типах данных. Используется свой загрузчик данных, похожий, хотя и не полностью, на SQL*Loader. Но, возможно, более важное различие — в отсутствии поддержки PL/SQL. В последних версиях Lite (версия 4.0) появились триггеры и встроенные процедуры, но языком для них служит только Java, в то время как на серверах «основной тройки» такая Java-возможность возникла — в дополнение к давно реализованной возможности создания триггеров и процедур на языке PL/SQL.

Эти и ряд других форм несовместимости могут создать проблему для миграции баз данных и приложений с остальных серверов на Oracle Lite (и в противоположном направлении), в то время как подобной проблемы внутри «основной тройки» практически не существует (если не выходить за рамки общей функциональности). Переход от сервера к серверу внутри «тройки» прост и не требует от администратора переучивания — необходимо только обучиться тому новому, что имеется у более «старшей» модели (если переход совершается от «младшего» типа к «старшему»). Переход же к Oracle Lite потребует кое о чем забыть, а кое-что выучить на иной манер. (Для примера и в дополнение к сказанному выше — совсем по-другому выглядит одинаковая для всех остальных типов серверов процедура установки системы. Загляните в каталог RDBMS\Admin и убедитесь в отсутствии SQL-сценариев, знакомых по всем операционным средам и по всем трем серверным разновидностям.)

Другое дело, что несовместимость Oracle Lite с остальными продуктами может лежать за пределами ваших задач или упомянутая миграция может не потребоваться. В таком случае, а также если от вашей СУБД не требуется работа с текстами и видео, инкрементальное резервирование, усиленная парольная защита, поддержка одновременной работы 500 пользователей и многое другое — смело ставьте Oracle Lite на свой laptop или PC и используйте СУБД Oracle как вам угодно! В конце концов какая-то работа по включению Lite в общую линейку серверов все же проводилась, и взаимоотношения этих систем характеризуются не только различиями и противоречиями.

 
« Предыдущая статья   Следующая статья »