|
Программирование >> Sql: полное руководство
является внедрение в SQL новых типов данных (в частности, мультимедийных) и объектно-ориентированных возможностей. Третий важный сегмент - это мобильные базы данных для переносных ПК, взаимодействующие с централизованными базами данных как в оперативном, так и в автономном режиме. Несмотря на сегментирование рынка, SQL по-прежнему остается общим знаменателем . И в наступившем новом тысячелетии позиции SQL так же сильны, как и ранее. Стандарты SQL Одним из наиболее важных шагов на пути к признанию SQL на рынке стало появление стандартов этого языка. Обычно при упоминании стандарта SQL имеют в виду официальный стандарт, утвержденный Американским национальным институтом стандартов (American National Standards Institute - ANSI) и Международной организацией по стандартизации (International Standards Organization - ISO). Однако существуют и другие важные стандарты, включая стандарт де-факто, каковым является SQL, реализованный в СУБД DB2 компании IBM. Стандарты ANSI/ISO Работа над официальным стандартом SQL началась в -1982 году, когда ANSI поставил перед своим комитетом ХЗН2 задачу по созданию стандарта языка управления реляционными базами данных. Вначале в комитете обсуждались достоинства различных предложенных языков. Однако, поскольку к тому времени SQL уже стал фактическим стандартом, комитет ХЗН2 остановил свой выбор на нем и занялся стандартизацией SQL. Разработанный в результате стандарт в большой степени был основан на диалекте SQL системы DB2, хотя и содержал в себе ряд существенных отличий от этого диалекта. После нескольких доработок, в 1986 году стандарт был официально утвержден как стандарт ANSI номер Х3.135, а в 1987 году - в качестве стандарта ISO. Затем стандарт ANSI/ISO был принят правительством США как федеральный стандарт CLUA в области обработки информации (FIPS - Federal Information Processing Standard). Этот стандарт, незначительно пересмотренный в 1989 году, обычно называют стандартом SQL-89 или SQL1. Многие из членов комитетов по стандартизации ANSI и ISO представляли фирмы-поставщики различных СУБД, в каждой из которых был реализован собственный диалект SQL. Как и диалекты человеческого языка, диалекты SQL были в основном похожи друг на друга, однако несовместимы в деталях. Во многих случаях комитет просто обошел существующие различия и не стандартизировал некоторые части языка, определив, что они реализуются по усмотрению разработчика. Этот подход позволил объявить большое число реализаций SQL совместимыми со стандартом, однако сделал сам стандарт относительно слабым. Чтобы заполнить эти пробелы, комитет ANSI продолжил свою работу и создал проект нового, более жесткого стандарта SQL2. В отличие от стандарта 1989 года, проект SQL2 предусматривал возможности, выходящие за рамки таковых, уже реализованных в реальных коммерческих продуктах. А для следующего за ним стандарта SQL3 были предложены еще более глубокие изменения. Кроме того, была предпринята попытка официально стандартизировать те части языка, на которые давно существовали собственные стандарты в различных СУБД. В результате предложенные стандарты SQL2 и SQL3 оказались более противоречивыми, чем исходный стандарт. Стандарт SQL2 прошел процесс утверждения в ANSI и был окончательно принят в октябре 1992 года. В то время как первый стандарт 1986 года занимает не более ста страниц, стандарт SQL2 (официально называемый SQL-92) содержит около шестисот. Существенным нововведением стало официальное закрепление трех уровней совместимости со стандартом SQL2. На самом нижнем, начальном уровне (Entry Level) от СУБД требуются лишь минимальные дополнительные возможности в сравнении со стандартом SQL-89. Промежуточный уровень (Intermediate Level) представляет собой значительный шаг вперед по отношению к стандарту SQL-89, хотя и не затрагивает наиболее сложных и системно-зависимых аспектов языка SQL. Третий, самый высокий уровень (Full Level) требует от СУБД реализации всех возможностей стандарта SQL2. В самом стандарте определение каждой возможности сопровождается описанием того, как она должна быть реализована на каждом из трех уровней. Вопреки стандарту SQL2, во всех существующих на сегодняшний день коммерческих СУБД поддерживаются собственные диалекты SQL, и ни один из них не реализует всех возможностей SQL2. Более того, поставщики СУБД включают в свои продукты новые возможности и расширяют собственные диалекты SQL, чем еще больше отдаляют их от стандарта. Однако ядро SQL стандартизировано довольно жестко. Там, где это можно было сделать, не ущемляя интересы клиентов, поставщики СУБД привели свои продукты в соответствие со стандартом SQL-89, то же самое постепенно произойдет и с SQL2. В то же время продолжаются работы над дальнейшей стандартизацией языка. Тут выделилось несколько направлений. Некоторые из них, например хранимые процедуры, уже реализованы во многих СУБД, поэтому здесь придется искать разумные компромиссы, как это часто происходило при разработке стандарта SQL2. Другие, в частности предлагаемые объектные расширения, еще не нашли широкого применения, хотя и вызывают множество дискуссий. В целом, поскольку большинство СУБД далеки от полной реализации возможностей SQL2 и предлагают множество собственных расширений, работа над стандартом SQL3 не оказывает существенного коммерческого влияния. Реальный стандарт языка SQL, конечно же, определяют диалекты SQL, реализованные в ведущих СУБД. Программисты и пользователи в основном сталкиваются с теми частями языка, которые присутствуют во всех СУБД и реализованы примерно одинаково. Разработчики СУБД продолжают изобретать новые возможности и внедрять их в свои продукты, но большинству из них лишь предстоит получить коммерческое признание. Другие стандарты SQL Хотя стандарт ANSI/ISO широко распространен, он не является единственным стандартом SQL. Европейская фуппа поставщиков X/OPEN также приняла SQL в качестве одного из своих стандартов для среды переносимых приложений на основе UNIX. Стандарты фуппы X/OPEN ифают важную роль на европейском компьютерном рынке, где основной проблемой является переносимость приложений между компьютерными системами различных производителей. К сожалению, стандарт X/OPEN отличается от стандарта ANSI/ISO. Кроме того, компания IBM включила SQL в свою спецификацию Systems Application Architecture (архитектура прикладных систем) и пообещала, что все ее продукты, очевидно, будут переведены на этот диалект SQL. Хотя данная спецификация и не оправдала надежд на унификацию линии продуктов компании IBM, движение в сторону унификации SQL в IBM продолжается. Система DB2 остается основной СУБД компании IBM для мэйнфреймов, однако компания выпустила реализацию DB2 и для OS/2, собственной операционной системы для персональных компьютеров, и для линии серверов и рабочих станций RS/6000, работающих под управлением UNIX. К 1997 году IBM вынесла DB2 за рамки собственной архитектуры, выпустив СУБД DB2 Universal Database для платформ своих конкурентов - Sun Microsystems, Hewlett-Packard и Silicon Graphics, a также для Windows NT. Таким образом, учитывая историческое лидерство IBM в области технологии реляционных баз данных, диалект DB2 языка SQL является мощным стандартом де-факто. ODBC и консорциум SQL Access Group в технологии баз данных существует важная область, которую не затрагивают официальные стандарты. Это способность к взаимодействию с другими базами данных - методы, с помощью которых различные базы данных могут обмениваться информацией (как правило, по сети). В 1989 году несколько поставщиков сформировали консорциум SQL Access Group специально для рещения этой проблемы. В 1991 году консорциум опубликовал спецификацию RDA (Remote Database Access - удаленный доступ к базам данных). К сожалению, эта спецификация была тесно связана с протоколами OSI, которые еще не смогли завоевать широкого признания, поэтому она оказывала на рынок незначительное влияние. Прозрачность взаимодействия между различными базами данных оставалась иллюзорной мечтой. Тем не менее, второй стандарт от SQL Access Group получил на рынке больший вес. В результате настойчивых требований компании Microsoft консорциум SQL Access Group обратил свое внимание на интерфейс вызовов функций. Полученная спецификация CLI (Call Level Interface), основанная на разработках компании Microsoft, увидела свет в 1992 году. В этом же году был опубликован собственный протокол ODBC (Open Database Connectivity - открытый доступ к базам данных) компании Microsoft, основанный на спецификации CLI. Благодаря рыночному влиянию Microsoft и благословению, полученному открытым стандартом от SQL Access Group, ODBC оказался стандартом де-факто для интерфейсов доступа к базам данных на персональных компьютерах. Весной 1993 года компании Apple и Microsoft объя-виЛи о соглашении относительно поддержки ODBC в MacOS и Windows, что закрепило за этим протоколом статус стандарта в обеих популярных средах с графическим пользовательским интерфейсом. Вскоре появилась реализация ODBC для платформы UNIX. Сегодня ODBC является стандартом межплатформенного доступа к базам данных, поддерживаемым всеми ведущими СУБД. И хотя интерес компании Microsoft сместился в сторону интерфейсов более высокого уровня (OLE/DB и ADO), в своей основе они все равно базируются на ODBC. Миф о переносимости Появление стандарта SQL вызвало довольно много восторженных заявлений о переносимости SQL и использующих его приложений. Для иллюстрации того, как любое приложение, используя SQL, может работать с любой СУБД, часто приводят диафаммы, подобные изображенной на рис. 3.1. На самом деле пробелы в стандарте SQL-89 и различия между существующими диалектами SQL достаточно значительны, и при переводе приложения под другую СУБД его всегда приходится модифицировать.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |