Аналитика
СУБД и программные продукты фирмы Oracle
Андрей Сахаров
Роль информационных технологий в различных сферах бизнеса постоянно возрастает, и, как показывает опыт, успешное развитие любой фирмы зависит от того, насколько удачно в ней решены вопросы сбора, защиты, хранения информации и оперативного доступа к общекорпоративным данным. Сегодня для компаний ключевым вопросом является не целесообразность вкладывания денег в развитие информационной системы, а проблема выбора именно тех средств, которые в полной мере позволят реализовать преимущества, предоставляемые современными информационными и компьютерными технологиями.

Постепенно руководители всех рангов начинают понимать, что срок службы прикладной информационной системы, а, следовательно, и средств ее реализации, может быть весьма долгим, тогда как аппаратные решения уже через несколько лет морально устаревают и требуют замены. Поэтому постепенно уходят в прошлое времена, когда под информационной системой подразумевались только кадры да зарплата сотрудников, а под ее аппаратным воплощением – в лучшем случае – локальная сеть Novell на 10-15 рабочих мест.
Сегодня большинство специалистов уже не интересуется, можно ли на основе имеющихся средств реализовать конкретную прикладную подсистему и какова будет отдача от ее работы. Ответы – "можно" и "эффективно" – они и так знают заранее. Разработчиков и системных администраторов теперь в первую очередь волнуют проблемы распределенности, надежности, масштабируемости и интегрируемости разнородных данных и приложений.
И если сейчас перед вами стоит задача выбора средств реализации информационной системы, если вас интересуют те же вопросы, рекомендуем обратить самое серьезное внимание на программные продукты и решения, предлагаемые фирмой Oracle.
В соответствии с классификацией, предложенной Meta Group, информационные системы делятся на однопользовательские (Personal), многопользовательские низкого уровня (Low-end Multiuser), уровня предприятия (Enterprise), межрегиональные распределенные (Wide Area Distributed), очень большие (Very Lage), сверхбольшие (Ultralarge).
По оценкам экспертов Meta Group, компания Oracle предлагает эффективные решения практически во всем указанном диапазоне систем. Сегодня она является одним из крупнейших мировых производителей ПО с годовым оборотом в три миллиарда долларов, причем только на новые разработки и перспективные исследования фирмой расходуется около двухсот миллионов долларов в год.
Oracle – это не только всемирно известная реляционная система управления базами данных (СУБД), но и обширное семейство смежных программных продуктов для создания информационных систем самого различного назначения. Все ПО, производимое этой фирмой, можно условно разбить на следующие группы (см. таблицу 1).
СУБД Oracle7 DBMS:
– сервер структурированных данных,
– сервер неструктурированных (текстовых) данных,
– сервер пространственных (многомерных) данных Объединенная среда разработки приложений,
– средства проектирования приложений – Oracle Designer/2000,
– средства разработки приложений – Oracle Developer/2000,
– средства конечного пользователя – Oracle Discoverer/2000,
– средства разработки приложений уровня подразделений – Oracle Power Objects,
– средства интерфейса с программными продуктами третьих фирм,
– средства автоматизации работы с документами и офисной деятельности,
– коммуникационные средства.
Хорошо это или плохо, но с каждым годом СУБД перестает быть чисто "коробочным" продуктом представьте себе, каких размеров нужна коробка и сколько она будет весить, если в нее упаковать носители (не говоря уже о документации) для всех средств, приведенных в таблице.
Конечно, с одной стороны, современные СУБД – и Oracle в том числе – стали проще в обращении и установке, в них появились более удобные средства администрирования и разработки. Но в то же время задачи, реализуемые на их основе, значительно усложнились, в связи с чем в большинстве случаев поиск решения уже нельзя свести к простому просмотру прайс-листов или даже справочных каталогов фирмы.

Но, как показывает опыт, практически с любой проблемой можно справиться несколькими различными- способами И нахождение оптимального решения, как по стоимости, так и по эффективности, сегодня становится сложным процессом, настоящим поиском, в котором наряду с профессионалами-предметниками должны участвовать специалисты по СУБД, компьютерным сетям и аппаратным платформам.
К сожалению, в рамках одной, даже объемной статьи, просто невозможно рассмотреть весь спектр программных продуктов, предлагаемых Oracle. Поэтому мы постараемся заострить ваше внимание, в первую очередь, именно на основных решениях Oracle, а не на конкретных деталях реализации программных компонентов.

И чтобы не останавливаться на этом в дальнейшем сразу же оговоримся, что все без исключения средства Oracle хорошо документированы, обладают дружественным графическим интерфейсом и оснащены системами контекстно-чувствительных подсказок.
Система управления базами данных Oracle7 RDBMS
Не будет преувеличением сказать, что RDBMS является сердцем любой информационной системы. И говоря о достоинствах или недостатках тех или иных программных средств, мы, как правило, характеризуем именно RDBMS.
Архитектура положенная в основу сервера Oracle7, полностью реализует преимущества открытых систем и является дальнейшим развитием ставшей уже традиционной технологии "клиент-сервер" Oracle7 предоставляет широчайший набор возможностей для создания прикладных информационных систем различного масштаба – от однопользовательских систем и систем уровня небольшого под разделения до глобальных межрегиональных распределенных систем обработки информации, – и назначения – начиная с систем, ориентированных на работу в реальном масштабе времени (On-Line Transaction Processing, OLTP), и заканчивая системами поддержки принятия решений (Decision Support Systems, DSS) и системами, основанными на концепциях "хранилищ данных" (Data Warehouse).

Oracle? соответствует самым строгим требованиям, предъявляемым сегодня к системам хранения и обработки информации:
– Работает и обеспечивает масштабируемость и переносимость созданных на ее основе прикладных систем более чем на ста аппаратных и операционных платформах (см. таблицу 2), от персоналок до больших машин и многопроцессорных компьютеров с симметричной параллельной (SMP) и массивно-параллельной архитектурой (МРР). Поддерживает кластерную архитектуру.
– Реально поддерживает многопроцессорные платформы (распараллеливание построения индексов, сортировки, запросов, копирования и восстановления данных) При этом с ростом количества процессоров производительность систем растет практически линейно.
– Обладает исключительными возможностями по совместному использованию различных аппаратных, операционных, сетевых платформ и позволяет объединять все информационные системы предприятия в единую интегрированную вычислительную среду.
– Позволяет организовать распределенное хранение и обработку данных (системы, основанные на двухфазной фиксации транзакций, на асинхронной симметричной и асимметричной репликации данных).
– Предлагает средства для бесперебойной промышленной эксплуатации (круглосуточно и круглогодично) и поддерживает работу с очень большими объемами данных (до нескольких терабайтов).
– Гарантирует автоматическую защиту от сбоев, случайных повреждений данных и несанкционированного доступа. После сбоев, не повлекших за собой физического повреждения внешних магнитных носителей, система восстанавливается автоматически во время повторного запуска ядра Oracle7.
– Поддерживает все основные промышленные стандарты.
– Обеспечивает мощные декларативные ограничения целостности Процедурные возможности позволяют работать с хранимыми процедурами, функциями, алертами, триггерами, пакетами процедур.
– Включает в себя мощные утилиты для загрузки данных из внешних файлов в таблицы, копирования, восстановления, перемещения их из одной БД в другую, управления использованием дискового пространства.
– Автоматически реализует коллективный доступ к данным. Имеет встроенный высокоэффективный механизм блокировок на уровне отдельной строки таблицы (как для собственно данных, так и для индексов).
– Оптимизирует операции дискового ввода-вывода.
– Проводит "интеллектуальную" оптимизацию запросов на основе анализа автоматически собираемой статистической информации о числе строк в таблице, наличии и селективности имеющихся индексов.
– Поддерживает пользовательские расширения языка SQL (разработчик имеет возможность писать на PL/SQL собственные функции в дальнейшем на них можно ссылаться в выражениях SQL – как если бы они являлись встроенными функциями этого языка).
– Поддерживает динамический SQL.
– Позволяет ограничивать ресурсы, доступные пользователю (для каждого конкретного пользователя администратор может контролировать время доступа, операции ввода-вывода, потребление процессорного времени и т д )
– Определяет привилегии и права доступа на основе механизма "ролей" (роли – поименованные группы привилегий, на их основе можно группировать различные привилегии доступа и затем назначать их конкретным пользователям (группам пользователей) или другим ролям).
– Полностью поддерживает другие языки (включая русский) сортирует по алфавиту, реализует национальные форматы представления данных (числовых, календарных, денежных), преобразует символьные данные из верхнего регистра в нижний и наоборот, выдает системные сообщения и подсказки на национальном языке. В случае неоднородной языковой среды (использования разных кодировок в различных узлах) преобразование данных выполняется автоматически.

Распределенные системы
Это может вызвать удивление, но задача построения распределенных систем в России оказывается более актуальной, чем в других странах. И это непосредственно связано с причинами, вызывающими переход на распределенную архитектуру.
Если "у них" это, главным образом, перевод огромных устоявшихся приложений с одной большой машины в среду "клиент-сервер" (и то в большинстве случаев сначала рассматривается вариант конфигурации с многомашинным кластером), то "у нас" это, в первую очередь, ликвидация последствий неуправляемого, практически стихийного развития аппаратной инфраструктуры и информационных систем внутри организации. Ибо многие конторы уже, как правило, работают (или им необходимо работать) с системами, состоящими из множества компьютеров разного типа (серверов, мини-компьютеров, больших машин).

В стандартной конфигурации Oracle7 RDBMS в одном запросе можно выбирать и даже объединять данные, хранящиеся в нескольких удаленных друг от друга узлах. Более того, пользователю не требуется знать, в каких конкретно узлах хранятся запрашиваемые им данные, и не приходится вносить изменения в свое приложение, если необходимые таблицы уже были перенесены из одного узла в другой. Кроме того, для повышения эффективности распределенных запросов применяется декомпозиция запроса и его глобальная оптимизация по стоимости.
Однако если необходимо выполнить одновременную модификацию данных в нескольких удаленных узлах, возникает проблема согласованности вносимых изменений. Из-за сбоев в сетевом или компьютерном оборудовании любой из этих узлов может оказаться недоступным, что, в свою очередь, при отсутствии специальных средств идентификации таких событий может привести к рассогласованию данных в узлах или блокировке данных(на неопределенное время), находящихся в остальных работоспособных и физически доступных узлах системы.
В Oracle7 подобные коллизии преодолеваются с помощью высоконадежного и прозрачного для приложения механизма двухфазной* фиксации транзакций, который обеспечивается Oracle Distributed Options, причем для реализации распределенных транзакций ни от разработчика, ни от пользователя не требуется никаких дополнительных действий или описаний Любое уже существующее приложение без какой-либо модификации может быть перенесено в распределенную среду, после чего к нему будет автоматически применен механизм двухфазной фиксации. Завершение транзакции во всех узлах происходит одновременно и полностью согласованно; в случае невозможности завершения транзакции в одном из узлов (например при аварийном сбое одного из серверов или повреждении линий связи), во всех остальных выполняется согласованный откат транзакции.
Но основной недостаток систем, построенных на распределенных транзакциях, – высокие требования к надежности и пропускной способности линий связи. Поэтому альтернативой распределенным транзакциям считается репликация(дублирование) данных. В таких системах одна и та же информация хранится в различных узлах. Согласование значений и распространение данных по узлам осуществляется автоматически.
В зависимости от условий, специфицированных разработчиком, репликация может производиться либо сразу после наступления некоторого события (скажем, модификации строки таблицы), либо через заранее заданные интервалы времени (каждую минуту, каждый час и т.д.), либо в определенный момент времени (например, ночью, когда загрузка и стоимость линий связи минимальная).

Если узел, в который выполняется репликация, в данный момент недоступен, информация об этом сохраняется в вызывающем узле, и репликация осуществляется после восстановления связи. Более того, гарантируется сохранение заданного вызывающим узлом порядка ее выполнения.
Основные преимущества такого решения – повышение надежности системы (за счет контролируемого дублирования данных)и увеличение ее производительности из-за существенного снижения сетевого трафика. Причем для уменьшения объема передаваемых данных обычно реплицируется не полный образ таблицы (или ее подмножества), а только информация об изменениях, происшедших с момента последней репликации.

В Oracle7 поддерживаются два основных варианта репликации данных: асинхронная асимметричная репликация (реализуется средствами Oracle Distributed Options) и асинхронная симметричная репликация (реализуется средствами Oracle Advanced Replication Option).
Асимметричная асинхронная репликация, или, как ее еще называют, "моментальная копия таблиц" (Tables Snapshot), подразумевает выделение одного узла системы в качестве владельца основной "мастер-копии" некоторой таблицы (таблиц). При этом автоматически может поддерживаться неограниченное число ее копий в других узлах системы, однако все они доступны только для чтения, а все изменения могут вноситься лишь в первичную "мастер-копию".
Основной недостаток такого варианта репликации очевиден: это невозможность одновременной модификации нескольких экземпляров таблицы в различных узлах. В противном случае могут возникнуть серьезные противоречия при взаимном согласовании вносимых изменений. Поэтому предлагаемые в Oracle? средства асинхронной симметричной репликации данных оснащены мощным механизмом для автоматического обнаружения и разрешения подобных конфликтов Данные в различных узлах могут модифицироваться независимо друг от друга, и все изменения, внесенные в реплицируемую таблицу в любом узле, автоматически распространяются на все остальные копии.
Высоконадежные системы
Высокая надежность является одним из самых общих требований, предъявляемых к любой реально работающей информационной системе. Заметим, что обеспечение повышенной надежности не является исключительной функцией только аппаратных или только программных средств – она достигается ими совместно. И Oracle7 поддерживает практически весь спектр таких решений:
– использование реализуемых на аппаратном или системном уровне зеркальных дисков;
– создание действующей копии базы данных на резервном сервере;
– работа в архитектуре с параллельными серверами (многомашинные кластеры);
– применение в качестве серверов баз данных отказоустойчивых компьютеров, например, Sequoia или Stratus.
Наиболее популярным и эффективным методом, гарантирующим одновременно и высокую надежность, и производительность, является использование многомашинных кластеров (параллельных серверов). В конфигурации параллельного сервера все объединенные в него компьютеры имеют прямой доступ к общему множеству дисков, на котором хранится единая для всех база данных. Параллельные серверы группируются с помощью программного средства Oracle7 Parallel Server Option и специальных аппаратных и системных решений фирмы-производителя компьютера.
Первоначально такая архитектура была воплощена в жизнь компанией Digital. Однако эта модель оказалась настолько удачной (как по простоте наращивания, так и по надежности), что сегодня большинство фирм-производителей (HP, IBM, NCR, Pyramid, Sequent, SUN и Digital и ряд других) реализовали ее на своих аппаратных платформах.

По сравнению с традиционными системами параллельные серверы обеспечивают очень высокую надежность, поскольку в такой конфигурации отсутствует единая точка возникновения ошибки. Если один из серверов выходит из строя из-за неполадок в оборудовании или неточностей в ПО, оставшиеся серверы продолжают выполнение приложения.
Вторым достоинством описываемого решения является масштабируемость, ибо производительность такой системы можно легко повысить за счет добавления в группу (кластер) еще одного или нескольких компьютеров.
Масштабируемая производительность
Любая информационная система, реализованная средствами Oracle7, легко масштабируется, причем это может быть достигнуто несколькими различными способами:
– добавлением к системе новых серверов и переносом на них части приложений;
– заменой существующего сервера на более мощный, причем, так как Oracle7 работает практически на всех существующих платформах, новый сервер может иметь принципиально другую архитектуру и операционную систему;
– переходом на кластерную многомашинную архитектуру или, если она уже используется, простым добавлением в кластер еще одного узла;
– увеличением числа процессоров при использовании компьютеров с SMP- или МРР-архитектурой. Как показывает практика, задача масштабирования рано или поздно встает в любой организации, и это вполне объяснимо. Никто и никогда не покупает аппаратуру про запас, с большими резервами по вычислительной мощности. В то же время объемы хранимых данных и количество реально работающих приложений имеют тенденцию к неуклонному увеличению.
Поэтому лучше всего изначально остановить свой выбор на такой аппаратной конфигурации, которая в дальнейшем будет легко наращиваться и развиваться. В настоящее время этому требованию в наибольшей степени отвечают компьютеры с симметричной многопроцессорной (SMP) или массивно-параллельной (МРР) архитектурой, на которых при увеличении количества процессоров Oracle7 обеспечивает практически линейный рост производительности.
Обработка нескольких запросов, вложенных циклов внутри одного запроса, загрузка и сортировка данных, создание индексов и т.д. – все это выполняется параллельно на различных процессорах. Более того, одновременно реализуется эффективная динамическая балансировка загрузки системных ресурсов (процессоров, оперативной и дисковой памяти).
Oracle7 автоматически производит декомпозицию простых и сложных SQL-запросов на параллельно выполняемые процедуры. Операции по распараллеливанию запросов являются прозрачными для квалифицированных разработчиков, а специальные опции и подсказки SQL допускают контроль над декомпозицией запроса.
(Продолжение следует.)