Versant Object Database — объектная СУБД родом из Гамбурга

Известная в мире, но неведомая в наших краях.

Что такое VOD?

Versant Object Database, она же VOD, она же Actian NoSQL Object Database – это Объектная СУБД, продукт сумрачных немецких гениев. VOD позволяет хранить информацию в виде объектов C++ или Java в том же виде, в котором эти объекты применяются в программе, исполняемой в оперативной памяти (memory-like model).

В этом ключевое отличие объектных СУБД от реляционных, которые хранят данные в таблицах.

VOD и VOD JPA – это флагманские продукты компании Versant, а позднее и Actian. В линейке продуктов компании есть и другие СУБД, в том числе объектные: FastObjects, db4o, и реляционные: Ingres (Actian X), Vector, гибридные: Actian Zen.

Немного об объектных СУБД

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

Объектно-реляционный разрыв

Несоответствие объектно-ориентированного языка программирования и реляционного хранилища данных хорошо изучено и получило название «объектно-реляционный разрыв» (The impedance mismatch).. Для желающих погрузиться в проблему импеданса - ссылка.

Мэри Лумис, один из идеологов СУБД Versant, очень кратко и точно сформулировала актуальность объектного подхода к базам данных: «Модель данных более близка сущностям реального мира. Объекты можно сохранить и использовать непосредственно, не раскладывая их по таблицам. Типы данных определяются разработчиком и не ограничены набором предопределенных типов».

Для иллюстрации, приведу пример из горных лыж. Абсолютное большинство лыж в магазинах имеет боковой вырез. Если упрощенно, этот вырез определяет «любимый» радиус поворота лыжи (указан на ней в метрах). Такая лыжа создана для техники катания «карвинг», для совершения резаных поворотов. «Тошнить» на ней боком по склону, мягко говоря, неудобно. Тем не менее, большинство пользователей этих лыж ничего не знает о «карвинге» и ездят на них как получится: плугом, в боковом скольжении или несутся «ломом» вниз по склону. Для такой «техники» больше подошли бы лыжи без выреза, но они много лет считаются устаревшими и не продаются.

Аналогично с разработкой ПО, если нужно быстро, безопасно и стабильно карвить (использовать объектно-ориентированный язык программирования), то понадобится объектная СУБД (лыжи с боковым вырезом).

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

Чтобы прикрыть несоответствие языка разработки и хранилища данных, пользователи и производители стремительно устаревших реляционных СУБД придумали технологию объектно-реляционного преобразования (ORM), которая автоматически делает «сборку и разборку» объектов для реляционных баз, служит мостиком между базой и приложением. Однако выяснилось, что эта технология ограничена значимыми накладными расходами на это преобразование, снижающими производительность. Выиграть в скорости разработки тоже не получилось, проблемой стали постоянные переделки при изменении схемы базы данных. Все это увеличивало стоимость разработки и обслуживания готовых систем.

Очевидно, что для создания ПО в 2021 году стоит использовать объектно-ориентированный язык программирования вместе с true-объектной СУБД, сохраняющей объекты языка в «нативном» виде. VOD является такой СУБД, а язык разработки (C++ или Java) одновременно является языком описания данных (DDL), и это значит, что вместо самого популярного языка описания данных SQL, разработчикам доступна вся мощь таких языков как С++ и Java.

Области применения

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

  • процессинг сделок, fraud-менеджмент и анализ рисков на крупнейших биржах, торговых площадках, в банках;
  • управление сетями основных мировых телекоммуникационных операторов;
  • анализ больших данных в режиме реального времени;
  • системы резервирования/продажи билетов крупнейших авиакомпаний и гостиничных сетей;

  • массовые многопользовательские онлайн-игры;

  • научные симуляции сложных процессов;

  • социальные сети.

Почитать о примерах применения VOD можно здесь или посмотреть Use Cases на сайте Actian. Результаты сравнительных тестов VOD доступны там же.

Личный опыт

Мы применили VOD при создании BIL24 – платформы для участников рынка зрелищных мероприятий. BIL24 написана на Java и ориентирована как на покупателей, использующих для покупки билетов сайты, мобильные приложения, социальные сети, так и на продажи билетов через традиционные кассы.

Кажущаяся простота задачи «продажа билетов на любое событие» – обманчива. Билеты бывают разных видов: с указанием мест и входные (без мест), они продаются по разным ценовым категориям (ближе или дальше от сцены), по разным тарифам (взрослый, детский), могут иметь множество ограничений, в том числе и по емкости «места проведения», например, экскурсионного судна. Билеты связаны с местами, на которые они выпущены, места принадлежат площадке (концертному залу, стадиону) с одной стороны, и сеансу, который принадлежит событию – с другой. Сеансы одного события могут происходить на разных площадках, в разных городах. У билетов, мест, сеансов, событий и площадок есть множество параметров, часто взаимосвязанных. Всю эту кавалькаду сущностей необходимо перевести в объекты и работать с ними так, чтобы обеспечить продажу билетов максимальному числу покупателей в режиме реального времени. Необходимо продавать быстро и надежно, даже если в эти секунды десятки тысяч людей одновременно хотят приобрести билеты на аншлаговые спортивные или развлекательные события, которые пройдут на крупнейших стадионах страны.

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

Проект BIL24 успешно реализован. Платформа заняла ключевое положение на билетном рынке России и продолжает развиваться, оснащаясь новым функционалом. Оглядываясь назад, понятно, что код BIL24 создавался в кратчайшие сроки. При использовании реляционной СУБД, затраты на разработку были бы в 2 – 2,5 раза больше.

В итоге

VOD – не «серебряная пуля» (привет Фредерику Бруксу), это просто хороший выбор для многих современных задач, а для некоторых из них - безальтернативно лучший выбор. В то же время, следует понимать, что существует великое множество проектов, где PostgreSQL или MongoDB хватит за глаза. Но если использовать объектно-ориентированный язык программирования, то лучше применять объектную СУБД, хотя и не обязательно VOD.

0
67 комментариев
Написать комментарий...
Alex Chernyshev

Это очень очень очень плохая идея, хранить объекты программы as-is в любом постоянном хранилище.
По очень простой причине:  программы меняются.  Достаточно поле добавить в класс объекта, который сохранен в хранилище в сериализованном виде и все - больше вы ваши данные напрямую не достанете (без кастомной сериализации) тк разойдется структура данных (класс) и сами данные.

Поэтому место вашему VOD на свалке истории, рядом с COM+, CORBA и подобными ужасами.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Alex Chernyshev

Это общая проблема ПОДХОДА, не технологии.  Максимум что конкретное решение может тут предложить: 'ленивая сериализация', те с пропуском несоответствий либо версионность объектов.  Чтобы понять ужас второго - представьте что у вас обьектная база это часть системы и у entity объектов есть под десятке версий одновременно. Представьте как весело это отлаживать.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Александр Орлов
Автор

Первая разумная мысль в каментах, "суть технологии мне не понятна вообще." Спасибо. 

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Александр Орлов
Автор

Первый раз на vc.ru вижу чтобы "рекламная техническая вода" вызвала такое бурление ... мнений )

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Лиза Орлова

Вообще-то я его дочь, но спасибо))

Ответить
Развернуть ветку
Александр Орлов
Автор

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

Я при этом вас не минусую, ну может один камент. Не считаю, что нужно это делать, это же ваша точка зрения и все такое. 

Ответить
Развернуть ветку
Александр Орлов
Автор

Если задуматься, ну есть VOD, объектная модель данных. Есть десятки статей в википедии про все это. И  не я  это все придумал.  Ну идите пишите в обсуждения этих статей, как это все плохо, как все неправы. ну мало ли чего в мире есть, что можно описать.  Но откуда такое подсознательное неприятие именно этого? Что с вами не так? 

Ответить
Развернуть ветку
Ray Smith

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

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Александр Орлов
Автор

А я вроде читаю, что вы  с первых каментов перешли на мою личность, и уже на маму, и послали). Не? 

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Александр Орлов
Автор

автор люто ненавидит... откуда взяли что я ненавижу, да еще и люто, почудилось?  SQL прикольная штука, но древняя. Все устаревает. 

Ответить
Развернуть ветку
Александр Орлов
Автор

Текст о реальном кейсе. Странно, как там можно заменить все названия.   У вас свое мнение, я уже понял )). Я считаю, что много разных мнений - это хорошо. Ну без мата и посылок.  

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Александр Орлов
Автор

А кстати, вы с чем тут не согласны? Что "для создания ПО в 2021 году стоит использовать объектно-ориентированный язык программирования"?

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Александр Орлов
Автор

Понятно.

Ответить
Развернуть ветку
Александр Орлов
Автор

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

У вас другое мнение, ну ок... Вы написали. Народ почитает. Все хорошо. 

Ответить
Развернуть ветку
Александр Орлов
Автор

Отлаживать легко и просто, писать код с VOD приятно. Вы пользовались? я - да. Не верите мне, почитайте истории клиентов ACtian. Устроено там не так, как вы написали. Почитайте доку. 

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

Ответить
Развернуть ветку
64 комментария
Раскрывать всегда