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 предоставила компании высокопроизводительную, распределенную и устойчивую информационную среду.

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

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

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