Классика баз данных - статьи

       

Определение новых базовых типов данных


СУБД IUS позволяла вводить новые базовые типы данных. При этом можно использовать встроенные в IUS методы доступа и хранения, а также определять новые.

Индивидуальные типы

В IUS можно было определить новый базовый тип данных (индивидуальный тип данных, distinct type), основанный на существующем типе, но обеспечивающий автоматическое преобразование к нужному значению (за счет явного определения соответствующих функций). В очень близкой форме средства определения индивидуальных типов позже были введены в стандарт SQL.

Типы со скрытой структурой

В соответствии с идеологией IUS, потребность во введении нового базового типа данных может возникать и по причине принципиального отсутствия нужного типа. Для этого поддерживался механизм определения типов со скрытой структурой (opague type). Типы со скрытой структурой являлись абстрактными в строгом смысле этого слова. СУБД IUS была лишена какой-либо информации о внутреннем устройстве этих типов и могла манипулировать соответствующими значениями только посредством предоставленных разработчиком функций.

Чтобы определить новый тип данных со скрытой структурой, требовалось выполнить следующую последовательность действий:

  • описать на языке C (или другом внешнем языке) структуру определяемых объектов;
  • написать на языке C (или другом внешнем языке) вспомогательные функции, вызываемые сервером СУБД;
  • зарегистрировать определяемый тип в базе данных посредством оператора CREATE OPAQUE TYPE;
  • зарегистрировать вспомогательные функции посредством операторов CREATE FUNCTION и CREATE CAST;
  • предоставить права доступа к определяемому типу и его вспомогательным функциям посредством оператора GRANT;
  • написать требующиеся для приложения дополнительные функции, которые можно вызывать средствами SQL, и зарегистрировать их;
  • если нужно, реализовать специфические для определяемого типа вторичные методы доступа (функции для работы с индексами).

После определения нового типа со скрытой структурой его можно было использовать наравне с другими базовыми типами.

Содержание  Назад  Вперед