Чтобы решать проблемы управления данными 21-го столетия, надо уметь использовать структурированные и неструктурированные данные Web-сервисов, BI-систем и других источников. IBM, Microsoft и Oracle продолжат конкурировать, предлагая базы данных, поддерживающие самые разные типы данных, в том числе XML-документы. В этой статье мы проанализируем, что предлагают три ведущих поставщика СУБД.

Какую бы форму не приняло ПО в следующем десятилетии, базы данных останутся основным инструментом управления данными. За последние 10 лет число поставщиков БД на основе SQL сократилось, тем не менее конкуренция между IBM, Oracle и Microsoft значительно обострилась. В самых последних версиях ПО упомянутых трех грандов возможности SQL совмещаются с многомерной и ориентированной на документы (XML) обработкой данных. Но XML - лишь одна из областей конкуренции гигантов ПО баз данных. Продукты СУБД всех этих компаний поддерживают параллельную обработку запросов, OLAP и позволяют тесную интеграцию с ПО обмена сообщениями, а также Web-сервисами. Различия касаются методов программирования подключаемых модулей серверов баз данных, запросов многомерных наборов данных, поддержки очередей сообщений, управления Web-сервисами и обработки звукового, видео и других мультимедийных типов данных. Все конкуренты стремятся опередить друг друга, дополняя свои СУБД-платформы широким спектром ПО - от приложений для вертикальных рынков до инструментальных средств разработки.

Платформы разработки

Прежде всего, различия между поставщиками СУБД определяются ориентацией на ту или иную платформу. Хотя IBM, Microsoft и Oracle и совместно работают над важным делом разработки W3C-спецификаций, их пути расходятся как только речь заходит о платформах разработки и развертывания. SQL, XML и протокол SOAP нейтральны по отношению к конкретным поставщикам, но программная инфраструктура, клиентские API-интерфейсы и инструменты разработки четко делятся на два "сорта" - ориентированные на Java и на .Net. IBM и Oracle считают, что разработка Web-сервисов неразрывно связана со средой J2EE, и активно занимаются Java, Unix и Linux, а Microsoft видит путь дальнейшего развития Web-сервисов сквозь очки .Net.

Аналогичное разбиение на лагери мы видим и в среде разработчиков. Часть разработчиков запросах к базе данных, обработке XML-документов и создании Web-сервисов применяют разработанную Microsoft среду .Net, платформу Windows, Active Server Pages, Visual Basic и C#. Другие ориентируются на обработку XML и SQL в контексте Java 2 Enterprise Edition (J2EE), Java Server Pages и такой среды разработки, как Oracle JDeveloper. Есть третий подход, исповедуемый приверженцами открытых исходных текстов; в нем применяются такие технологии, как Linux и Apache Struts Web Application Framework.

IBM DB2 Universal Database предлагается для множества платформ, а инструменты разработки ориентированны на программистов самых разных лагерей - Java, Linux, .Net и Windows. Oracle традиционно предлагает свою СУБД для многих платформ. Как и IBM, корпорация предлагает ПО для разработчиков на Java, Linux и .Net. В целом, большинство экспертов склоняется к мысли, что в будущем важно будет обеспечить решения по подключению к БД для разработчиков как на базе Linux, так и .Net. И IBM и Oracle движутся в этом направлении. Oracle выпустила провайдер данных .Net (ODP.Net) еще в декабре 2002 года. IBM выпустила свой интерфейс для .Net для DB2 в середине 2003 года. Microsoft естественно пытается ставить палки в колеса Java и Linux. Хотя Microsoft и предлагает JDBC-драйвер для разработки клиента SQL Server, но предлагаемые компанией инструменты разработки ориентированы на Windows и .Net. Кроме того, комитет по стандартам SQL расформировал проектную группу SQL/CLI. Microsoft заявила, что не будет расширять функциональность ODBC или добавлять новые классы в MFC ODBC; компания также исключила Remote Data Object из Visual Basic. Потеря поддержки ODBC создает проблемы для разработчиков, потому что в настоящее время эта технология обеспечивает связь с большим количеством типов данных, чем OLE DB, JBDC или .Net.

Поддержка XML

DB2, Oracle и SQL Server - все они поддерживают управление и поиск в наборах XML-документов. Чтобы использовать СУБД с поддержкой XML, надо определить структуру документов с помощью DTD (Document Type Description) или схемы, воспользоваться Extensible Stylesheet Language Transformations и таблицами стилей для преобразования документов и поиска информацию в документах посредством XPath и XQuery. Помимо "понимания" структуры документа в СУБД с поддержкой XML IBM, Microsoft и Oracle предоставляют XML-анализаторы, которые проверяют правильность документов, созданных в процессе обработки запросов к базе.

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

Наборами XML-документов часто становятся наборы файлов - после того, как кто-то решит, что их надо разместить в базе данных. Поэтому полезно, чтобы СУБД с поддержкой XML "умела" использовать индексы СУБД при запросе как внутренних, так и внешних документов БД. (Oracle и DB2 поддерживают такую функцию.) Кроме того, важна поддержка спецификации распределенного создания и управления версиями Web-документов (World Wide Web Distributed Authoring and Versioning), а также метафоры папки для управления документами базы данных на основе SQL.

В целом, обработка документов и API доступа к SQL-данным не зависит от выбора поставщика. При работе с SQL-базой, поддерживающей XML, разработчики используют независимые от конкретных поставщиков API-интерфейсы для сохранения, поиска и обработки контента документов. Речь идет о JDBC или ODBC. Во всех рассматриваемых СУБД для обработки содержимого документа разработчики вправе выбирать между моделями документа DOM консорциума W3C, Java Community Process (JDOM), простым API для XML или других.

Однако, поддержка XML, предлагаемая IBM, Microsoft и Oracle разнится в деталях: все три поставщика поддерживают XML Schema и XQuery, но по-разному. Кроме того, все три вендора по-разному решили задачу расширения диалектов SQL для поддержки XML. С этим связана одна проблема. Дело в том, что с недавнего времени ответственность за работу группы SQLX над разработкой стандартов взаимодействия SQL и XML отвечает Международный комитет по стандартам информационных технологий (International Committee for Information Technology Standards). В проекте SQL/XML участвуют эксперты, ответственные за стандарты SQL - Международной организации по стандартизации (ISO) и Международной электротехнической комиссии (International Electrotechnical Commission). И следующий вариант стандарта SQL, включающий SQL/XML, скорее всего не будет совпадать с решением ни одной компании.

Обработка транзакций

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

Java-транзакции. Для транзакций, предусматривающих распределенную двухэтапную фиксацию в СУБД Oracle или DB2, разработчики Java могут создавать EJB-компоненты. Последние выполняются в J2EE-контейнерах, которые включают OTS-сервисы (Object Transaction Services), соответствующие спецификации группы OMG (Object Management Group). Разработчики, использующие Windows и .Net и нуждающиеся в поддержке распределенных транзакций могут использовать сервис MTS (Microsoft Transaction Service). В качестве альтернативы протоколу двухэтапной фиксации разработчики могут создавать ПО с поддержкой транзакционного обмена сообщениями. Java-разработчики могут включать управляемые сообщением Bean-компоненты в свои приложения и использовать очереди JMS и Oracle Advanced Queues или IBM WebSphere MQ.

Вместо двухэтапной фиксации транзакций созданные IBM компоненты бизнес-процессов BPBeans (Business Process Beans) поддерживают модель компенсирующих транзакций. BPBeans позволяют разработчикам Java реализовать сложные механизмы компенсации в IBM WebSphere Enterprise Edition.

Транзакции в .Net. Microsoft конечно же идет своим "особым" путем. Поскольку объект подключения в .Net поддерживает одно подключение к БД, разработчикам приходится искать другие пути решения задачи распределенной обработки транзакций, что вызывает определенные неудобства.

Инкапсуляция бизнес-правил

Обмен SOAP-сообщениями, EJB-компоненты, подключаемые модули баз данных и хранимые SQL-процедуры - все это варианты инкапсуляции бизнес-правил. EJB и SOAP позволяют размещать бизнес-правила на серверах промежуточного уровня. Хранимые процедуры и подключаемые Java-модули позволяют базе данных выполнять функции контейнера бизнес-логики. Развитие технологии серверов приложений и серверов базы данных продолжается, и теперь доступ к EJB-компоненту, хранимой SQL-процедуре, COM- или CORBA-объекту можно организовать как Web-службу. В этой части разница в СУБД практически незаметна.

Интегрированная бизнес-аналитика

XML все чаще применяется в BI-решениях и продуктах для анализа по методу "data mining", причем конкуренция в этой области между IBM, Microsoft и Oracle остается весьма острой. Объектно-реляционная технология позволила IBM и Oracle встроить бизнес-аналитику в СУБД. При этом XML играет роль сервисов метаданных и обмена моделями. PMML (Predictive Model Markup Language) - это XML-словарь для определения и обмена статистическими моделями между поддерживающими PMML приложениями. СУБД IBM, Microsoft, Oracle поддерживают PMML примерно на одинаковом уровне и в целом, здесь трудно выделить лидера.

Будущее доступа к данным

В течение следующего десятилетия доступ к данным будет развиваться с оглядкой на конкретные операционные системы, языки программирования и СУБД. Но какие API или объекты станут предпочтительной технологией доступа к данным?
Для работы с DB2 и Oracle многие клиенты используют Java, JDBC, SQLJ и инструментальные средства Oracle JDeveloper или Borland JBuilder. Для доступа к базам данных Linux и Unix разработчики на C и C++ будут использовать "родные" API-интерфейсы или ODBC. Microsoft подталкивает своих разработчиков к OLE DB и ADO.Net, вместе с тем компания предлагает JDBC-драйвер для SQL Server и провайдер ODBC.Net.

Для программирования подключаемых модулей баз данных можно использовать Java, JDBC или SQLJ с DB2 и Oracle, или C/C++ с DB2, Oracle и SQL Server. Воспользоваться подключаемыми модулями баз данных, такими как DB2 Extender, означает свернуть с пути стандартных API-интерфейсов. Например, Java XQuery API представляет собой интерфейс прикладного программирования выборки для пользователей Oracle, запрашивающих документы средствами XQuery.