База данных Versant Object - Versant Object Database

База данных Versant Object
Логотип
Разработчики)Versant Corporation
Стабильный выпуск
9.3[1] / 12 апреля 2017 г. (2017-04-12)
Написано вЯва, C, C #, C ++, Болтовня, Python
Операционная системаКроссплатформенность Solaris, Linux, Windows (от NT до Vista), AIX, HP-UX (32 и 64 бит для всех платформ)
ТипБаза данных объектов
ЛицензияВсе права защищены
Интернет сайтwww.versant.com

База данных Versant Object (VOD) - это база данных объектов программный продукт, разработанный Versant Corporation.

База данных Versant Object Database позволяет разработчикам использовать объектно-ориентированные языки к транзакционно хранить свою информацию, позволяя соответствующему языку действовать как Язык определения данных (DDL) для базы данных. Другими словами, модель памяти это схема базы данных модель.[2]

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

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

Versant Corporation

Versant Corporation
Дочернее предприятие
ПромышленностьПрограммного обеспечения
Основан1988
Штаб-квартира,
Соединенные Штаты Америки
ТоварыБаза данных объектов
ДоходУвеличивать 25,3 миллиона доллар США (2008)[3]
РодительActian

Versant Corporation была американской компанией-разработчиком программного обеспечения, специализирующейся на NoSQL системы управления данными. Продукты Versant используются в таких отраслях, как телекоммуникации, оборона, науки о жизни, биомедицина, транспорт, финансы и онлайн-игры. Versant была основана в Менло-Парк, Калифорния (США) в 1988 г. Штаб-квартира находилась в г. Редвуд-Сити, Калифорния. Инженерные бригады располагались в Гамбург, Германия и Редвуд-Сити.

История

Компания была основана доктором Ки Онгом в августе 1988 года как "Object Sciences Corporation". Онг ранее работал с системой управления реляционными базами данных с открытым исходным кодом. Ingres. Примерно в это время объектно-ориентированного программирования (OO) стали популярными, и компания использовала исследования, проведенные в Университет Висконсина[4] для коммерческой системы баз данных, дополняющей ОО-языки. В состав первоначальной исполнительной команды компании входили Майкл Сишолс (генеральный директор), доктор Кео Онг (технический директор), Джон Хьюз (вице-президент по продажам), доктор Мэри Лумис (вице-президент по услугам) и Сьюзан Дикерсон (вице-президент по развитию бизнеса).

В начале 1990 года компания была переименована в Versant Object Technology. В апреле 1993 года Дэвид Бэнкс занял пост генерального директора.[5] 18 июля 1996 года у Versant первичное публичное размещение акций (IPO) на NASDAQ биржа и торгуется под символом VSNT.[6] Компания привлекла 14,9 млн долларов в результате IPO и базировалась в Менло-Парк, Калифорния в то время, но переехал в Фремонт, Калифорния в 1997 г.[6]В январе 1998 года Ник Ордон сменил Бэнкса на посту генерального директора.[7] 15 июля 1998 г. компания была снова переименована в Versant Corporation.[8]

В марте 2004 года Versant приобрела Poet Software GmbH, европейскую компанию, ориентированную на рынок продуктов Windows, которая торговалась на Франкфуртская фондовая биржа. В 2005 году Йохен Витте, президент Poet Software, занял пост генерального директора Versant Corporation. В августе 2005 г. обыкновенные акции составляли 1 к 10. обратное дробление акций. 1 декабря 2008 года Versant приобрела активы подразделения программного обеспечения для баз данных компании Servo Software, Inc. (ранее называвшейся db4objects, Inc.). Она разработала технологию встроенных баз данных с открытым исходным кодом. db4o.[3][8]

Первоначальная реализация Versant была нацелена на C, C ++ и Болтовня пользователей. В 1995 году Versant представила поддержку Язык программирования Java а затем в 2009 г. C # и .СЕТЬ Платформа. В 2012 году Versant представила Versant JPA, Java Persistence API 2.0 совместимый интерфейс для своей объектной базы данных, с техническим предварительным просмотром аналитика продукт в том числе Apache Hadoop поддерживать.

В конце 2012 г., отклонив предложение Системы UNICOM Inc., Versant Corporation объявила, что ее приобретает Actian Corporation, коммерческий разработчик Ingres и реляционная база данных, Vectorwise. Приобретение рекламировалось с использованием маркетингового термина большое количество данных.[9]Он закрылся в декабре за 37 миллионов долларов.[10]

Товары

Помимо Versant Object Database, Versant продала еще два коммерческих объектно-ориентированные системы управления базами данных (OODBMS), «Versant JPA» и «Versant FastObjects». Кроме того, Versant предлагает базу данных с открытым исходным кодом "db4o ".

  • Versant JPA - это совместимый с JPA 2.0 интерфейс для своей объектной базы данных, который включает техническую предварительную версию аналитической платформы, включая поддержку Hadoop.[11] Он доступен как сервер и SDK для использования с Windows и Linux операционные системы.
  • Versant FastObjects - это удобная для разработчиков объектно-ориентированная альтернатива реляционной базе данных для постоянства .NET.[12]
  • "db4o "- это встроенная объектная база данных с открытым исходным кодом для Java и .NET. db4o написана на Java и переведена на C # с помощью инструмента с открытым исходным кодом Sharpen.[13]

Приложения

Versant продавала продукты для сложных моделей данных, приема большого количества данных и одновременного использования большого количества пользователей. Versant находит применение в отраслях, где эти характеристики играют важную роль: глобальные торговые платформы для крупнейших мировых фондовых бирж; управление сетью для крупнейших мировых поставщиков телекоммуникационных услуг; разведывательная аналитика для оборонных ведомств; системы бронирования для крупнейших авиакомпаний / гостиничных компаний; аналитика управления рисками для банковских и транспортных организаций; массивные многопользовательские игровые системы; сетевая безопасность и обнаружение мошенничества; переносимость местного номера; расширенное моделирование; и социальные сети.

Основные характеристики

Поддерживаемые языки

Основные поддерживаемые языки: Ява, C # и C ++. Versant также имеет языковую поддержку для Болтовня и Python.

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

VOD поддерживает запросы через механизм индексации и выполнения запросов на стороне сервера. Поддержка запросов включает как специфический для Versant, так и основанный на стандартах синтаксис языка запросов. Versant предоставляет эту возможность запроса в нескольких формах в зависимости от языковой привязки, выбранной разработчиком. Например, в Ява VOD предоставляет VQL (Versant Query Language), JDOQL, EJB QL и OQL. В C ++ Versant предоставляет VQL и OQL, с C # поддержка VQL, OQL и LINQ. VOD выполнит оптимизацию выполнения запроса на основе доступных индексов атрибутов. Versant также поддерживает стандартные SQL запросы к базе данных Versant, используя ODBC /JDBC драйверы.

Версантный язык запросов

Собственный язык запросов Versant (VQL) похож на SQL92. Это строковая реализация, которая позволяет параметризованную привязку времени выполнения. Разница в том, что вместо таблиц и столбцов он нацелен на классы и атрибуты.

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

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

Индексирование

VOD поддерживает индексы для больших коллекций. Однако не обязательно иметь коллекцию, чтобы иметь запрашиваемый объект с пригодным для использования индексом. В отличие от других реализаций OODB, любой объект в базе данных Versant индексируется и доступен через запрос. Индексы могут быть помещены в атрибуты классов, и эти классы затем могут быть целью операции запроса. Индексы могут быть хэш, B-дерево, уникальный, составной, виртуальный и может быть создан онлайн либо с помощью утилиты, либо через графический интерфейс пользователя, либо через API вызов.

Поддержка больших коллекций

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

Эти большие коллекции создаются и используются так же, как и другие классы постоянных коллекций. Интерфейс также соответствует соответствующим языковым конструкциям. Например, C ++ Стандартная библиотека шаблонов, Ява итераторы, C # перечислимые и т. д.

Коллекции объектов по умолчанию - это только набор идентификаторов объектов. Таким образом, они могут быть очень большими, но при этом иметь небольшой объем резидентной памяти. Для итерации коллекции объекты разыменовываются в пространстве клиентской памяти либо в настраиваемом пакетном режиме, либо по одному. Запрос к коллекции может выполняться с помощью оператора «in» (или других операторов на основе набора, таких как subset_of, superset_of и т. Д. .) без загрузки коллекции в пространство памяти клиента.

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

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

Высокая доступность

Versant выполняет синхронную репликацию пар. Полная репликация для обеспечения отказоустойчивости требует установки только одного файла конфигурации, в котором указаны имена узлов-партнеров: новые соединения обнаруживают наличие файла реплики и при подключении проверяют файл на наличие пары партнеров и, если она существует, подключаются к обоим партнерам. Это может быть распределенная база данных, поэтому существует много пар приятелей. Затем все транзакционные изменения синхронно фиксируются процессами сервера партнерской базы данных.

Если какая-либо из баз данных в партнерской паре становится недоступной, текущие транзакции обрабатываются так, чтобы не было сбоя фиксации, вместо этого текущие транзакции при сбое узла будут продолжаться на узле, который все еще активен в партнерской паре. . На машине, где узел все еще активен и обрабатывает транзакции, запустится новый процесс, который отслеживает, чтобы база данных, в которой произошел сбой, снова стала доступной. Как только ранее отказавший узел оживает, процесс мониторинга начинает репликацию всех изменений, произошедших с момента сбоя, чтобы вернуть двух партнеров обратно в состояние полной синхронизации. После полной синхронизации устанавливается флаг, и при следующей транзакции клиенты возвращаются к полной синхронной работе. Все это осуществляется без участия пользователя.

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

Распределение

Распространение осуществляется с помощью Versant Asynchronous Replication (VAR), управляемой каналом, господин-раб или же пиринговый структура репликации с основанный на правилах обнаружение и разрешение конфликтов.

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

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

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

Интеграция

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

Архитектура распределения данных

VOD выполняет распределенную обработку данных с помощью распределенного протокол двухфазной фиксации через многосвязные базы данных. В этом процессе VOD использует внутренний диспетчер ресурсов, который обрабатывает распределенные транзакции. Versant также поддерживает протокол XA, позволяющий внешним мониторам транзакций управлять транзакционным контекстом, например, подключаться к CORBA или же J2EE сервер приложений.

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

Идентификаторы объекта гарантированно будут уникальными для всех физических узлов. Объекты можно «перемещать» с одного физического узла на другой без каких-либо изменений кода приложения.

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

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

Существующие объекты в базе данных медленно развиваются до последней версии схемы. На самом деле ни один объект не развивается, если он не создан грязный (отмечен для обновления) и сохранен обратно в базу данных. В общем, это означает, что приложение с новой схемой не вызовет эволюции, за исключением новых и обновленных объектов.

Существуют утилиты, которые могут «сканировать» базу данных, медленно развивая все экземпляры до последней версии, захватывая их наборы, помечая их как грязные и фиксируя. Иногда это требуется для встроенных систем или систем реального времени, где необходимо оптимизировать производительность и пространство.

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

Процесс идет следующим образом:

  1. обновляются определения классов, то есть добавляются новые подклассы, добавляются атрибуты, переименовываются атрибуты, удаляются атрибуты и т. д. и выполняется повторная компиляция. Когда приложение подключается к базе данных Versant, будет обнаружено несоответствие версии схемы, и вы обычно получите сообщение об ошибке, если не предпримете каких-либо действий, чтобы избежать несоответствия.
  2. Несоответствия схемы можно избежать, используя ряд методов.
    1. можно использовать служебную программу для описания новой схемы в базе данных. Утилита покажет список несовместимостей и спросит, как вы хотите их устранить. Ваши действия будут зависеть от того, находитесь ли вы в стадии разработки, контроля качества, производства и т. Д. Несмотря на это, также возможны такие действия, как удаление существующего класса, развитие версии схемы и сохранение всех существующих объектов, переименование и повторный тип и т. Д.
    2. процесс эволюции можно автоматизировать с помощью опций подключения. Обычно это используется в режиме разработки и позволяет схеме автоматически устранять любые несоответствия при подключении и продолжать сохранять существующие объекты.
    3. конкретные API могут использоваться для динамического развития схемы базы данных. Это сложная тема, включающая так называемые классы среды выполнения Versant. По сути, вы можете создать полностью динамическую структуру схемы для базы данных, чтобы новые классы и атрибуты могли создаваться на лету.
  3. Если клиенты со старой схемой продолжают работать с базой данных, для параметра load_schema_mapping в файле профиля приложения должно быть установлено значение true.
  4. При желании можно запустить служебную программу для обхода базы данных и принудительного переноса версий всех существующих экземпляров.

Общие рекомендации по развитию схемы состоят в том, что любые изменения схемы могут быть внесены и существующие экземпляры сохранены без написания специального кода эволюции, за исключением двух вещей:

  1. Изменения в середине иерархии наследования. Вставка нового класса в середину иерархии невозможна без потери существующих объектов, если только пользовательский код не написан для выполнения этой операции в серии шагов.
  2. Несовместимый тип изменяется, например, Array на String.

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

Жизненный цикл постоянного объекта

Жизненным циклом загрузки объекта можно управлять на основе варианта использования.

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

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

После того, как объект загружен и заблокирован, он остается в кэше клиента с эквивалентной блокировкой на сервере до тех пор, пока не произойдет одно из ряда событий.

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

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

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

Другие возможности включают вызовы API, которые приводят к явному освобождению объекта, например вызов обновления или вызов освобождения.

Есть много способов изменить поведение по умолчанию. На самом деле они обычно используются для настройки производительности в зависимости от варианта использования. Например, если вы собираетесь перебрать коллекцию из 1000 объектов, вам не нужно выполнять 1000 RPC. Предоставление коллекции ссылок на вызов groupRead будет использовать один RPC и загружать все объекты. Точно так же вы можете вызвать getClosure, который будет использовать поведение groupRead для загрузки всех объектов, на которые есть ссылки, в графике от начальной точки до указанного вами уровня достижимости. Кроме того, у запросов есть опции для установки блокировки и загрузки наборов результатов, а не только для ссылок или использования курсоров. Существуют API для явной загрузки объектов в кеш и установки более высоких уровней блокировки, чем значения по умолчанию для соединения и т. Д.

Достижение настойчивости

Для пользователей C ++ Versant требует, чтобы самый верхний класс в иерархии наследования унаследовал от базового класса «PObject», который обрабатывает операции с базой данных.

Затем идет настройка файла, schema.imp, который объявляет, какие классы в модели должны быть постоянными, и этот файл используется на этапе предварительной компиляции, где необходимая магия Versant[требуется разъяснение ] добавлен в постоянные классы. Наконец, получившийся schema.cxx файл компилируется и связывается с приложением.

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

При использовании Java или .NET эта же процедура, описанная выше для C ++, выполняется с использованием улучшения постобработки байтового кода. Один создает файл, в котором объявляется, какие классы должны быть постоянными, а затем использовать служебную программу, API или интеграцию IDE для улучшения классов перед запуском или отладкой.

Versant предоставляет другие API Java на основе стандартов JDO и JPA. В этих версиях API система придерживается стандартов, определенных для объявления сохраняемости, будь то какой-либо XML или аннотация. Затем улучшение выполняется с помощью служебной программы (аналогично .NET) или, чаще, с помощью подключаемого модуля Eclipse или Microsoft. Интеграция Visual Studio в процессе сборки.

Интеграция с реляционными базами данных

Большой процент клиентов Versant в той или иной форме интегрируется с реляционными таблицами. Это может быть выполнено двумя способами в зависимости от требований, таких как: онлайн / офлайн, пакетный, транзакционный и т. Д.

XA

Versant поддерживает Протокол XA для распределенных транзакций. Это позволяет участвовать в распределенных онлайн-транзакциях с реляционными базами данных. Взаимодействие с реляционными таблицами может принимать различные формы от пользовательского кода до ORM решения для серверов приложений J2EE (моделирование отношений сущностей) для передачи сообщений ORBs и т. д. XA API позволяет базе данных Versant действовать как ресурс, управляемый внешним монитором транзакций, координирующим изменения как в Versant, так и в реляционных базах данных в одном и том же транзакционном контексте.

ORM

Versant может взаимодействовать с реляционными базами данных с помощью технологии Java ORM, такой как JDO (Объекты данных Java ) и Спящий режим JPA. Эти основанные на стандартах реализации имеют возможность отсоединять объекты от их транзакционного контекста, а затем присоединять их к другому соединению. Существуют ограничения в том, что Versant требует, чтобы приложение использовало концепцию, известную как идентификация базы данных, чтобы репликация работала с отношениями без изменений. Versant не поддерживает ORM-форму идентификации приложения ни в чем другом, кроме отключенной формы данных.

XML

Versant имеет инструменты, позволяющие импортировать и экспортировать XML данные. Например, пакетная репликация данных может быть выполнена путем экспорта объектов из базы данных Versant как XML, при необходимости применяя XSLT преобразовать и затем импортировать в реляционные таблицы. Возможно и обратное направление. В Java наиболее распространенным подходом с использованием XML является динамическое воспроизведение информации с помощью JAXB среда выполнения преобразует объекты в форму XML и из нее. При использовании JAXB базе данных Versant необходимо работать только с объектами, а не импортировать XML-форму. По сути, XML, поступающий из реляционных баз данных, преобразуется в объекты во время выполнения с использованием JAXB, а затем эти объекты сохраняются в базе данных Versant.

Пользовательский код

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

Сделки

Versant по умолчанию всегда неявно присутствует в транзакции при подключении к базе данных. Кроме того, VOD поддерживает протокол XA и применяет его к определенным стандартным API, например JDO и JPA которые требуют явного разграничения транзакций. Существует неявная форма транзакции, в которой должно быть объявлено начало / конец транзакции.

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

Стратегии блокировки и кеширования

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

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

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

Масштабируемость

Место хранения

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

Клиенты

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

Спектакль

Versant использует внутренние тесты производительности и масштабируемости для отслеживания и измерения поведения с течением времени между выпусками, исправлениями и поколениями нового оборудования.

Versant провел другие нестандартные мероприятия по тестированию производительности на публичном форуме.[14].[15]

Versant провел тесты 007 в начале 1990-х, но в настоящее время не предоставляет никаких сравнений, потому что нет отраслевых тестов, которые имели бы смысл для объектных баз данных,

Одним из рассмотренных кандидатов был TPC-E, который должен был стать новым стандартным эталонным тестом баз данных OLTP с новыми сложными моделями, которые должны быть репрезентативными для современной вычислительной среды. TPC-E основан на модели финансовой торговой системы. Тем не менее, сравнительных результатов получить не удалось. Причина в том, что TPC определяет требования относительно того, какая часть кода находится в «драйвере» эталонного теста, а какая - в функциональности «базы данных». Однако логический интерфейс драйвера и приложения полностью определяется на уровне данных. Это означает, что при измерении реляционного доступа вы не понесете никаких накладных расходов на отображение в объект C ++. Преобразование необработанных данных в любую форму, необходимую в драйвере для реализации бизнес-логики, полностью выходило за рамки эталонных измерений. Когда дело доходит до базы данных объектов, вам необходимо отменить отображение объектов C ++ в структурах данных драйвера и при этом измерить стоимость этой деятельности как часть контрольных сроков.

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

Дополнительные модули

Versant предоставляет добавить модули для развертывания или доступа к своей объектной базе данных.

  • V / Management Center: V / MC предоставляет в реальном времени данные о производительности и аналитическую информацию о базе данных Versant Object. Например, он предупреждает администраторов о потенциальных проблемах до того, как это повлияет на доступность базы данных. Он разработан как основанный на Eclipse RCP клиент.
  • Versant Compact: обслуживание баз данных в Интернете.
  • Versant FTS: Высокая доступность Сервер базы данных.
  • Versant Async Server: репликация производственной базы данных.
  • Versant HA Backup: решение для резервного копирования с высокой доступностью.
  • Versant SQL: доступ к SQL и отчетность.

Приложения

Обычно «лучший вид приложения» для использования базы данных Versant - это те приложения, которым требуется конкретная база данных приложения онлайн-обработка транзакций природа. Есть определенные характеристики приложений, в которых технология Versant обеспечивает лучшую производительность и масштабируемость, чем традиционная реляционная технология: сложные модели, большой объем данных, большое количество одновременные пользователи.

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

Рекомендации

  1. ^ «Versant - Actian - Действуйте в отношении больших данных». Versant. Получено 18 октября 2012.
  2. ^ «Отчет о продукте TechView: база данных Versant Object», odbms.org. Проверено 6 октября 2010 года. В архиве 17 августа 2013 г. Wayback Machine
  3. ^ а б «Выручка за 4 квартал 2008 года составила $ 6,0 млн. / Versant приобретает бизнес баз данных db4objects / объявлена ​​программа обратного выкупа акций». пресс-релиз. 4 декабря 2008 г. Архивировано с оригинал 21 декабря 2008 г.. Получено 8 декабря, 2013.
  4. ^ Chou, H.T .; Девитт, Дэвид Дж.; Кац, Рэнди Х.; Клуг, Энтони С. (октябрь 1985 г.). «Разработка и внедрение системы хранения в Висконсине». Программное обеспечение: практика и опыт. 15 (10): 943–962. Дои:10.1002 / spe.4380151003.
  5. ^ Versant Object Technology (30 апреля 1997 г.). «Заявление о доверенности». График 14А. Комиссия по ценным бумагам и биржам США. Получено 4 декабря, 2013.
  6. ^ а б Versant Object Technology (28 марта 1997 г.). «Годовой отчет за финансовый год, закончившийся 31 декабря 1996 г.». Форма 10-КСБ. Комиссия по ценным бумагам и биржам США. Получено 4 декабря, 2013.
  7. ^ Versant Object Technology (30 апреля 1998 г.). «Заявление о доверенности». График 14А. Комиссия по ценным бумагам и биржам США. Получено 4 декабря, 2013.
  8. ^ а б Versant Corporation (14 января 2009 г.). «Годовой отчет за финансовый год, закончившийся 31 октября 2008 г.». Форма 10-К. Комиссия по ценным бумагам и биржам США. Получено 4 декабря, 2013.
  9. ^ «Благодарность за Versant и Actian». Блог. Enterprise Strategy Group. 26 ноября 2012 г.. Получено 3 декабря, 2013.
  10. ^ Дуг Хеншен (1 февраля 2013 г.). «Actian строит мини-империю больших данных». Информационная неделя. Получено 3 декабря, 2013.
  11. ^ [3] “Новый Versant JPA обеспечивает множественную аналитику NoSQL, ”Журнал доктора Добба. 28 октября 2012 г.
  12. ^ [5] “Учебное пособие по FastObjects," YouTube. 9 января 2012 г.
  13. ^ [6] Сайт Db4o [1] В архиве 2012-12-27 в Wayback Machine
  14. ^ "Poleposition, эталонный тест базы данных с открытым исходным кодом",polepos.org. Проверено 24 февраля 2011 года.
  15. ^ «Повышение производительности IBM WebSphere Application Server с помощью Versant enJin», ibm.com. Проверено 6 октября 2010 года.