Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

Versant Corporation [ править ]

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

История [ править ]

Компания была основана доктором Ки Онгом в августе 1988 года как "Object Sciences Corporation". Онг ранее работал с системой управления реляционными базами данных с открытым исходным кодом Ingres . Примерно в это же время стало популярным объектно-ориентированное программирование (ОО), и компания использовала исследования, проведенные в Университете Висконсина [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 ++ и Smalltalk . В 1995 году Versant представила поддержку языка программирования Java, а затем в 2009 году для C # и платформы .NET . В 2012 году Versant представила Versant JPA, интерфейс, совместимый с Java Persistence API 2.0 для своей объектной базы данных, с технической предварительной версией аналитического продукта, включая поддержку Apache Hadoop .

В конце 2012 года, после отклонения предложения UNICOM Systems 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 ++ , Java и .NET
  • Поддержка стандартов, например JDO
  • Бесшовное распространение базы данных
  • Высокая доступность корпоративного класса
  • Динамическая эволюция схемы
  • Низкое администрирование
  • Многопоточность , мультисессия
  • Сквозная объектная архитектура
  • Детальный контроль параллелизма

Поддерживаемые языки [ править ]

Основные поддерживаемые языки - Java , C # и C ++ . Versant также поддерживает языки Smalltalk и Python .

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

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

Versant Query Language [ править ]

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

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

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

Индексирование [ править ]

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

Поддержка больших коллекций [ править ]

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

Эти большие коллекции создаются и используются так же, как и другие классы постоянных коллекций. Интерфейс также соответствует соответствующим языковым конструкциям. Например, стандартная библиотека шаблонов C ++ , итераторы Java , перечисления 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. Результатом является управление версиями схемы базы данных.

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

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

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

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

  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 (моделирование отношений сущностей) до передачи сообщений в ORB и т. Д. XA API позволяет базе данных Versant действовать как ресурс, управляемый внешней транзакцией. отслеживать согласованные изменения как в Versant, так и в реляционных базах данных в одном транзакционном контексте.

ORM [ править ]

Versant может взаимодействовать с реляционными базами данных с использованием технологии Java ORM, такой как JDO ( объекты данных Java ) и Hibernate 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. Например, он предупреждает администраторов о потенциальных проблемах до того, как это повлияет на доступность базы данных. Он разработан как клиент RCP на основе Eclipse .
  • 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. ^ a b «Выручка в размере 6,0 миллионов долларов за 4 квартал 2008 года / Versant приобретает бизнес баз данных db4objects / объявлена ​​программа обратного выкупа акций» . Пресс-релиз . 4 декабря 2008 года Архивировано из оригинала 21 декабря 2008 года . Проверено 8 декабря 2013 года .
  4. ^ Чжоу, HT; Девитт, Дэвид Дж .; Кац, Рэнди Х .; Клуг, Энтони С. (октябрь 1985 г.). «Дизайн и реализация системы хранения в Висконсине» . Программное обеспечение: практика и опыт . 15 (10): 943–962. DOI : 10.1002 / spe.4380151003 . S2CID 40376932 . 
  5. ^ Versant Object Technology (30 апреля 1997). «Заявление о доверенности» . График 14А . Комиссия по ценным бумагам и биржам США . Проверено 4 декабря 2013 года .
  6. ^ a b Versant Object Technology (28 марта 1997 г.). «Годовой отчет за финансовый год, закончившийся 31 декабря 1996 г.» . Форма 10-КСБ . Комиссия по ценным бумагам и биржам США . Проверено 4 декабря 2013 года .
  7. ^ Versant Object Technology (30 апреля 1998). «Заявление о доверенности» . График 14А . Комиссия по ценным бумагам и биржам США . Проверено 4 декабря 2013 года .
  8. ^ a b Versant Corporation (14 января 2009 г.). «Годовой отчет за финансовый год, закончившийся 31 октября 2008 года» . Форма 10-К . Комиссия по ценным бумагам и биржам США . Проверено 4 декабря 2013 года .
  9. ^ "Благодарение за Versant и Actian" . Блог . Enterprise Strategy Group. 26 ноября 2012 . Проверено 3 декабря 2013 года .
  10. ^ Doug Henschen (1 февраля 2013). «Actian строит мини-империю больших данных» . Информационная неделя . Проверено 3 декабря 2013 года .
  11. ^ [3] « Новая версия Versant JPA обеспечивает множественную аналитику NoSQL », журнал доктора Добба. 28 октября 2012 г.
  12. ^ [5] « Учебное пособие по FastObjects », YouTube. 9 января 2012 г.
  13. ^ [6] Веб-сайт Db4o [1] Архивировано 27 декабря 2012 г.на Wayback Machine
  14. ^ "Poleposition, эталонный тест базы данных с открытым исходным кодом" , polepos.org . Проверено 24 февраля 2011 года.
  15. ^ «Повышение производительности IBM WebSphere Application Server с помощью Versant enJin» , ibm.com . Проверено 6 октября 2010 года.