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.
Это очень очень очень плохая идея, хранить объекты программы 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 предоставила компании высокопроизводительную, распределенную и устойчивую информационную среду.
Александр, вы очевидно молоды и не застали времена того же COM/DCOM/COM+ .
Пытаться вам описать всю боль таких технологий это как устно балет пересказывать.
Цифры что вы привели - ох, лучше бы вы их убрали: это смех даже для реляционных СУБД. Любой комментатор с highload проекта будет ржать в голос.
В школе, где я учился, стояла ЕС1033, в шестом классе у нас было семь часов "информатики" в неделю. PL/1, ЯУЗ. Все мои аккаунты с аватарами. На них видно мой возраст. Как же много людей, не разобравшись, пытается написать всякую фигню )
Цифры производительности с сайта Actian, я написал. У них в клиентах крупнейшие компании мира. Ну напишите в Actian что они дурачки. Только непонятно, кто над кем поржет )
Я не стремился в статье переписать документацию на VOD. с одной стороны она огромна, с другой, на всех не угодишь. Я дал ссылки, думаю, вы там сможете найти интересующую вас информацию.
Статья просто для знакомства с малоизвестной базой и успешным кейсом по ее применению. Ну и про "Объектно-реляционный разрыв". Откуда столько негатива? ))
Александр, есть разница между возрастом и опытом.
В вашем случае видимо как раз первое а не второе.
Иначе я не могу объяснить посыл типа 'У них в клиентах крупнейшие компании мира'
'Статья просто для знакомства с малоизвестной базой и успешным кейсом по ее применению.'
Вендор с базой из 90х может и малоизвестный (я точно также могу рассказать про штук 5 форков glassfish от японских компаний) но подход и технология - известны широко.
'Ну и про "Объектно-реляционный разрыв". Откуда столько негатива? )) '
Наелись потому что. Еще в 90х.
Последняя версия VOD вышла в этом году. А IBM вы бы назвали вендором с базой из 20-х?
Мои работы открыты, я software architect ну с определенным уровнем знаний https://kernel.group/
Дадите ссылки на ваши работы? Ну просто чтобы понять какого уровня вы эксперт ). Вы чем вообще занимаетесь, какими проектами?
Если вы 'software architect' (что уже смешно само по-себе для знаюших людей) - так занимайтесь разработкой, не лезьте в продажи.
Не получится у вас что-то продать через негатив, нельзя вот так 'через губу' кидать какие-то ссылки, доки - типа иди читай мальчик.
Вне зависимости от ваших скиллов, опыта и заслуг .
Смешно это просто выглядит.
Я не лезу, ничего не продаю. Я написал в раздел "Личный опыт", об одном своем кейсе... Вы себя относите к знающим? подтвердите своими кейсами, работами? А то вдруг вы только ЕГЭ по информатике позавчера сдали.. По текстам каментов похоже)
Уважаемый ну ок )) Ты мегауспешный софтвер-архитект оуу ее. Весь в белом.
Я - нищее тупое быдло (в bespoke рубашечке да), кое-как сдавшее ЕГЭ лет 30 назад, остальные тут - сплошь лохи и быдло.
Вот честно, я бы еще понял если бы было честно и четко сказано : да я отрабатываю пайку вендора, впариваю это говно из 90х - так архитекторы и зарабатывают, ничего нового тут нет.
Но блин вот так позориться и поддерживать идеи ОО-базы данных как 'архитектор' , с мотивировкой:
'VOD хороша там, где разработчикам нужно обращаться с экстремально большими объемами сложноструктурированных данных'
...это на уровне 'выйти на сцену и сделать аутофелляцию'.
Те как шоу это конечно запомнят надолго, но въсерьез больше никто и никогда не воспримет.
"VOD хороша там, где разработчикам нужно обращаться с экстремально большими объемами сложноструктурированных данных"
Это сам Actian твердит на всех углах. Идите им рассказывайте про аутофелляцию, тем более видно - вы мастер.
Еще раз, какой же вы .... непонятнливый.
1. Я не продаю VOD, вендор мне за это не платит
2. Более того, В России VOD купить крайне сложно, вендора нет.
3. Занимаясь разработкой, продавать что либо не интересно.
Вывод в статье:
VOD – не «серебряная пуля» (привет Фредерику Бруксу), это просто хороший выбор для многих современных задач, а для некоторых из них - безальтернативно лучший выбор. В то же время, следует понимать, что существует великое множество проектов, где PostgreSQL или MongoDB хватит за глаза. Но если использовать объектно-ориентированный язык программирования, то лучше применять объектную СУБД, хотя и НЕ обязательно VOD.
Вы русский язык понимаете? Я не призываю всех покупать VOD, совершенно точно он для более-менее узкого круга задач. И у него есть аналоги, конкуренты.
У вас в детстве что то случилось? Объектные базы не любите? или немцев? или все вместе?
Комментарий недоступен