oracle на чем написан
История СУБД Oracle — первой коммерчески успешной реляционной СУБД
До середины 70-х годов информация в базах данных распределялась по старинному иерархическому, или «древовидному», принципу, который до сих пор используется в настольных операционных системах.
Первые прототипы реляционных СУБД существовали уже в 70-е годы ХХ века. Однако мало кто верил в возможность добиться эффективной реализации таких систем. Тем не менее, к концу 1980-х годов реляционные системы заняли на мировом рынке СУБД доминирующее положение.
В связи с этим многие компании стали позиционировать свои СУБД как «реляционные» в рекламных целях. Но далеко не всегда они имели для этого достаточно оснований. Поэтому автор реляционной модели данных Эдгар Кодд в 1985 году опубликовал свои знаменитые «12 правил Кодда», которым должна удовлетворять каждая РСУБД.
16 июня 1977 года Эдом Оутсом, Бобом Майнером и Ларри Эллисоном в Калифорнии (США) была основана компания Software Development Laboratories, вскоре переименованная в Relational Software Inc. Молодые программисты начали разработку системы управления базами данных (СУБД), построенной на принципах реляционной алгебры.
Oracle 2
Первая коммерческая версия СУБД Oracle получила название Oracle 2. Такой ход должен был дать заказчикам понять, что система надежна и даже прошла проверку временем.
В конце 70-х главным конкурентным преимуществом СУБД Oracle была высокая скорость обработки огромных массивов информации, которую отметили все эксперты. В отличие от System R, для работы которой был необходим мощный суперкомпьютер — мейнфрейм, Oracle 2 справлялась с обработкой информации на более «миниатюрных» машинах. Эти и другие преимущества привели к тому, что в начале 80-х годов СУБД начала стремительно распространяться.
У Эллисона с коллегами возникли сложности при реализации совместимости с СУБД IBM System R. Нежелание IBM раскрывать исходные коды стало ключевой проблемой. В результате совместимости между двумя системами так и не удалось достичь.
Ларри Эллисон — основатель Oracle
Oracle стала исторически первой и одной из наиболее развитых реализаций архитектуры клиент/сервер. Переносимость и масштабируемость всегда имели высокий приоритет у разработчиков Oracle. Это сыграло ключевую роль в достижении успеха компании на рынке СУБД.
Oracle 2 работала на мини-компьютере PDP-11 фирмы Digital Equipment в операционной среде RSX-11. Большая часть Oracle была написана на ассемблере PDP-11, а отдельные компоненты — на новом для того времени языке C. Уже в те дни система была портируемой и работала в других операционных средах PDP-11: IAS, RSTS и UNIX. Тогда же было принято решение о переносе Oracle в новую ОС VMS. Благодаря этому СУБД Oracle заняла обширную нишу корпоративных информационных систем на быстро растущем рынке VAX.
Еще одной важной особенностью системы стала полная реализация возможностей нового языка запросов SQL — подзапросы, операция соединения и так далее. Благодаря этому многократно выросла производительность труда SQL-программистов.
Стандартный SQL (IBM) был расширен операцией CONNECT BY, позволяющим обрабатывать древовидные структуры, что становится уникальным для SQL-систем.
Конечно, над СУБД нужно было еще долго работать. В Oracle 2, например, не поддерживались транзакции: если в процессе обновления базы данных происходил сбой, предыдущее состояние БД восстановить было практически невозможно. Поэтому пользователи были вынуждены часто делать резервные копии базы данных во избежание потерь информации.
29 октября 1982 года компания переименована в Oracle Systems.
Oracle 3 и 4
В 1983 году на рынок вышла Oracle 3. Она была полностью переписана на С. Это во многом помогло решить проблему переносимости Oracle на широкий спектр платформ – их тогда было не менее 20. Кроме того, было реализовано атомарное выполнение транзакций: операция либо выполнялась полностью, либо не выполнялась вообще, соответственно, транзакция либо завершалась успешно по всем изменениям базы данных, либо откатывала все сделанные ею изменения.
С выходом Oracle 4 система была портирована на большие компьютеры c ОС VM и MVS, а также на персональный компьютер с 640 килобайтами оперативной памяти.
Также была реализована модель контроля доступа к базе данных, которая гарантировала, что результат запроса не противоречит состоянию базы данных на начало запроса. Благодаря этому было устранено известное противоречие между процессами чтения и записи.
Oracle 5
В 1985 году Oracle выпустила на рынок версию 5.0, в которой была впервые введена архитектура клиент/сервер. Кроме того, компания выпустила SQL*Net – сетевой продукт, обеспечивающий прозрачное соединение между клиентом и базой данных или между двумя базами данных.
В версии 5.1 были впервые реализованы распределенные запросы — это давало возможность обращаться к данным, физически размещенным в разных узлах. Несколько взаимодействующих серверов могли создать у пользователя многих физически разнесенных баз данных иллюзию единой логической базы данных.
Oracle 6
Разработчики версии 6 стремились создать инструмент построения крупномасштабных информационных систем, ориентированных на обработку транзакций в режиме реального времени.
Были введены генераторы последовательностей и блокировка на уровне записи. В это же время Oracle стал первым многопользовательским сетевым сервером баз данных для OS/2, Xenix, Banyan Vines и Macintosh.
В версии 6 были заложены принципиально новые возможности, в полном объеме реализованные позже:
Кризис
В 1990 году компания столкнулась с серьезными проблемами, сообщив о значительных убытках. Эллисону пришлось уволить более 400 сотрудников для сокращения издержек. Он также распустил практически весь топ-менеджмент, в числе которого были близкие Ларри люди, в течение 10 лет вместе с ним приумножавшие славу и благосостояние Oracle. Ларри оставил в компании Боба Майнера, которого всегда считал одаренным программистом и просто хорошим добрым человеком.
Столь жесткие методы Ларри объяснил так:
Кроме того, из-за совершенных ошибок в регистрации продаж и учёта ещё не прошедших сделок в бухгалтерских документах у Oracle возникли сложности с регуляторами на местном рынке.
В результате Oracle оказалась близка к банкротству, а такие конкуренты, как Informix и Sybase, начали медленно увеличивать свою долю на рынке.
На тот момент конкуренция между крупными игроками рынка достигла своего апогея — 90-ые могли запомниться многим, как период рекламной войны Oracle и Informix. Так, последняя выкупила билборд рядом с офисом Oracle и разместила на нем надпись «Осторожно, динозавры переходят дорогу», намекая на устаревшие технологии Oracle.
Однако Ларри все-таки нашел решение: он сформировал новый управленческий штат, который был «натаскан» на громадные объемы производства и жесткую конкуренцию. В результате через определенное время Oracle снова вернулась на прежние высоты.
А в 1992 году релиз Oracle 7 окончательно изменил ситуацию в лучшую сторону.
Oracle 7
Помимо общего повышения эффективности ввода/вывода, использования центрального процессора и работы с памятью, версия СУБД Oracle 7 обладала рядом инновационных архитектурных решений:
В версии 7 были полностью реализованы декларативные ограничения ссылочной целостности в соответствии со стандартами ANSI/ISO. В рамках этих ограничений (первичные и внешние ключи) пользователь мог специфицировать каскадное удаление связанных с некоторым первичным ключом записей. Процедуры PL/SQL могли описываться на уровне схемы базы данных (хранимые процедуры) и вызываться любым приложением, другими процедурами и триггерами.
Другим важным нововведением стали триггеры базы данных.
Триггер представляет собой пару (событие+действие), где событие — это удаление/занесение/обновление записей таблицы, а действие (тело триггера) — процедура PL/SQL, выполняемая при совершении события.
Триггеры могут определяться на уровне операций (DELETE, INSERT, UPDATE) или на уровне отдельных строк (FOR-EACH-ROW-триггеры, которые, к тому же, могут работать со старыми и новыми значениями строк). С помощью триггеров можно реализовать сложные правила контроля целостности, прав доступа, вывода значений и прочее.
Роль — это совокупность прав доступа к объектам базы данных (INSERT, UPDATE, SELECT и другие) и системных прав (CREATE TABLE, ALTER SYSTEM и так далее). Определив роль, администратор базы данных может с помощью одной команды дать пользователю привилегии для работы с некоторым приложением.
В 1994 году компания выпустила версию Oracle 7.1, в том числе и для IBM PC. Ранее Oracle не рассматривала эту платформу как серверную, а ограничивалась лишь созданием для нее клиентских частей своей СУБД.
В Oracle 7.1 появилась опция параллельных запросов (parallel query option), а также возможность определения количества серверных процессов, необходимых для выполнения SQL-запроса, на основе результатов работы оптимизатора запросов. В данной версии была достигнута полная интеграция PL/SQL и SQL, введен встроенный пакет DBMS_SQL и асинхронная симметричная репликация данных вместе с асинхронным вызовом удаленных процедур.
Oracle 8 и 9
В 1997 году вышла версия 8, в которой появились объектная модель, новые свойства и средства администрирования. Oracle 8.0 была более надежной по сравнению с предыдущей версией, обладала большей устойчивостью к высоким нагрузкам. Кроме того, в ней была реализована возможность партиционирования таблиц.
В 1998 году компания анонсировала Oracle 8i Release 1 (8.1.5). Буква «i» означает, что версия обладает поддержкой Интернета.
Начиная с Oracle 8.1.5 в последующих версиях появляется встроенная в СУБД виртуальная машина Java (JVM). Далее вышла версия Oracle 8i Release 2 (8.1.6), которая поддерживала XML, а также содержала определенные новшества, связанные с созданием хранилищ данных.
В 2001 году появилась версия Oracle 9i Release 1 (9.0.1), в которой было сделано более 400 изменений по сравнению с предыдущей. Среди них – «интеллектуализация» автоматизированных систем и расширение возможностей для аналитики.
В новой версии появились средства обработки XML-документов, технология Oracle RAC (Real Application Clusters) – как замена Oracle Parallel Server (OPS), механизм создания репликаций Oracle Streams, скроллируемый курсор для программ на Си и C++, встроенная в СУБД поддержка OLAP и Data Mining, переименование столбцов и ограничений целостности, поддержка Java 1.3.1 и Unicode 3.1.
Лучшие финансовые годы
Примерное разделение рынка СУБД для платформы Unix.
Примерное разделение рынка СУБД для платформы Windows NT.
В 2004 году появилась версия Oracle 10g Release 1 (10.1.0). Буква «g» в названии обозначает «Grid» («сеть») и символизирует поддержку Grid-вычислений.
Этот год стал одним из самых успешных в истории компании – норма прибыли составила 38% (самый высокий показатель за все время существования корпорации), годовой оборот возрос до 7% ($10,2 миллиарда), доходы от продаж ПО поднялись на 12% ($8,1 миллиарда), чистая прибыль выросла на 16% ($2,7 миллиарда).
Офис Oracle в России и СНГ вошел в тройку лучших представительств Oracle по темпам роста в регионе ЕМЕА (Европа, Ближний Восток и Африка), а также пятый год подряд — в пятерку лучших среди 145 представительств Oracle в мире.
До наших дней
В 2005-м была анонсирована Oracle 10g Release 2 (10.2.0.1). А в 2007-м – Oracle 11g Release 1 (11.1.0.6).
Состояние рынка СУБД на 2007 год
В 2009 году компания выпустила Oracle 11g Release 2 (11.2.0.1). В версию была введена новая для Oracle возможность «горячего» (без остановки сервера) внесения изменений в метаданные и бизнес-логику на PL/SQL – это стало возможным благодаря механизму одновременной поддержки нескольких версий схемы и логики под названием editions.
2013 год — вышла версия 12c (12.1.0.1), основное новшество — поддержка подключаемых баз данных (pluggable database), обеспечивающая свойства мультиарендности и живой миграции баз данных, суффикс «c» в названии обозначает cloud (облако).
24 апреля 2015 года стало известно о планах Oracle перевести почти все свои продукты в облако. Таким образом, американская компания решила изменить свою бизнес-модель, чтобы соответствовать изменениям на рынке.
В сентябре 2016 года Ларри Эллисон объявил о создании в Oracle дата-центров для работы с IaaS второго поколения и заявил, что лидерство компании Amazon на облачном рынке подходит к концу. Цель компании – предложить клиентам Oracle пакет услуг, где будут совмещены IaaS, PaaS и SaaS («ПО как услуга»).
НПВП ФОРС (+7 095) 973-40-67
История ORACLE
В версии 4 была существенно повышена надежность Oracle, выполнены переносы системы на большие компьютеры в ОС VM и MVS, а также на персональный компьютер с 640 Кбайтами оперативной памяти. Была реализована модель контроля доступа к базе данных, которая гарантировала, что результат запроса не противоречит состоянию базы данных на начало запроса. Благодаря чему было устранено известное противоречие между процессами чтения и записи.
Разработчики версии 6 стремились создать инструмент построения крупномасштабных информационных систем, ориентированных на обработку транзакций в режиме реального времени. Были введены генераторы последовательностей и блокировка на уровне записи, а это, вместе с моделью «непротиворечивости чтения», означало, что процессы чтения и записи больше не блокируют друг друга (в состояние ожидания переходит лишь процесс записи при попытке обновить строку таблицы, которая уже контролируется другим процессом записи).
В это же время ORACLE стал первым многопользовательским сетевым сервером баз данных для OS/2, Xenix, Banyan Vines и Macintosh.
В версии 6 были заложены принципиально новые возможности, в полном объеме реализованные позже. Во-первых, SQL-утверждения могли использоваться совместно с утверждениями процедурного языка PL/SQL и посылаться для исполнения на сервер как анонимные процедуры. Во-вторых, тот же язык PL/SQL был введен в язык четвертого поколения SQL*Forms в качестве средства программирования приложений (в следующей версии 7 расширенный язык PL/SQL стал средством описания процедур и триггеров базы данных). В-третьих, в описание схемы базы данных на синтаксическом уровне были введены (в соответствии с ANSI/ISO стандартом) декларативные определения ограничений референциальной целостности.
Помимо общего повышения эффективности ввода/вывода, использования центрального процессора и работы с памятью, версия 7 обладала рядом инновационных архитектурных решений: разделяемый SQL-кэш на сервере (сервер распознает посылаемые клиентами SQL-утверждения, которые ранее уже были проанализированы и скомпилированы и в данный момент находятся в кэш-памяти, за счет чего экономится время анализа, оптимизации и трансляции, а также память, требуемая для хранения SQL-утверждения) и разделяемый пул процессов сервера вместо отдельного процесса для каждого клиента, что позволяет сэкономить значительный объем памяти.
В области администрирования баз данных также был введен ряд новшеств: зеркальный журнал транзакций, динамическое создание журналов данных, команда ANALYZE, позволяющая собирать статистику об использовании таблиц, индексов и других физических объектах (эта статистика используется оптимизатором запросов), профили пользователей на использование системных ресурсов: ЦПУ, ввода/вывода и т.д.
В версии 7 были полностью реализованы декларативные ограничения референциальной целостности в соответствии со стандартами ANSI/ISO. В рамках этих ограничений (первичные и внешние ключи) пользователь может специфицировать каскадное удаление связанных с некоторым первичным ключом записей. Процедуры PL/SQL могут описываться на уровне схемы базы данных (хранимые процедуры) и вызываться любым приложением, другими процедурами и триггерами. Взаимосвязанные процедуры могут быть сгруппированы в пакеты и использовать общие переменные и определения. Значения переменных, объявленных на уровне пакета, сохраняются в течение всей пользовательской сессии и могут совместно использоваться процедурами и функциями пакета.
Эффективность выполнения распределенных запросов была повышена за счет глобальной оптимизации: в версии 7 оптимизатор обладает информацией об индексах и статистике удаленных таблиц, и, например, скорость соединения таблиц, расположенных в разных узлах сети, существенно возрастает благодаря тому, что из удаленных таблиц выбираются лишь строки, соответствующие строкам локальной таблицы.
Версия 7.1, поставляемая в настоящее время обладает рядом существенных нововведений.
Важным аспектом является использование сервером особенностей архитектуры конкретной вычислительной платформы (например, многопроцессорности). Это достигается с помощью различных опций. Например, в версии ORACLE 7.1 есть опция параллельных запросов (parallel query option), реализующая параллельное выполнение запросов, параллельное создание индексов и параллельную загрузку данных. В предыдущих версиях ORACLE каждое SQL-утверждение обрабатывалось одним серверным процессом. В версии 7.1 на основе результатов работы оптимизатора запросов определяется количество серверных процессов, необходимых для выполнения SQL-утверждения. Работа этих параллельных процессов управляется специальным процессом-координатором.
В версии 7.1 достигнута полная интеграция PL/SQL и SQL. Если ранее можно было использовать конструкции SQL в текстах PL/SQL (но не наоборот), то теперь функции PL/SQL могут вызываться из SQL как обычные встроенные функции, причем не только в конструкции SELECT FROM WHERE (в списке SELECT, утверждениях WHERE, HAVING, GROUP BY и др.), но и в подъязыке определения данных в командах CREATE TABLE и ALTER TABLE из утверждения CHECK.
Еще одним ключевым нововведением в версии 7.1 является встроенный пакет DBMS_SQL, реализующий динамический SQL, т. е. возможность динамически формировать и выполнять утверждения SQL в программах PL/SQL.
В области распределенной обработки данных в версии 7.1 вводится асинхронная симметричная репликация данных и асинхронный вызов удаленных процедур.
История развития ORACLE показывает, что открытость всегда была одной из стержневых идей создателей системы [Jacobs94].
Рассматривать ORACLE как открытую систему следует, очевидно, в трех измерениях: «сервер-сеть-клиент».
Существенным моментом является реализация стандартов языка SQL. ORACLE 7.1 полностью поддерживает стандарт ANSI SQL 89 и входной уровень ANSI SQL 92. В версии 7.1 можно в интерактивном режиме включать проверку на соответствие входному уровню стандарта ANSI SQL 92 с помощью команды:
Соответственно можно и выключать проверку на соответствие стандарту, устанавливая FLAGGER = OFF.
Ключевой компонентой сетевого взаимодействия является программа SQL*Net, устанавливаемая как со стороны клиента, так и сервера, и, которая поддерживает практически все сетевые протоколы: TCP/IP, SPX/IPX, DECnet, APPC, ISO/OSI, Named Pipes, NetBIOS, AppleTalk, Banyan Vines, XODIAC, Wang Systems Network и другие, обеспечивая независимость сервера и клиентов от используемых сетевых протоколов. Важно, что SQL*Net поддерживает множественные сетевые интерфейсы для одного узла.
Другой существенной функцией SQL*Net является поддержка национальных языков: если на клиентах и серверах используются разные кодовые страницы, то SQL*Net обеспечивает корректную перекодировку данных (в том числе и для многобайтных кодировок).
Кроме того, Oracle 7 совместим со спецификацией X/Open XA коммуникации мониторов транзакций и менеджеров ресурсов, благодаря этому Oracle 7 работает с мониторами TopEnd, Encina и Tuxedo.
Интегрированная, функционально полная среда разработки CDE1 (Cooperative Development Environment) ORACLE предоставляет разработчику приложений набор инструментальных средств: Oracle Forms, Oracle Reports, Oracle Graphics, Oracle Book и другие.
Oracle Reports позволяет создавать отчеты в широком спектре форматов (табличные, матричные, главный-подчиненный и другие) с использованием различных текстовых и графических объектов. Отчет может содержать любое число SQL-утверждений и вызовов PL/SQL процедур. С помощью шлюзов можно строить отчеты из данных, находящихся в разных источниках, например, ORACLE, DB2, SQL/DS.
Средство визуализации данных Oracle Graphics дает возможность строить сложные приложения класса «мультимедиа». Oracle Graphics поддерживает языки SQL и PL/SQL, импорт и экспорт данных и графики из различных источников.
Oracle Book представляет собой инструмент создания электронной документации в гипертекстовом стиле, которая может вызываться из приложений. Созданные с помощью ORACLE Book документы могут находиться в базе данных, сетевой файловой системе или оптических дисках, и, содержать, помимо текста и графики, видео- и аудио- данные. ORACLE Book автоматически конвертирует файлы в более чем 80 форматах текстовых процессоров (MS Word, WordPerfect, AmiPro, Interleaf и др.), при этом сохраняются шрифты, цвета и выравнивание.
Oracle Forms, Oracle Reports, Oracle Graphics, Oracle Book полностью интегрированы по вызовам, передаче и получению данных.
Новые разработки ORACLE
В настоящее время Oracle Corp. выпускает на рынок ряд перспективных продуктов, среди которых TextServer3 (текстовый сервер), предназначенный для хранения и поиска произвольных текстов, Workgroup Server и Server for Windows NT.
Заполнить этот пробел и призван TextServer3, являющийся качественно новой версией известного пакета SQL*TextRetrieval 2.1 и с программной точки зрения представляющий собой процесс, взаимодействующий с SQL-сервером Oracle, который используется для хранения информации о текстах (даты, темы и т. д.) и самих текстов, которые могут храниться и в файловой системе соответствующей операционной среды.
TextServer3 реализует параллельные механизмы индексации и поиска в сверхбольших базах данных документов на основе физического разбиения текстовых таблиц (таблиц SQL-сервера, в которых хранятся тексты). Это разбиение может быть сделано системным администратором на основе структурных атрибутов (дата, тема и др.). Несмотря на разбиение прикладные программы «видят» данные как единое целое. Это реализовано с помощью Виртуальных Текстовых Таблиц, содержащих информацию о разбиении.
Дополнительные компоненты разбиения включаются в систему просто добавлением строк к Виртуальным Таблицам. Кроме того, Виртуальные Таблицы обеспечивают значительную гибкость, допуская реализацию параллельных процессов поиска и индексирования на различных типах параллельных систем: кластерах процессоров, симметричных и массивных параллельных архитектурах.
Важным компонентом текстового сервера является программа ConText, выполняющая лингвистический анализ текстов на основе тезауруса (около 600 000 слов и 1000 потенциальных лингвистических атрибутов на каждое слово) и грамматического и смыслового разбора. Результатом такого анализа становится индексация текстов по темам (причем каждой теме присваивается ранг релевантности) и ключевым словам. ConText выполняет также и редукцию текстов, т. е. сведение текстов к наборам ключевых фраз. При этом пользователь может выбирать уровень редукции, доводя редуцированный текст до 10 % исходного. Редуцированный текст просматривается с помощью программы SpeedView.
Для создания сложных приложений класса мультисред в графических средах Windows, Macintosh и Motif TextServer3 поддерживает ряд интерфейсов прикладного программирования (ИПП):
ИПП реализуют следующие функциональные возможности: создание, уточнение, сохранение, переименование и восстановление запросов, перечисление активных и сохраненных запросов, уничтожение запросов, редактирование и печать текстов и многие другие.
Системное администрирование поддерживается утилитой Монитор, позволяющей просматривать информацию об активных процессах и выводить ее в файлы или таблицы базы данных Oracle. Данные из таблиц могут передаваться различным компонентам интегрированной среды разработки Oracle (Oracle Reports, Oracle Graphics и др.).
Для работы TextServer3 необходимы следующие программные компоненты: СУБД Oracle 7.1, SQL*NET 2.1 и SQL*Forms 4.
Заключение
В заключение, отметим, что с экономической точки зрения открытость ORACLE означает капиталоемкость разрабатываемых в среде ORACLE приложений, поскольку есть гарантия, что перенос программного обеспечения на новые версии системы и из одной программно-вычислительной среды в другую не потребует изменения программного кода, и, соответственно дополнительных вложений. Этим, во многом, объясняется, на взгляд автора столь высокая доля ORACLE на рынке СУБД и наибольшее число «ORACLE-ориентированных» программных продуктов третьих фирм (более 4000).
Литература
Поделитесь материалом с коллегами и друзьями