ORACLE
в гетерогенных сетях
Сегодня большинство организаций имеют в
своем распоряжении обширный парк компьютеров различных типов и фирм. Часть
задач решается на больших компьютерах (mainframe), широкое распространение
получили персональные компьютеры фирм IBM и Apple. Многие организации или
филиалы организаций используют машины среднего класса (VAX, SUN, HP, RISC
6000). Приобретают популярность и ранее непривычные для нашей страны машины,
обеспечиваюшие повышенную надежность работы (Fault Tolerance) и сверхвысокое
быстродействие (многопроцессорные и массивно-параллельные архитектуры). Это например, Cray,
Sequent, N-cube, Stratus, Pyramid. Кроме того, в системах, требующих повышения надежности за счет
резервирования компьютеров используются более дешевые решения, основанные на
использовании кластера компьютеров . Сегодня в нашей стране наиболее часто
кластер реализуют на базе компьютеров VAX, Sequent, RISC 6000, а вскоре к ним
присоединятся HP и SUN. Естественно, что на всех этих компьютерах работают разные
операционные системы. Даже на компьютерах одного типа могут быть различные ОС.
Сегодня уже никого не надо убеждать в том,
что для успешной работы организации необходимо обеспечить совместное
использование информации. Различные задачи, решаемые на ЭВМ должны использовать
данные полученные при работе других задач (возможно решаемых в это же время и
на других ЭВМ). Различные пользователи также должны иметь возможность
одновременно использовать одну и ту же информацию, оперативно узнавать об
изменениях этой информации. Поэтому приходится об'единять компьютеры в сети,
организовывать локальные и глобальные сети. Причем эти сети могут использовать
различные сетевые протоколы (TCP/IP, SPX/IPX, LU 6.2, DecNet, Async и т.д.).
Если у Вас существует такой
"зоопарк" компьютеров, операционных систем, сетевых протоколов, а
часть машин расположена в других городах и странах и Вы хотите реализовать
приложение, работающее в этой гетерогенной сети и использующее данные нескольких
компьютеров, то Вы столкнетесь со множеством проблем. Наиболее типичными
способами частичного решения этих проблем являются следующие:
1. Использование на всех компьютерах программных
средств одной фирмы;
2. Использование на персональных
компьютерах-клиентах популярных персональных СУБД с "дополнительными"
пакетами для этих СУБД, позволяющими им
работать с сервером БД конкретной
фирмы;
3. Использование для разработки клиентских
приложений специальных
высокоуровневых инструментальных
средств разработки приложений, умеющих работать с основными реляционными
серверами БД;
4. Использование в качестве платформы для
клиентских приложений персональных
компьютеров с MS Windows, на которых
работают пакеты, обеспечивающие стандарт обмена данными DDE;
5. Использование на
компьютерах-клиентах и компьютерах-серверах пакетов, поддерживающих
один из стандартов интерфейса клиент-сервер (ODBC, IDAPI, DAL и т.д.);
6. Использование пакетов,
поддерживающих совокупность
стандартов интерфейса клиент - сервер и
позволяющих использовать в макрокомандах и процедурах на языке 4GL различных
прикладных пакетов единый набор команд
для работы с БД, файлами, почтовыми
системами и т.д.;
7. Использование на компьютерах-серверах БД
специальных пакетов-шлюзов;
8. Использование систем распределенных
транзакций (мониторов транзакций).
Однако простейшим и самым надежным
решением всех Ваших проблем будет использование продуктов фирмы Oracle на всех
узлах Вашей сети (хотя Oracle позволяет реализовать и остальные перечисленные
выше частичные решения). Oracle позволяет решить проблемы, связанные с
использованием гетерогенных сетей, обеспечивая полную независимость Ваших
приложений от типа компьютера, операционной системы, сетевого протокола.
Сегодня продукты фирмы Oracle работают
более чем на 80 вычислительных платформах (компьютер + операционная система). В
это число входят все основные компьютеры и архитектуры, упомянутые в этой статье, и многие другие от mainframe до
PC . Например только на РС Oracle работает в операционных системах (MS DOS, MS Windows, SCO Unix, Solaris,
UnixWare, OS/2, Windows NT, Novell NetWare и т.д.). Более того, фирма Oracle
тщательно следит за появлением новых перспективных вычислительных платформ и
новых версий ОС и тут же портирует свои продукты в эту среду. Пример - Windows
NT, Chicago (Windows 95), SMP и MMP архитектуры и т.д. При портации Oracle
старается максимально использовать возможности каждой платформы, поэтому ее
продукты работают хорошо на любой платформе .
С другой стороны Oracle обеспечивает
"одинаковость" своих продуктов на всех платформах. Т. е. везде
средства Oracle c точки зрения пользователя и разработчика приложений работает
одинаково, имеет одни и те же функции и интерфейсы. Это позволяет обеспечить
независимость приложений от вычислительных платформ. Например, приложения и
базы данных, разработанные в MS Windows или в Unix, можно даже без участия
разработчика перенести на любую из 80 вычислительных платформ и они будут там
успешно работать. Теперь при разработке приложений Вы можете не думать о
вычислительных платформах, где будут работать программы, а сосредоточиться на
реализации функциональных возможностей приложений. Блее того, Вам
гарантируется, что при появлении в будущем новых перспективных вычислительных
платформ (а они появляются все чаще и чаще, становятся все быстрее и дешевле)
Ваши приложения будут работать и там. Вы можете в процессе эксплуатации системы
менять менее мощные компьютеры на более мощные. Т. е. Ваши сегоднешние
инвестиции в разработку не пропадут.
Очень важно и то, что разрабатывая
приложения Вы не должны думать о том, в какой архитектуре сети и с какими
сетевыми протоколами оно будет работать. Приложение можно даже разрабатывать на
отдельно стоящей машине, а потом превращать в многопользовательское с
архитектурой клиент-сервер (распределенная обработка). Также легко можно
переходить от использования одной центральной базы данных к работе с
распределенной базой данных (т. е. выносить часть данных в другие узлы сети).
Все эти работы не требуют модификации уже разраобтанных приложений. А вопросы,
связанные с поддержанием целостности и непротиворечивости данных и обеспечением
быстродействия при многопользовательской работе, решаются обычно не
разработчиком, а программным обеспечением Oracle. Пользователь часто даже не
знает в каком узле сети (возможно в каком городе) находятся данные, которые он
использует.
Связь между компьютерами осуществляется с
помощью компоненты Oracle SQL*Net. Она связывает клиентские и серверные машины,
а также серверы распределенной БД между собой. SQL*Net не только обеспечивает и
контролирует связь, но и выполняет перекодировку данных (поскольку в
гетерогенной сети различные компьютеры используют различные кодовые таблицы). В
состав SQL*Net входят драйверы, обеспечивающие поддержку используемых сетевых протоколов. Например,
если Ваш компьютер - сервер связывается с частью клиентов по протоколу TCP/IP,
с частью по протоколу SPX/IPX, а с VAX - сервером по протоколу DecNet, Вам
достаточно включить в состав SQL*Net драйверы этих протоколов. Если же позднее
один из Ваших клиентов, использовавших протокол TCP/IP, переехал в другой
город, то Вам достаточно заменить у него драйвер протокола TCP/IP на драйвер
Async и он продолжит работу с сервером, используя модемную связь.
Конечно, для того, чтобы реализовать
систему на гетерогенной сети, Вам придется установить программное обеспечение
ядра Oracle на всех компьютерах - серверах, run-time программное обеспечение
Oracle на компьютерах-клиентах и программное обеспечение SQL*Net на всех этих
компьютерах. Однако Oracle позволяет использовать в качестве узлов
распределенной БД не только Oracle но и СУБД других фирм. Это реализуется с
помощью шлюзов (Oracle Transparent Gateway - шлюз для данных и ORACLE
Procedural Gateway - процедурный шлюз). При этом одним из узлов распределенной
БД может быть СУБД DB2, SQL/DS, RMS и т.д. Oracle не работает на машинах AS
400, но Transparent Gateway к СУБД OS/400 имеет.
Сегодня Oracle имеет шлюзы для данных к
следующим СУБД: DB2, SQL/DS, TurboIMAGE, Adabas, IDMS, SQL/400, VSAM, Rdb, RMS,
IMS, Teradata, DRDA (DB2 на MVS, SQL/DS на VM, SQL/400 и DataManager на OS/2),
XDM/RD, Nonstop SQL, SESAM, IDMSX и
разрабатывает шлюзы для данных к Ingres, Informix, DB2 на OS/2 и RISC 6000,
EDA/SQL(VSAM, ISAM, ADABAS, TOTAL, Teradata, IMS, CA-IDMS/DB, System 2000,
FOCUS, Infoman, QSAM, CA-Datacom, Supra, SAP, Model 204).
Шлюз для данных устанавливается на той же
машине, что и "чужая" СУБД (или на дополнительной машине - для DRDA и
Teradata), и для Oracle и его продуктов связка шлюз +"чужая" СУБД
выглядит как Oracle - сервер. Шлюз принимает SQL запросы от продуктов и
серверов Oracle и преобразует их в команды "чужой" СУБД.
Преобразуются и данные. При выборке данных из "чужой" СУБД шлюз
преобразует их в структуры Oracle.
Процедурный шлюз устанавливается на
дополнительной машине и позволяет использовать в качестве узла распределенной
БД СУБД и файловые системы, работающие в среде мониторов транзакций CICS,
IMS/TM, CA-IDMS/DC. Это позволяет Вам
работать с данными IMS, VSAM, ADABAS, CA_IDMS/DB, DB2, Model 204. Причем работа
ведется с использованием механизма RPC - процедур (Remote Procedural Control),
что обеспечивает более быстрый доступ к данным, чем Transparent Gateway.
Кроме упомянутых шлюзов (процедурных и по
данным) к конкретным СУБД и файловым системам ORACLE имеет инструментальные
средства Open Gateway Toolkit. Эти средства позволяют строить процедурные шлюзы
и шлюзы для данных для любых источников данных (файлы, СУБД, банкоматы,
устройства для работы со штрих-кодом и т. д.). Однако построение новых шлюзов
требует написания дополнительных программ на языке 3GL.
Таким образом использование продуктов
Oracle скрывает от Вас всю сложность гетерогенной сети, архитектуры
клиент-сервер, распределенной БД и распределенной обработки. Это позволяет Вам
реально и надежно реализовать разделение информации в Ваших задачах.