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 и подобными ужасами.

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

Посмотрите на список клиентов, использующих VOD, на их проекты . Хорошая такая свалка ))). Насмешили)
https://kernel.group/actian.html#02

China Telecom управляет клиентской базой в 250 млн. ADSL абонентов. Разработка базы данных для хранения и быстрого доступа к информации абонентов стала для компании огромной проблемой.

Задача

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

Решение

Разработчики China Telecom предложили заменить существующую сложную централизованную реляционную СУБД группой недорогих блейд-серверов с объектной базой данных. Для реализации этого решения China Telecom обратилась к Versant – лидеру в отрасли программного обеспечения для управления объектными базами данных. Технология Versant предоставила компании высокопроизводительную, распределенную и устойчивую информационную среду.

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

Александр, вы очевидно молоды и не застали времена того же COM/DCOM/COM+ .
Пытаться вам описать всю боль таких технологий это как устно балет пересказывать.

Цифры что вы привели - ох, лучше бы вы их убрали: это смех даже для реляционных СУБД.   Любой комментатор  с highload проекта будет ржать в голос.

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

В школе, где я учился, стояла ЕС1033, в шестом классе у нас было семь часов "информатики" в неделю. PL/1, ЯУЗ. Все мои аккаунты с аватарами. На них видно мой возраст. Как же много людей, не разобравшись, пытается написать всякую фигню )

Цифры производительности с сайта Actian, я написал. У них в клиентах крупнейшие компании  мира. Ну напишите в Actian что они дурачки. Только непонятно,  кто над кем поржет )

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

Статья просто для знакомства с малоизвестной базой и успешным кейсом по ее применению. Ну и про "Объектно-реляционный разрыв". Откуда столько негатива? )) 

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

Александр, есть разница между возрастом и опытом.
В вашем случае видимо как раз первое а не второе.

Иначе я не могу объяснить посыл типа 'У них в клиентах крупнейшие компании мира' 

'Статья просто для знакомства с малоизвестной базой и успешным кейсом по ее применению.'
Вендор с базой из 90х может и малоизвестный (я точно также могу рассказать про штук 5 форков glassfish от японских компаний) но подход и технология - известны широко.

'Ну и про "Объектно-реляционный разрыв". Откуда столько негатива? )) '
Наелись потому что. Еще в 90х.

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

Последняя версия VOD вышла в этом году. А IBM  вы бы назвали вендором с базой из 20-х?
Мои работы открыты, я software architect ну с определенным уровнем знаний https://kernel.group/
Дадите ссылки на ваши работы? Ну просто чтобы понять какого уровня вы эксперт ). Вы чем вообще занимаетесь, какими проектами?

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

Если вы 'software architect' (что уже смешно само по-себе для знаюших людей)  - так занимайтесь разработкой, не лезьте в продажи.

Не получится у вас что-то продать через негатив, нельзя вот так 'через губу' кидать какие-то ссылки, доки - типа иди читай мальчик.

Вне зависимости от ваших скиллов, опыта и заслуг .

Смешно это просто выглядит.

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

Я не лезу, ничего не продаю. Я написал в раздел "Личный опыт", об одном своем кейсе... Вы себя относите к знающим?  подтвердите своими кейсами, работами?  А то вдруг вы только ЕГЭ по информатике позавчера сдали.. По текстам каментов похоже) 

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

Уважаемый ну ок ))  Ты мегауспешный софтвер-архитект оуу ее. Весь в белом.  
Я - нищее тупое быдло (в bespoke рубашечке да),  кое-как сдавшее ЕГЭ лет 30 назад, остальные тут - сплошь лохи и быдло.

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

 ...это на уровне 'выйти на сцену и сделать аутофелляцию'.

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

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

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

Еще раз, какой же вы .... непонятнливый. 
1. Я не продаю VOD, вендор мне за это не платит
2. Более того, В России VOD купить крайне сложно, вендора нет.
3. Занимаясь разработкой, продавать что либо не интересно.

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

Вы русский язык понимаете? Я не призываю всех покупать VOD, совершенно точно он для более-менее узкого круга задач. И у него есть аналоги, конкуренты. 

У вас в детстве что то случилось? Объектные базы не любите? или немцев? или все вместе?

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

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

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