|
|
Распределенная, объектно-ориентированная система управления базами данных с сетевым принципом организации
Русин Александр Олегович, 15.08.2008
Труды международной научно-технической конференции "Информационные системы и технологии - 2000" НГТУ, Новосибирск, 2000г.
Доклад от компании НооЛаб / см.также тезисы к докладу /
Содержание
АннотацияВ докладе формулируются требования, предъявляемые современными, сложно организованными информационными системами (ИС) к базам данных (БД) и описывается разработанная автором модель системы управления базами данных (СУБД), позволяющая разрабатывать БД, отвечающие этим требованиям.
Основными свойствами и возможностями предлагаемой модели СУБД являются: - Сетевая модель организации данных, реализуемая на нижнем уровне БД.
- Объектно-ориентированная модель данных, типизация данных.
- Связывание баз данных на уровне элементарных записей.
- Модульность данных - выделение, изъятие, замена отдельной БД в системе баз.
- Организация распределенной системы баз, удаленный доступ к БД.
- Параллельное исполнение запросов к системе БД.
- Рекурсивный механизм транзакций.
Постановка задачиВ ходе проектирования и разработки ИС необходимо создать БД, систему БД (хранилище данных) или СУБД, которые будут обеспечивать хранение данных, доступ к ним, наполнение данными и выполнение некоторых сервисных операций. В наиболее сложном случае необходимо создать СУБД, которая в дальнейшем будет осуществлять генерацию БД (экземпляров). В общем случае данные ИС хранятся с помощью системы БД, связанных друг с другом. Для системы БД требуется выполнение принципа модульности данных - то есть, возможность оперирования с отдельно взятой БД, изъятие ее из системы, замена. В общем случае состав и структура данных в БД неизвестна, поэтому необходимо реализовать такую модель организации данных, которая позволит в качестве частных случаев описать все, или большинство известных моделей (структур) данных. Программное обеспечение, входящее в ИС, зачастую создается с применением объектно-ориентированного программирования (ООП) и для достижения удобства, простоты, эффективности и надежности доступа к данным БД должна отвечать принципам ООП. К ИС может предъявляться требование непрерывного функционирования в течение длительного времени, в этом случае БД должна характеризоваться высокой отказоустойчивостью. В ИС может одновременно выполняться множество процессов (задач), осуществляющих обращение к БД, при этом одновременные запросы по возможности должны обрабатываться параллельно. ИС может быть распределенной, то есть различные составляющие (задачи, БД) могут быть размещены на различных компьютерах, связанных в сеть, в подобной системе БД должна поддерживать возможность приема удаленных запросов (по сети).
Перечисленные в постановке задачи требования к БД должны выполняться одновременно.
Описание модели данныхКаждая БД в системе реализует единую модель данных. В качестве основы этой модели принят сетевой принцип организации данных.
БД состоит из множества элементарных записей, для их обозначения в предлагаемой модели используется термин "атом". Количество атомов в БД не ограничено, каждому атому в момент его создания выделяется идентификатор, уникальный в рамках этой БД, который является виртуальным адресом атома, остается неизменным в течение всего времени существования атома и используется для выполнения любых операций с атомом (для обращения к нему). Таким образом, в БД реализован механизм единой виртуальной адресации всех элементарных записей данных (атомов).
Каждый атом содержит данные (тело атома), которые в общем случае рассматриваются как двоичные данные. Тело атома может иметь произвольный размер, в том числе нулевой (пустое тело). Каждый атом имеет множество ссылок на другие атомы в этой же БД, которые представляют собой виртуальные адреса других атомов. Атом может иметь произвольное количество ссылок на другие атомы, в том числе ни одной. С помощью ссылок реализуется механизм связывания данных. Ссылки являются однонаправленными, то есть: если атом А ссылается на атом Б, то обратное из этого не следует, но и не опровергается.
Описанный принцип организации данных целиком описывает сетевую модель и может быть продемонстрирован следующей схемой:
В данной части модель данных никак не описывает правила связывания данных, состав данных и их интерпретацию. Для решения этой задачи введен механизм описания типов (классов) данных.
В дополнение к базовой модели низкого уровня введено правило: Каждый типизированный атом обязательно имеет одну ссылку, которая указывает на атом-описатель типа. Эта ссылка не может быть использована прикладной программой наравне с остальными для установки связи между данными. Атом-описатель типа присутствует в той же БД, что и описываемый им атом. Тело атома-описателя имеет строго оговоренный формат и интерпретируется СУБД в процессе исполнения запросов к БД. Атом-описатель задает тип (класс) данных. Атомы, описанные с его помощью, являются экземплярами данных этого класса. В этом заключается основа объектной модели - в БД присутствует описательная часть данных (классы), и реальные данные (экземпляры классов). При описании класса указывается, какие данные могут храниться в экземплярах, какие операции над ними может (должна) выполнять СУБД. В зависимости от степени реализации СУБД могут описываться только простые данные (числа, строки) и элементарные операции над ними, либо может допускаться описание сложных (фреймы, массивы, списки, прочее).
Если в описании класса задается только ограничение на содержание, то это является механизмом типизации и позволяет контролировать данные в момент записи (соответствие типу по операции присваивания). Если в описании класса также указано, какие операции над экземплярами этого класса выполняются - это соответствует механизму инкапсуляции в ООП. При описании нового класса на базе ранее определенного класса, выполняется механизм наследования, также свойственный ООП. Принципиально данная модель позволяет реализовать и полиморфизм (описание виртуальных операций), это целиком зависит от реализации СУБД.
Характерной и крайне важной особенностью разработанной модели данных является возможность создания структурных типов. Когда атом-описатель типа не имеет связей с другими описателями, то такой тип является элементарным. Когда атом-описатель ссылается на другие описатели, то при этом задается, на какие типы данных должен ссылаться экземпляр. Работу этого механизма поясняет схема:
На примере показано, как описывается структурный тип и каким может быть экземпляр данных этого типа. Видно, что в результате ссылки одного из атомов-описателей на самого себя получается описание списка данных. Аналогичным образом могут описываться деревья и таблицы (в том числе многомерные).
Особенно высокую гибкость реализации структурных типов дает поддержка со стороны СУБД вариантных типов. Вариантный тип указывает, что экземпляр данных может принадлежать (отвечать) одному из нескольких типов (любому).
Механизм типизации, а особенно - механизм инкапсуляции - позволяет осуществлять контроль на совместимость различных данных по выполняемым над ними операциям, а также дает возможность строго контролировать корректность данных (соответствие описанию на этапе записи значения).
Описанная модель данных отвечает сетевой модели, позволяет описывать и хранить данные универсального содержания и структуры, отвечает базовым принципам ООП и допускает расширение возможностей СУБД до полного соответствия технологии ООП. Следовательно, описанная модель данных удовлетворяет предъявленным при постановке задачи требованиям.
Описание механизма связывания баз данныхЛюбой атом может ссылаться не только на другой атом в этой же БД, но и на любой атом, в любой из доступных БД в системе. Такая ссылка организуется не прямым способом, а косвенным. Следует сразу заметить, что адреса атомов уникальны только в рамках одной БД, и очень часто пересекаются с адресами других атомов в другой БД.
Механизм связывания атомов из разных баз реализован следующим образом: атом, устанавливает обычную ссылку на атом-мост, который расположен в одной с ним БД. Атом-мост имеет специальный тип (принадлежит специальному классу) и в его теле записана информация, где расположена удаленная БД и адрес атома в системе адресации той БД, куда установлена ссылка. СУБД в процессе работы осуществляет интерпретацию атомов-мостов и при обращении к ним переадресует запрос к удаленной БД. Таким образом, прикладная программа при установке удаленной ссылки должна каким-либо образом указывать местонахождение удаленной БД, а при использовании удаленных ссылок - подобных указаний уже не требуется и наличие атомов-мостов СУБД скрывает, делая связи между базами данных абсолютно прозрачными.
При реализации такого механизма связь между БД осуществляется с точностью до атома - элементарной записи в предложенной модели. В конкретной реализации СУБД могут быть различные классы атомов-мостов, например: для связывания БД, размещенных на одном компьютере (сервере); для связывания БД в масштабах локальной сети; для связывания БД в масштабах Internet. Различные масштабы связей требуют указания разного рода информации о местоположении БД: адрес в файловой системе; адрес компьютера в локальной сети и адрес в его файловой системе; адрес сервера БД в Internet и имя БД на этом сервере, и т.п.
Различные БД могут быть более или менее связаны. Информация о степени связности поддается контролю и анализу на уровне сервисных служб СУБД. Любую БД из системы баз, как бы она ни была связана с другими, можно временно исключить (или заблокировать), до тех пор, пока к ней не будет обращений. Любую БД из такой системы можно скопировать (зеркалировать), дополнить новыми данными, и поместить на место старой версии. На место любой БД можно установить другую, если в ней присутствуют все экземпляры данных, к которым идут связи извне, а также - типы этих экземпляров совместимы с типами заменяемых экземпляров.
Таким образом, предложенный механизм связывания баз данных отвечает требованиям модульности, сформулированным при постановке задачи. Кроме этого, описанный механизм позволяет реализовать СУБД, действующую в масштабах от локальной вычислительной сети до Internet.
Архитектура и реализация СУБДОписанная модель данных и технология связывания баз может быть реализована на любой существующей платформе и для любой существующей операционной системы. Но наиболее полной и качественной является реализация, когда СУБД организуется в виде некоторой программы-сервера, действующей в качестве одной из служб операционной системы и предоставляющей прикладным программам определенные стандартизованные интерфейсы. При такой организации СУБД может осуществлять прямой доступ к набору БД, захваченных ею в индивидуальное использование, а также осуществлять косвенный доступ к базам, доступ к которым осуществляет другой экземпляр СУБД. Косвенный доступ осуществляется путем переадресации запросов между СУБД, поддерживающими единый, стандартный программный интерфейс. Это позволяет создать более гибкую и масштабируемую систему, в которой оказываются в равной степени доступными данные, хранение и обработку которых осуществляют различные экземпляры СУБД - например, входящие в состав разных прикладных ИС, либо запущенные в разное время, либо разделенные географически.
Возможна реализация СУБД, которая принимает и обрабатывает как запросы в масштабах локальной сети, так и в масштабах Internet. Это зависит от возможностей операционной системы и от того, какие стандартные интерфейсы приема запросов СУБД поддерживает. Например, возможна реализация СУБД в виде FTP-сервера, Web-сервера, SQL-сервера.
Созданная при участии автора реализация описанной модели СУБД включает два варианта:
1) сервер, предоставляющий прикладным программам специально разработанный COM-интерфейс, который позволяет обращаться к СУБД любым программам, выполняющимся на платформе Wintel, на одном компьютере с СУБД;
2) сервер, принимающий запросы и отвечающий на них по специально разработанному протоколу, базирующемуся на TCP/IP, что позволяет обращаться к СУБД любым программам в масштабах от Intranet до Internet.
Параллельная обработка запросовРазработанная автором архитектура СУБД и механизм модульности данных позволяют эффективно реализовать параллельную обработку запросов к различным БД. К одной и той же БД все запросы прикладных программ обрабатываются последовательно, такое решение принято ввиду сложной организации БД и опасности взаимных блокировок запросов, приводящих к изменению одних и тех же данных. Запросы к разным БД по определению выполняют операции над различными данными и потому могут выполняться параллельно.
Поскольку в предложенной модели СУБД реализован гибкий механизм связывания баз, в ИС сложное хранилище данных может быть составлено из десятков баз, обращения к которым могут исполняться параллельно. Пиковая производительность подобной системы достигается, когда запросы к СУБД равномерно распределены на все базы, а сами БД расположены на сервере, где количество процессоров и дисковых носителей информации оптимально для данной конкретной ИС (вплоть до формулы процессор+диск на каждую БД).
Рекурсивный механизм транзакцийДополнительно к предложенной модели данных, технологии связывания баз и архитектуре, в рамках описываемой модели СУБД разработан специальным образом организованный механизм транзакций.
Механизм транзакций заключается в следующем: В любой момент в БД может быть начата транзакция. Изначально ни один атом БД в транзакцию не вовлечен и потому допускает любые операции над ним. При любой операции с атомом в рамках транзакции он становится вовлеченным в нее, и все операции с ним вне транзакции оказываются невозможными. Все изменения в атомах (содержимое и связи) в процессе выполнения транзакции задерживаются в оперативной памяти СУБД и в базу не записываются. При завершении (утверждении) транзакции все изменения вовлеченных в нее атомов записываются в БД. При отмене транзакции все изменения вовлеченных в нее атомов отвергаются, и эти атомы остаются такими же, какими были в момент начала транзакции.
Механизм транзакций допускает вложенность. В рамках транзакции может быть начата новая, вложенная транзакция - она действует аналогично первой транзакции, в нее могут быть вовлечены атомы первой транзакции, но не наоборот. Внешняя транзакция при отмене отвергает все изменения, выполненные во вложенной. Но не наоборот. Количество уровней вложенности не ограничено.
Механизм транзакций допускает параллельность. Это означает, что в одной и той же БД одновременно могут выполняться различные транзакции, они не могут отменять друг друга. Атом не может быть вовлечен в две параллельные транзакции.
Описанный механизм транзакций является важным для решения поставленных задач. Если входящие в ИС прикладные программы ведут работу со сложно организованными данными и в процессе выполнения длительных операций существует вероятность сбоя, механизм транзакций позволяет организовать надежную защиту данных от некорректной модификации в результате не полностью выполненных операций.
ЗаключениеВ докладе описаны основные положения предложенной автором модели СУБД и рассмотрены возможности реализации. Все основополагающие принципы модели реализованы в виде действующего программного комплекса и в результате экспериментов подтверждена работоспособность СУБД и непротиворечивость ее принципов.
Предложенная модель отвечает всем поставленным в работе задачам: - Базовая модель данных позволяет хранить данные произвольной структуры и содержания. Типизация реализует базовые принципы ООП, позволяет осуществлять контроль корректности данных и выполнимости тех или иных операций над ними.
- Механизм связывания БД реализует принцип модульности данных, допускает параллельную обработку запросов к системе БД, допускает создание распределенных ИС.
- Архитектурные решения, предложенные в качестве одного из возможных вариантов построения СУБД, позволяют создавать ИС в масштабах от Intranet до Internet.
- Механизм транзакций дает прикладным программистом возможность создавать ИС высокой надежности. Если при этом СУБД реализована в качестве выделенного сервера и функционирует на надежной аппаратно-операционной платформе, возможно создание постоянно действующих отказоустойчивых систем.
Выражение признательностиАвтор выражает признательность Елашкиной А.В. и Ладыгину Б.Г. за полезные обсуждения и советы в процессе работы над описанной в докладе моделью СУБД.
Русин Александр Олегович, 15.08.2008
|