[ Russian ] [ English ]

Объектно-ориентированный транслятор для программируемых реляционных систем

Евгений Григорьев,
,
Grigoriev.E@gmail.ru

Существующие объектно-ориентированные языки возникли в результате эволюции систем программирования, оснащенных линейной адресуемой памятью [1]. Такая организация памяти в программируемых системах не является единственной. В частности, современные реляционные системы хранения данных могут рассматриваться как виртуальный компьютер [1 (гл. 2.1)], обеспечивающий управление последовательностью выполнения элементарных операций над персистентными данными, представленными в виде множества отношений. Будем называть такой компьютер программируемой реляционной системой (ПРС). Реализуемые этим компьютером структуры данных и элементарные операции над ними описываются реляционной моделью данных [2, 3, 4].

В докладе рассматривается подход, позволяющий создать объектно-ориентированный транслятор для ПРС. Он основывается на формальных свойствах реляционной модели данных. Будут перечислены основные команды управления ПРС. Далее будут сформулированы свойства объектов, которые могут быть реализованы на базе ПРС. Для этих объектов мы определим набор команд, позволяющих:

  • Создавать классы со сложной ссылочной структурой. Объекты классов инкапсулируют персистентное состояние, поведение и ограничения целостности данных. Эти свойства могут переопределяться при множественном наследовании классов.
  • Создавать персистентные объекты, манипулировать состоянием этих объектов, определять и выполнять методы объектов и т.д.
  • Получать данные, описывающие состояние объектов, в том числе с помощью незапланированных запросов.

Предложенный набор команд формирует входной язык транслятора, который можно описать как непроцедурный декларативный объектно-ориентированный язык высокого уровня. Интересно, что все операции, применимые к сложными объектами любого класса (включая исполнение определяемых пользователем методов), выполняются для любого заданного подмножества объектов этого класса без явного или неявного использования итераторов, то есть, по сути, являются групповыми.

В докладе рассматриваются формальные принципы трансляции этих команд в команды ПРС. В качестве примера реализации предлагаемого подхода, будут рассмотрены непроцедурные объектно-ориентированные SQL-подобные языковые расширении, которые выполняются прототипом, осуществляющим описываемую трансляцию для MS SQL сервера. Предлагаемые объектно-ориентированные расширения никак не связаны с объектными расширениями, описанными в стандарте SQL:1999 [5] и поддерживаемыми в имеющихся реализациях SQL.

Презентация доклада в формате PowerPoint: grigoryev20120216.ppt.

Литература:

  1. Пратт Т., Зелковиц М. Языки программирования: разработка и реализация. 4-е изд. – СПб: Питер, 2002.
  2. Codd, E.F. A Relational Model of Data for Large Shared Data Banks. CACM 13(6), June 1970. Republished in Milestones of Research -- Selected Papers 1958-1982 (CACM 25th Anniversary Issue), CACM 26(1), January 1983.
  3. Мейер Д. Теория реляционных баз данных. – М.: Мир, 1984.
  4. Hugh Darwen and C.J. Date. The Third Manifesto. http://www.dcs.warwick.ac.uk/~hugh/TTM/TTM-2011-10-30.pdf (текущая версия).
  5. А. Эйзенберг, Дж. Мелтон. SQL:1999, ранее известный как SQL3 (перевод Кузнецова С.Д.). http://citforum.ru/database/digest/sql1999.shtml
Supported by Synthesis Group