Versant Object Database

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 19:00, 15 июня 2019.
Versant Object Database (VOD)
Versant logo.png
Разработчики: Actian
Постоянный выпуск: 9.3 / 13 April 2018 года; 21 months ago (2018-04-13)[1]
Состояние разработки: Активное
Написана на: Java, C, C#, C++, Smalltalk, Python
Операционная система: Кросс-платформенное
Тип ПО: Объектно-ориентированная СУБД
Лицензия: Коммерческая
Веб-сайт actian.com

Versant Object Database (VOD) – это высокопроизводительная транзакционная объектно-ориентированная база данных, соответствующая стандарту ODMG. Она предназначена для архитектуры клиент-сервер и допускает кэширование недавно использованной информации на уровне страниц на стороне сервера и на уровне объектов на стороне клиента. Versant Object Database масштабируема и может быть настроена для архитектуры и производственной среды в соответствии с конкретными требованиями. Изначально разрабатывалась компанией Versant Corporation, которая позже стала называться Actian.

Описание

VOD позволяет разработчикам, использующим объектно-ориентированные языки, транзакционно хранить свою информацию, позволяя соответствующему языку выступать в качестве языка определения данных (DDL) для базы данных. То есть, модель хранения данных идентична модели схемы базы данных. Пример архитектуры БД Versant приведен на рисунке 1.

Рисунок 1 – Пример архитектуры VOD

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

Versant Object Database поддерживает все базовые понятия и концепции объектно-ориентированного подхода такие, как: объект и идентификатор объекта, атрибут и метод класса, иерархия и наследование классов – и, в частности, использует много понятий из объектно-реляционного отображения. Она используется для приложений со сложными моделями доменов и высоким уровнем требований в условиях высокого параллелизма. Она поддерживает объектные модели C++, Java или .NET.

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

VOD содержит следующие стандартные компоненты:

Стандартные компоненты
Компонент Описание
Versant Server Компонент управления сервером и базой данных Versant. Обрабатывает файлы, которые принадлежат одной БД Versant. На платформе UNIX файлы могут также находится на устройствах последовательного доступа.
Versant C++/Java C++/Java интерфейсы – поддерживают все возможности объектной модели. Программа имеет динамический доступ к схеме базы данных, включая информацию о классах, типов данных, связях и т.п.
Versant JDO JDO интерфейс.
Versant Management Center Обеспечивает просмотр данных производительности и аналитических данных о БД Versant в режиме реального времени. Например, предупреждает администраторов о возможных проблемах до того, как будет затронута доступность базы данных. Разработан как клиент RCP на базе Eclipse.

Помимо стандартных, в БД Versant включены дополнительные компоненты:

Дополнительные компоненты
Компонент Описание
Versant AsyncReplication Репликация производственной базы данных.
Versant FTS Отказоустойчивый сервер базы данных высокой доступности.
Versant HABackup Решение для резервного копирования для использования с сервером высокой доступности

Модуль управления объектами (Versant Manager) призван обеспечить управление следующими операциями:

  • кэшированием объектов;
  • исполнением запросов;
  • исполнением длинных транзакций;

Все клиенты подсоединяются к Versant database server используя Versant Network Layer основанный на TCP/IP. Клиенты и сервер БД могут находиться на разных компьютерах, и все компьютеры могут использовать разные операционные системы, например: Sun Solaris на сервере БД, Windows 2000 на машине клиента.

Versant имеет следующие инструменты для выполнения задач администратора: makedb – утилита создания шаблона БД, createdb – утилита создания БД на основе шаблона, stopdb – утилита остановки БД, startdb – утилита запуска БД, vcopydb vbackup, vdbmonitor, vdbadmin – визуальные средства для выполнения копирования баз данных, резервного копирования, мониторинга и администрирования БД.

Система запросов

VOD поддерживает запросы через механизм индексации и выполнения запросов на стороне сервера. Поддержка запросов включает как специфичный Versant-синтаксис языка запросов, так и стандартизированнный. Versant предоставляет возможность запроса в нескольких формах в зависимости от выбранной языковой привязки разработчика. Интерфейс запроса основан на двух основных понятиях: запрос и результат. Запрос описывает различные аспекты, которые определяют результат запроса при его выполнении. Результат представляет собой результат выполнения запроса. Versant C++ использует Versant Query Language (VQL) для определения запросов. Строка VQL, полученная от пользователя, компилируется первой. В результате процесса компиляции создается внутреннее представление запроса. Дескриптор запроса возвращается пользователю, чтобы пользователь мог обратиться к этому запросу позже в приложении. Эта промежуточная структура запроса обрабатывается и отправляется по сети на сервер. На сервере это дерево запросов перестраивается. Дальнейшая обработка выполняется в дереве запросов, это приводит к структуре, которая задает план выполнения запроса. Затем запрос выполняется на основе плана выполнения, и генерируется результат запроса. Этот результат отправляется обратно по сети на внешний интерфейс. Идентификатор, называемый дескриптором результата, представляющий результат запроса, возвращается в приложение. Этот дескриптор можно использовать с новыми API для извлечения значений в результате запроса. Архитектура обработки запросов Versant приведена на рисунке 2.

Рисунок 2 – Архитектура обработки запросов Versant

Versant Query Language (VQL)

VQL позволяет описывать запросы для поиска объектов в базе данных, которые удовлетворяют заданному набору критериев поиска. Пользователь определяет критерии поиска как строку запроса, используя элементы языка VQL. Строка запроса компилируется, и сервер может выполнить полученный скомпилированный запрос. Универсальная поддержка запросов включает большинство основных положений языков реляционных запросов, в том числе: сопоставление с образцом, объединение, операторы множеств, порядок, существование, отчетность, проекции, числовые выражения, индексирование, курсоры и т. д. [Источник 1]

Репликация данных

Versant обеспечивает как синхронную, так и асинхронную репликацию. Versant предоставляет синхронную репликацию базы данных, утилиты архивации с прокруткой вперед и методы интерфейса. Кроме того, позволяется создать собственную схему для асинхронной репликации базы данных с использованием механизмов уведомления о событиях. Хотя синхронная репликация базы данных полезна для обеспечения отказоустойчивости и безопасности данных, асинхронная репликация удобнее для достижения производительности в распределенной среде.

VOD использует асинхронную репликацию для повышения производительности приложений. Также она позволяет копировать объекты сразу в нескольких базах данных. Асинхронная репликация реализована с помощью уведомлений о событиях и функций «перемещение объекта». Недостатком является то, что между обновлением одной базы данных и распространением изменения в другие базы данных будет небольшая задержка.

Versant AsyncReplication предоставляет два режима репликации: по умолчанию и расширенный. Режим по умолчанию использует Versant API для репликации и поддерживает только конфигурацию «Master-Slave». Этот режим подходит для репликации на основе локальной сети, где сеть быстрая и надежная. Расширенный режим обеспечивает репликацию на основе снимков и поддерживает как одноранговые конфигурации, так и конфигурации «Master-Slave». Этот режим подходит для репликации на основе глобальной сети, когда сеть работает медленно и ненадежно. Расширенный режим обеспечивает настраиваемый обмен сообщениями, транспортный механизм, обнаружение и разрешение конфликтов. [Источник 2]

Эволюция схем

Для каждого класса объектов, которые хранятся в базе данных Versant, также сохраняется определение класса. Каждый раз, когда приложения обращаются к объекту, Versant автоматически корректирует структуру объекта в соответствии с текущим определением класса по мере необходимости. Эта функция «отложенного обновления» распределяет стоимость преобразований экземпляров с течением времени и устраняет необходимость останавливать приложения во время выполнения глобальных преобразований.

Обновление не изменяет идентификаторы объектов, поэтому ссылки на затронутые объекты остаются действительными даже после преобразования. Versant предоставляет инструмент schevol, который позволяет выполнять эволюцию активной схемы на стороне сервера. Ниже приведены две утилиты схемы, используемые для эволюции схемы:

  • sch2db - для загрузки определений классов в файле определения схемы в базе данных.
  • schcomp – для создания файла описания схемы и файла определения схемы, если имеется файл реализации.

Все изменения, которые необходимо внести в схему базы данных с помощью sch2db, могут быть переданы в sch2db только через файлы схемы (.sch). Каждый раз, когда определение класса пользователя изменяется или добавляется новый постоянный класс в заголовочные файлы пользователя, файлы схемы должны быть заново сгенерированы с использованием компилятора схемы. [Источник 3]

Следующие изменения могут быть внесены в схему с использованием эволюции схемы:

  • Добавить новый класс в базу данных.
  • Удалить атрибут из класса.
  • Добавить атрибут в класс.
  • Полностью переопределить класс, удалив определение класса в базе данных и добавив текущий.
  • Переупорядочить атрибуты в классе.
  • Переименовать атрибуты в классе.

Персистентность

Базовым классом Versant C++ для всех персистентных классов является класс PObject. Все классы с автономными персистентными экземплярами должны наследоваться от PObject. Большинство классов Versant не являются производными от PObject и не могут иметь автономные персистентные экземпляры. Наиболее важно, что персистентный экземпляр объекта имеет связь с базой данных. Соответственно, экземпляры персистентных классов имеют общее поведение, не обеспеченное переходными классами. В дополнение к PObject, следующие классы Versant, поддерживают персистентность:

Классы, поддерживающие персистентность
Класс Описание
Container Группирует известные объекты для быстрого чтения и записи.
VString Содержит виртуальные методы сравнения.
PVirtual JDO интерфейс.
Collections Массивы, словари, списки и наборы

Транзакции

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

Применение

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

Основные особенности

Главными отличиями рассматриваемой базы данных являются[Источник 4]:

  • Прямая работа с объектами, представленными языками C++, Java и .NET;
  • Динамичная схема БД;
  • Поддержка нескольких сессий/многопоточность/кластеризация;
  • Сквозная архитектура работы с объектами (в памяти БД они представлены также, как в памяти обрабатывающего их языка).
  • Поддержка сложных моделей данных;
  • Инструменты с графическим интерфейсом: Administration Console, Object Inspector, Monitoring Console, Developer Console;
  • Редактирование схемы «на ходу» без перерывов в работе;
  • Двойное кэширование;
  • Прямой переход между сохраняемыми объектами;
  • Расширенные возможности блокирования;
  • Поддержка динамических запросов благодаря языку запросов Versant (VQL);
  • Контроль над распределенными транзакциями;
  • Доступ к объектам через SQL, JDBC/ODBC.

Выводы

VOD используется в областях, требующих управления быстрыми алгоритмами, которые нуждаются в высокой пропускной способности записи и имеют сложные объектные отношения и иерархии наследования. VOD подойдет пользователям, которым нравится понятие чистой объектной ориентированности, и которые предъявляют высокие требования к производительности/удобству/запросам.

Источники

  1. Versant C++ Programmer's Guide // Actian. Дата обновления: 12.04.2017. URL: https://supportactian.secure.force.com/help/servlet/fileField?id=0BEf3000000PLQD (дата обращения: 13.04.2018)
  2. Versant AsyncReplication User's Guide // Actian. Дата обновления: 12.04.2017. URL: https://supportactian.secure.force.com/help/servlet/fileField?id=0BEf3000000PLQt (дата обращения: 13.05.2018)
  3. VERSANT Database Fundamentals Manual // Actian. Дата обновления: 07.2005. URL: http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=71EF02AC196AF6F89D89313AE5E97BD7?doi=10.1.1.114.5088&rep=rep1&type=pdf (дата обращения: 13.04.2018)
  4. Actian Versant Datasheet // Actian. Дата обновления: 2013. URL: https://supportservices.actian.com/images/products/versant/Actian_Versant_Datasheet_VOD8_FINAL.pdf (дата обращения: 03.04.2018)

Примечания

  1. Последняя версия Versant Object Database на момент написания данной статьи в соответствии с документацией Versant Object Database.