Введение

Программное обеспечение баз данных
техническая разработка баз данных

Ingres Database (/ɪ//ŋ/'/ɡ//r//ɛ//s/ ingGRESS') — это запатентованная система управления реляционными базами данных SQL, предназначенная для поддержки крупных коммерческих и государственных приложений. Компания Actian Corporation, объявившая в апреле 2018 года о своем приобретении компанией HCL Technologies, контролирует разработку Ingres, предоставляет сертифицированные двоичные файлы для загрузки и оказывает поддержку по всему миру. Ранее существовала версия Ingres с открытым исходным кодом, но она больше не доступна для загрузки с сайта Actian. Однако версия исходного кода все еще доступна на GitHub. В первые годы своего существования Ingres стал важной вехой в истории развития баз данных. Ingres начался как исследовательский проект в Калифорнийском университете в Беркли в начале 1970-х годов и завершился в 1985 году. В течение этого времени Ingres во многом оставался концептуально схожим с основополагающей системой IBM System R, отличаясь более либеральной лицензией исходного кода, использованием преимущественно машин DEC под управлением UNIX и VAX/VMS, а также использованием QUEL в качестве языка запросов вместо SQL. В то время QUEL считался более точно отражающим реляционную алгебру Эдгара Ф. Кодда (особенно в отношении композиции), но SQL было проще разбирать и он был менее сложен для тех, кто не имел специального математического образования. Когда ANSI предпочла SQL QUEL в рамках стандарта SQL 1986 года (SQL 86), Ingres стал менее конкурентоспособным по сравнению с такими продуктами, как Oracle, пока последующие версии Ingres также не получили поддержку SQL. Многие компании выделились из оригинальной технологии Ingres, включая саму Actian, первоначально известную как Relational Technology Inc., и базу данных NonStop SQL, первоначально разработанную Tandem Computers, а теперь предлагаемую Hewlett Packard Enterprise.

История

Ингрес начал свою историю как исследовательский проект в Калифорнийском университете в Беркли в начале 1970-х годов и завершился в 1985 году. Postgres (Post Ingres), проект, стартовавший в середине 1980-х годов, впоследствии развился в PostgreSQL. Он соответствует требованиям ACID и обеспечивает полную транзакционность (включая все операторы DDL) и является частью инициативы Lisog по развитию стека программного обеспечения с открытым исходным кодом.

1970-е годы

В 1973 году, когда в IBM начинался проект System R, исследовательская группа опубликовала серию статей, описывающих разрабатываемую ими систему. Они уже привлекли финансирование для исследования географической системы баз данных для экономической группы Беркли, которую они назвали Ingres (INteractive Graphics REtrieval System – интерактивная система поиска графики). Они решили использовать эти средства для финансирования своего реляционного проекта, рассматривая их как основу для нового, гораздо более масштабного начинания. Было решено использовать первоначальное название проекта, и новый проект получил название University INGRES, поскольку исследования баз данных уже финансировались в других местах. Стоунбрейкер представил свою идею другим организациям и, при поддержке коллег, в конечном итоге получил скромную поддержку от NSF и трех военных ведомств: Управления научных исследований ВВС, Управления исследований армии и Командования электронных систем ВМС. Благодаря этому финансированию, Ingres разрабатывался в середине 1970-х годов командой студентов и сотрудников, работавшей посменно. Эволюция Ingres была схожа с эволюцией System R: ранний прототип в 1974 году был значительно переработан для обеспечения поддерживаемости кода. Затем Ingres был распространен среди небольшого круга пользователей, а члены проектной группы неоднократно переписывали прототип, учитывая накопленный опыт, отзывы пользователей и новые идеи. Исследовательский проект завершился в 1985 году, в основном для университетов. Многие студенты из Калифорнийского университета в Беркли и других университетов, работавшие с исходным кодом Ingres, впоследствии участвовали в разработке различных коммерческих систем управления базами данных. Студенты из Беркли Джерри Хелд и позже Карел Юсеффи перешли в Tandem Computers, где разработали систему баз данных, которая в дальнейшем стала NonStop SQL. База данных Tandem представляла собой повторную реализацию технологии Ingres. Она развилась в систему, эффективно работающую на параллельных компьютерах, то есть включала функциональность для распределенных данных, распределенного выполнения и распределенных транзакций (последнее было особенно сложной задачей). Первые компоненты системы были выпущены в конце 1970-х годов. К 1989 году система могла выполнять запросы параллельно, и продукт стал известен как одна из немногих систем, масштабируемых почти линейно с увеличением количества процессоров: добавление второго процессора к существующему серверу NonStop SQL почти вдвое увеличивало его производительность. Позже Tandem была приобретена компанией Compaq, которая в 2000 году начала переписывать продукт, а сейчас он принадлежит Hewlett Packard Enterprise. В начале 1980-х годов Ingres конкурировал с Oracle. Оба продукта считались ведущими аппаратно-независимыми реализациями реляционных баз данных, обладали сопоставимой функциональностью, производительностью, долей рынка и ценами, и многие эксперты считали Ingres (возможно, незначительно) превосходящим продуктом. Однако, начиная с 1985 года, Ingres постепенно терял долю рынка. Одной из причин был агрессивный маркетинг Oracle, другой – растущее признание SQL в качестве предпочтительного языка реляционных запросов. Изначально Ingres использовал другой язык, QUEL, и переход на SQL (реализованный в версии Ingres 6) занял около трех лет, что привело к потере ценного времени в конкурентной борьбе. Роберт Эпштейн, главный программист проекта во время работы в Беркли, вместе с другими студентами проекта Ingres, Паулой Хоторн и Майклом Убеллом, основал компанию Britton Lee, Inc., к которой позже присоединился Эрик Оллман. Позже Эпштейн основал Sybase. Sybase на протяжении 1980-х и 1990-х годов некоторое время оставался вторым по величине производителем (после Oracle), пока в 1997 году Informix не появился "из ниоткуда" и не занял лидирующие позиции. Линейка продуктов Sybase также была лицензирована Microsoft в 1992 году, которая переименовала ее в Microsoft SQL Server. Эти отношения ухудшились в конце 1990-х годов, и сегодня SQL Server значительно превосходит Sybase по объему продаж.

Relational Technologies, Inc. (RTI) (в настоящее время - RTI)

Несколько компаний использовали исходный код Ingres для создания продуктов. Наиболее успешной была компания Relational Technology, Inc. (RTI), основанная в 1980 году Стоунбрейкером, Вонгом и другим профессором из Беркли, Лоуренсом А. Роу. В конце 1980-х годов RTI была переименована в Ingres Corporation. Компания портировала код на DEC VAX/VMS, коммерческую операционную систему для компьютеров DEC VAX. Они также разработали набор инструментов для создания и управления базами данных (например, генераторы отчетов, формы ввода и обновления данных и т.д.) и инструменты разработки приложений. Со временем большая часть исходного кода была переписана для добавления функциональности (например, многооператорные транзакции, SQL, метод доступа B-дерево, типы данных для даты и времени и т.д.) и повышения производительности (например, компилируемые запросы, многопоточный сервер). В ноябре 1990 года компания была приобретена корпорацией ASK. В течение следующих нескольких месяцев основатели покинули компанию.

Актиан

22 сентября 2011 года корпорация Ingres была переименована в Actian Corporation, сосредоточив усилия на технологиях управления и интеграции данных, включая Vectorwise/Vector, Btrieve/Pervasive PSQL/Zen, OpenROAD и базу данных Ingres. Компания Actian была приобретена HCL Technologies и Sumeru Equity Partners за 330 миллионов долларов США. В 2021 году HCL Technologies стала единственным владельцем Actian, которая вошла в состав подразделения HCLSoftware, отвечающего за данные и аналитику.

История выпуска Ingres

Выпуск Общая доступность Конец поддержки предприятия Конец расширенной поддержки Конец поддержки устаревших версий Заметки сентября 1991 30 сентября 01 31 декабря 08 января 1996 31 сентября 2000 31 декабря 08 Он интегрировал неструктурированный тип данных (аудио, видео, BLOB), временные таблицы (в памяти) и пакет администрирования Visual DBA. февраль 1999 1 мая 05 31 декабря 08 31 декабря 13 Заключение строк, переменный размер страницы, массовая загрузка, репликация на уровне сервера (старая система захвата изменений данных по правилам была отменена). июль 2001 31 декабря 07 31 декабря 12 31 декабря 17 Первая версия Ingres для Linux. Эта версия также позволила полностью использовать 64-битные архитектуры. Внедрение драйвера JDBC. май 2002 31 декабря 09 31 декабря 14 31 декабря 19 Первая корпоративная СУБД, полностью использующая 64-битную архитектуру под Linux. Поддержка XML, Unicode и улучшение и разделение инструментов администрирования (Ingres Visual Manager, Ingres Performance Monitor, Ingres Import Assistant, Ingres Visual SQL и т.д.). ноябрь 2004 31 декабря 07 Computer Associates делает Ingres R3 открытым исходным кодом под лицензией CATOSL. Поддержка секционированных таблиц, параллельных запросов и новый алгоритм оптимизации данных. март 2007 31 декабря 11 31 декабря 16 31 декабря 21 Вход Ingres в мир продуктов с открытым исходным кодом (под лицензией GPL). Стабильность, расширенная функциональность и производительность, простота установки. Выпуск IceBreaker BI. ноябрь 2008 31 декабря 15 31 декабря 20 31 декабря 25 Улучшена поддержка JDBC, Net и PHP с точки зрения производительности. Функции доставки журналов и поддержка UTF-8. сентябрь 2010 31 декабря 16 31 декабря 21 31 декабря 26 Релиз содержит ряд основных усовершенствований, которые минимизируют время разработки приложений при миграции приложений из других баз данных в Ingres. Новые функции включают поддержку многоверсионного контроля параллелизма (MVCC), высокопроизводительное выполнение пакетных операторов, полную поддержку скалярных подзапросов, поддержку идентификаторов длиной до 256 символов и шифрование данных на уровне столбцов. Релиз поддерживает автоматизированную, плавную миграцию из более ранних версий Ingres. май 2012 31 мая 17 31 мая 22 31 мая 27 Включает в себя всестороннюю пространственную поддержку, позволяющую расширять данные на основе местоположения с помощью пространственно-ориентированных приложений, избегая сложных дополнений и интеграции с другими базами данных, и не требует дополнительной оплаты для доступа к геопространственным функциям. апрель 2014 31 мая 18 31 мая 23 31 мая 28 4 сентября 14 1 сентября 19 1 сентября 22 1 сентября 25 Новые функции включают 2D, 3D и 4D типы пространственных данных, удаленный GCA, UTF-8 транслитерацию, аутентификацию на уровне СУБД, типы данных и функции IPV4 и IPV6, а также уровень параллелизма на запрос. Пользователи также могут сделать свои первые шаги в области анализа больших данных, применив новые оконные функции к существующим транзакционным данным. 31 марта 17 31 мая 23 31 мая 27 31 мая 32 Ingres 11 включает в себя два значительных дополнения для интеграции приложений и мониторинга. IngresConnect предоставляет комплексное решение для проектирования, развертывания и управления интеграцией данных, а Actian Enterprise Monitoring Appliance (EMA) теперь может использовать плагины, совместимые с Nagios, в Ingres для мониторинга сред Ingres. Ingres 11 также содержит множество новых геопространственных, производительных, удобных в использовании и безопасных функций. Некоторые из основных особенностей: плагин ArcGIS, эвристика повторного использования оптимизатора запросов, автоматическое вращение файлов журналов, часовые пояса IANA, исправление Y2K38, шифрование BLOB и AES-шифрование паролей. 31 марта 17 31 мая 23 31 мая 27 6 мая 22 31 декабря 25 6 мая 22 31 мая 27 31 мая 32 31 мая 37 Ingres 11.2 содержит множество новых функций управления, разработки и безопасности. Ingres 11.2 представляет фазу 1 управления рабочей нагрузкой, поддержку JSON, маскировку данных для конфиденциальных данных, управление секциями, сводные таблицы и векторы инициализации шифрования, среди других изменений. Ingres 11.2 также содержит версию SQL UDF с поддержкой только для разработчиков. С объявлением о выпуске Ingres 9.1 (Ingres 2006 release 2) на платформе VMS даты поддержки для VMS теперь будут соответствовать обычным датам выпуска Actian, как указано выше, за исключением следующих случаев: отмена выпуска Alpha VMS 2.0 была объявлена, а поддержка для предприятий закончилась 31 декабря 2009 года, а расширенная поддержка предлагалась до 31 декабря 2013 года. Вся поддержка VAX VMS закончилась 31 декабря 2008 года.

Архитектура

Ingres — это реляционная система управления базами данных с единственным узлом, и поэтому она работает по принципу "совместного использования всего".

Архитектура хранения

Ingres — это диско-ориентированная СУБД, и по умолчанию использует n-арную модель хранения (NSM), также известную как хранилище строк. Однако, Actian внедрила столбцовое хранилище в последнюю версию Ingres (Actian X) для повышения производительности при выполнении OLAP-задач. Actian X имеет два движка хранения: традиционный Ingres и X100, тот же движок, что и в Actian Vector. Несмотря на то, что продукт в настоящее время называется "Actian X Hybrid Database", термин "гибрид" относится к его способности выполнять как OLTP, так и OLAP-задачи, используя гибридную модель хранения (то есть как строковое, так и столбцовое), а не к наличию гибридной архитектуры хранения. Что касается организации хранения, Ingres поддерживает кучи (Heap), хеш-индексирование (Hash), ISAM и B-деревья.

Индексы

Ingres выбирает ISAM (Index Sequential Access Method) в качестве структуры данных индекса по умолчанию, но также предлагает B+ Tree, Hash Table и R Tree в качестве альтернатив. На Actian X также доступны два других варианта, предназначенных только для таблиц X100:
X100 IX: по умолчанию, создает первичный (кластеризованный) индекс. Разрешен только один первичный индекс на таблицу. X100 SI: создает вторичный индекс по дополнительным столбцам в таблице X100. Может также указываться как VWSI. Вторичные индексы не поддерживаются для секционированных таблиц.

Контроль за конвертируемостью

Ingres использует многоверсионное управление конкурентным доступом (MVCC), детерминированное управление конкурентным доступом и двухфазную блокировку (обнаружение взаимоблокировок).

Уровни изоляции

Ingres поддерживает четыре уровня изоляции, от приоритета согласованности до максимальной параллельности: Serializable, Repeatable Read, Read Committed и Read Uncommitted. Serializable является уровнем изоляции по умолчанию и обеспечивает наиболее строгую гарантию согласованности.

Соединения

Ingres поддерживает соединения с использованием алгоритмов хеш-соединения, сортировочного слияния и вложенных циклов. Оптимизатор запросов определяет, какой тип алгоритма соединения использовать, основываясь на анализе запроса. Соединения с вложенными циклами чаще всего встречаются в запросах без корреляции, где переменные корреляции и имена таблиц используются произвольно и в случайном порядке. Когда в предложении соединения отсутствуют ограничения для обеих таблиц, а соединяемые строки пространственно непрерывны, оптимизатор запросов, скорее всего, выберет сортировочное слияние или хеш-соединение.

Установка

Ingres может быть установлен как клиент (клиентская установка) или как сервер (серверная установка). Клиент не имеет связанной с ним базы данных, но позволяет получить доступ к базе данных, созданной в серверной установке. На типичном предприятии клиент Ingres устанавливается для сотрудников на компьютерах, которые будут взаимодействовать с сервером Ingres, являющимся ядром системы. Следует отметить, что термин "инстанция" является синонимом "установка". Установку можно рассматривать как набор серверных процессов, общей памяти и семафоров для межпроцессного взаимодействия, а также дисковых файлов, используемых для обработки транзакций и восстановления в случае сбоя хоста или установки.

Идентификатор установки

Установка часто идентифицируется по своему идентификатору установки. Этот идентификатор состоит из двух символов, чувствительных к регистру, и начинается с буквы. Значение по умолчанию — II. Идентификатор установки используется для определения портов, на которых будут прослушивать серверы Ingres. Например, "II" означает, что серверы прослушивают порт 21064 и следующие семь портов. Любой хост (компьютер или виртуальная машина) может содержать несколько установок Ingres, но каждая установка должна иметь уникальный идентификатор, чтобы клиенты и компоненты взаимодействовали с нужной установкой. Одна установка может использовать несколько идентификаторов установки. Типичный пример — необходимость запуска более восьми процессов на сервере. Также, хотя серверы баз данных Ingres (iidbms) и серверы связи Ingres (iigcc) обычно используют один и тот же идентификатор установки, это не является обязательным требованием.

Пути установки

Некоторые важные пути должны быть указаны в месте создания установки. Эти пути не изменятся без переустановки, поэтому выбирайте их внимательно. Пути представлены в следующей таблице. Обратите внимание, что префикс "II" не означает, что эти пути предназначены для установки с идентификатором "II". Каждая установка, независимо от своего ID, будет иметь свой собственный набор этих переменных.

Название | Назначение
------- | --------
II SYSTEM | Бинарные файлы, утилиты, текстовые файлы, используемые для настройки и т.д.
II DATABASE | Местоположение основных данных установки.
II CHECKPOINT | Местоположение резервных копий базы данных.
II JOURNAL | Местоположение, где регистрируются транзакции установки базы данных. Журналы используют систему восстановления для восстановления после сбоев и могут использоваться для аудита.
II DUMP | Местоположение файлов "дампа" установки. Они могут быть созданы во время онлайн-резервного копирования базы данных и для восстановления.
II WORK | Используется для хранения рабочих файлов, генерируемых сервером при обращении к базе данных.

Базы данных

Инсталляция (или экземпляр) Ingres может поддерживать несколько баз данных, каждая из которых принадлежит любому пользователю, известному данной инсталляции. Инсталляция позволяет одновременно обращаться к нескольким базам данных. Количество баз данных – это настраиваемый параметр. Важно отметить, что это лишь ограничивает число баз данных, доступных в любой момент времени, и можно создать гораздо больше баз данных. При создании серверной инсталляции Ingres будут созданы базы данных "iidbdb" и "imadb", принадлежащие пользователю "$ingres". База данных iidbdb, также известная как "главная каталог-база данных", содержит множество специальных таблиц для управления самой инсталляцией. База данных imadb (база данных архитектуры управления) также включает зарегистрированные объекты, используемые для управления инсталляцией. Следует особо отметить, что базы данных не имеют заданного размера изначально. Каждая база данных в инсталляции может увеличиваться в размере в пределах доступного свободного места на диске.

Постгрейс

Проект Postgres был начат в середине 1980-х годов для решения проблем, связанных с ограничениями существующих реализаций систем управления базами данных, основанных на реляционной модели. Главным среди этих ограничений была неспособность предоставить пользователю возможность определять новые домены (или "типы"), представляющие собой комбинации более простых доменов (см. реляционную модель для объяснения термина "домен"). В рамках проекта рассматривались и другие идеи, включая использование носителей для однократной записи (например, оптических дисков), применение массивов хранения данных (например, политика "никогда не удалять данные"), логический вывод и объектно-ориентированные модели данных. Также проводились эксперименты с новыми интерфейсами между базой данных и приложениями (например, "порталами", которые иногда называют "толстыми курсорами"). Итоговый проект, получивший название "Postgres", был направлен на внедрение минимального набора функций, необходимых для полноценной поддержки типов данных. Это включало возможность определения типов, а также возможность полного описания связей – которые до этого момента широко использовались, но поддерживались исключительно пользователем. В Postgres база данных "понимала" связи и могла извлекать информацию из связанных таблиц естественным образом, используя правила. В 1990-х годах Стоунбрейкер основал новую компанию для коммерциализации Postgres под названием Illustra. Позднее компания и технология были приобретены корпорацией Informix.