div.main {margin-left: 20pt; margin-right: 20pt}
Сервер Oracle: тяжелый, как танк, или
легкий, как пушинка?
Если бы вы спросили 20 лет назад в фирме Oracle, что они разрабатывают, то
получили бы краткий ответ: “СУБД Oracle”. Задав этот же вопрос сегодня, вы,
скорее всего, получите длинный перечень, куда приведенный выше ответ войдет
всего лишь в качестве одной из позиций: “Web-сервер, средства разработки,
системы управлением предприятием” и т.д. И все же, несмотря на разительные
изменения, сервер СУБД остается для фирмы основным, “базовым” продуктом, на мой
взгляд, наиболее проработанным, отлаженным и ценным для клиентов.
Но и само понятие “сервер 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 ? Понятнее всего будет
соотнести ее с областью применения. Вот как предлагает применять типы своих
серверов сама фирма:
Тип сервера |
Рекомендуемая платформа |
Предлагаемая область
использования |
Oracle Enterprise Edition |
Большие машины, Unix- и NT-машины, в том числе
с возможностями параллельной обработки |
Сервер прямого доступа для всего предприятия
(завода, организации) |
Oracle Standard Edition |
Unix- (в т.ч. Linux-) и 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 (как и Standart Edition) фактически реализован как
частный случай параллельного сервера (когда две или более СУБД работают
одновременно с одной БД), выполненного в полном объеме в Enterprise Edition.
Большие знатоки Oracle, докапывающиеся до самых глубин, утверждают, что тонкости
работы отдельного (не параллельного) сервера можно понять, только учитывая это
обстоятельство.
Таким образом некоторые функции в младших типах серверов не реализованы, а
некоторые попросту отключены. Знание последнего иногда позволяет творчески
относиться к таблице выше. Так, если повезет, то в Internet вы можете найти
недокументированный фирмой Oracle способ перевода Personal Oracle в состояние,
когда он сможет обслуживать более одного соединения к БД по сети (напомню, что
по замыслу изготовителя этот тип сервера должен использоваться локально, и ему
формально выделено только одно внешнее соединение для обмена с другими
серверами). Для этого требуется выставить соответствующие конфигурационные
параметры, и в результате можно получить удовлетворительный сервер с меньшими
требованиями к ресурсам, чем предъявляются в Standard Edition. Следует, правда,
заметить, что подобные настройки (а) требуют определенной квалификации и (б) не
встречают понимания у представителей Oracle.
Ниже приводится таблица, дающая некоторое представление о схожести и различии
функциональности для двух наиболее популярных типов серверов из упомянутой
тройки.
Свойство |
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.
Эти, и ряд других форм несовместимости, могут составить проблему для миграции
БД и приложений с остальных серверов на Lite (и в противоположном направлении),
в то время как такой проблемы внутри “основной тройки” практически нет (если не
выходить за рамки общей функциональности). Переход от сервера к серверу внутри
“тройки” прост и не требует от администратора переучивания – требуется только
обучиться новому, если переход совершается от “младшего” типа к “старшему”.
Переход же к Oracle Lite потребует кое о чем забыть, а кое-что выучить на иной
манер. (К примеру, и в дополнение к сказанному выше, совсем по-другому выглядит
привычная для всех остальных типов серверов процедура установки системы.
Загляните в каталог RDBMSAdmin и убедитесь в отсутствии SQL-сценариев, знакомых
по всем операционным средам и по всем трем серверным разновидностям).
Другое дело, что несовместимости Oracle Lite с остальными продуктами могут
лежать за пределами ваших задач, или упомянутая миграция может оказаться вам не
нужна. Тогда, а также если вам не требуется от СУБД работы с текстами и видео,
инкрементального резервирования, усиленной парольной защиты, поддержки
одновременной работы 500 пользователей и многого другого – смело ставьте Oracle
Lite на свой laptop или PC и используйте СУБД Oracle, как вам будет угодно! В
конце концов, какая-то работа по включению Lite в общую линейку серверов все же
была проделана, и отношения этих систем характеризуются не одними различиями и
противоречиями.
|