Virtuoso Universal Server
Virtuoso Universal Server — гибридный сервер, сочетающий функции промежуточного программного обеспечения (middleware) и движка базы данных, объединяя возможности традиционной СУБД, ОРСУБД, виртуальных баз данных, работы с RDF, XML, полнотекстового поиска, а также функций веб-сервера приложений и файлового сервера в рамках одной системы. Вместо отдельных серверов для каждой из указанных областей, Virtuoso реализует концепцию «универсального сервера»: многопоточный серверный процесс обслуживает множество протоколов. Открытая версия Virtuoso Universal Server известна также как OpenLink Virtuoso. Разработчиком является компания OpenLink Software; ведущие архитекторы — Кингсли Уи Идехен и Орри Эрлинг.
Что важно знать
| Virtuoso Universal Server | |
|---|---|
| Тип | триплстор, СУБД, сервер приложений, веб-сервер |
| Разработчик | OpenLink Software |
| Написана на | C |
| Операционная система | кроссплатформенная |
| Последняя версия | 7.2.14 (11 ноября 2022) |
| Репозиторий | github.com/openlink/virt… |
| Лицензия | GPLv2[1]; проприетарная |
| Сайт | virtuoso.openlinksw.com |
Структура базы данных
Virtuoso реализует расширенную объектно-реляционную модель, сочетающую гибкость реляционного доступа с поддержкой наследования, динамической типизации данных, позднего связывания и контроля доступа на основе идентичности. База данных Virtuoso включает хранение на физических дисках и в памяти, а также процессы операционной системы, взаимодействующие с хранилищем. Основной процесс слушает указанный порт для HTTP, SOAP и других протоколов.
Virtuoso оптимизирован для поддержки многопоточности операционной системы и многопроцессорных систем. В системе используется единый процесс с регулируемым пулом потоков, обслуживающих клиентов. Несколько потоков могут работать с одним индексным деревом с минимальными помехами. Кэш страниц разделён между всеми потоками; записи из кэша с записями, ожидающими записи, выгружаются на диск в фоновом режиме.
В любой момент база данных поддерживает чистое состояние контрольной точки и дельту — набор подтверждённых или неподтверждённых изменений. Это даёт возможность создавать чистые резервные копии контрольного состояния при одновременных транзакциях с основным состоянием.
Журнал транзакций фиксирует все операции c момента последней контрольной точки. Журналы транзакций могут архивироваться неограниченно долго, что даёт возможность полного восстановления истории изменений.
Для хранения всех таблиц используется единый набор файлов; отдельный набор файлов выделяется для временных данных. Максимальный размер набора файлов — 32 Тбайта (4 млрд × 8 Кбайт страниц).
Virtuoso реализует динамическое блокирование: начиная с блокировок на уровне строк, при необходимости эскалируется до страницы, если транзакция блокирует значительную часть строк страницы или есть история таких блокировок. Эскалация блокировки происходит только при отсутствии других блокировок этой страницы, потому взаимных блокировок не возникает. Virtuoso SQL поддерживает эксклюзивное чтение и настройку уровня изоляции транзакций.
Поддерживаются все четыре уровня изоляции: грязное чтение, чтение с фиксацией, повторяемое чтение и сериализация. Уровень изоляции можно задавать для каждой операции транзакции. Virtuoso может выступать менеджером и/или координатором транзакций в среде Microsoft MS DTC или по стандарту XA.
Virtuoso ORDBMS поддерживает сущностную и ссылочную целостность. Правильность связей между записями обеспечивается следующими ограничениями:
- NOT NULL — если в определении таблицы указано NOT NULL, столбцу обязательно назначается значение.
- Уникальный ключ — значения столбца (или их комбинации) должны быть уникальными; уникальный ключ допускает наличие NULL.
- Первичный ключ — идентифицирует строку таблицы, может состоять из одного или нескольких столбцов, не может содержать NULL.
- Ограничение CHECK — накладывает условие на допустимость вставляемых или изменяемых данных в столбце.
Вся информация о пользовательских объектах хранится в таблицах системного каталога с префиксом db.dba*.
Virtuoso состоит из клиентских и серверных компонентов. В их число входят:
- Драйверы Virtuoso для ODBC, JDBC, ADO.NET и OLE DB
- Conductor — веб-интерфейс администратора базы данных
- Утилиты ISQL (интерактивный SQL) и ISQO
- Документация и учебные материалы
- Примеры
В поставку входят две базы данных: базовая и демонстрационная.
История
Проект Virtuoso возник в 1998 году в результате слияния продуктов OpenLink (middleware) и Kubl RDBMS.
Kubl ОРСУБД относилась к числу СУБД, возникших в Финляндии, как и MySQL, InnoDB и Solid RDBMS/Solid Technologies.
Многие ключевые разработчики Virtuoso, InnoDB и Solid в разное время работали вместе, что помогает проследить развитие СУБД в Финляндии. Хейкки Туури (создатель InnoDB), Ора Лассила (эксперт W3C и Nokia Research в области RDF и семантической паутины), а также Орри Эрлинг (менеджер программы Virtuoso в OpenLink Software) работали в финском стартапе Entity Systems в 1986-88 годах, где разрабатывали среды для Common Lisp и Prolog на ПК.
Позже Орри Эрлинг сотрудничал с компанией VIA International, участвовал в создании объектно-ориентированного слоя доступа к данным на основе LISP для их СУБД-продукта. После закрытия VIA в 1992 году основные разработчики основали Solid Technologies (директор — Артури Тарянне).
Хейкки Туури некоторое время работал в Solid, затем запустил проект InnoDB, впоследствии приобретённый Oracle в 2005 году.
Ок. 1994 года Орри Эрлинг начал работу над собственной СУБД, которая получила название Kubl. Разработка финансировалась группой Infosto Group, издающей крупнейшую бесплатную газетную доску Финляндии, для нужд их онлайн-сервисов, в том числе портала Keltainen Pörssi, который в пиковый период насчитывал 500 тыс. пользователей. База Kubl визуально рекламировалась на сайте с эмблемой «Powered by Kubl».
Тестовая версия Kubl появилась 7 ноября 1996 года[2].
Kubl позиционировалась как быстрая и лёгкая база для встраиваемых решений, оптимизированная на максимальное число транзакций в секунду[3][4]. Продукт имел особенно выгодную цену для пользователей Linux — $199 за лицензию[5].
Технология Kubl стала основой Virtuoso после приобретения её OpenLink Software в 1998 году (инициаторы — Кингсли Уи Идехен и Орри Эрлинг).
Области функциональности
Virtuoso охватывает широкий спектр задач, включая:
- объектно-реляционная база данных (SQL, XML, RDF и текстовые файлы)
- веб-сервисы как вычислительная платформа
- сервер веб-приложений
- система управления веб-контентом (WCMS)
- управление обсуждениями на основе NNTP
- репликация однородных и разнотипных данных
- почтовое хранилище и прокси POP3
- интеграция с DataPortability
Поддерживаются стандарты и протоколы:
HTTP, WebDAV, CalDAV, CardDAV, SOAP, UDDI, WSDL, WS-Policy, WS-Security, WS-ReliableMessaging, WS-Routing, WS-Referral, WS-Attachment, WS-BPEL, SyncML, GData, SPARQL, SPARUL, NNTP
Для разработчиков баз данных и системных интеграторов Virtuoso реализует стандартные клиентские и серверные API: ODBC, JDBC, OLE DB, ADO.NET, ADO.NET Entity Framework, XMLA.
Для веб-разработчиков и издателей поддерживаются стандартные форматы: Atom, RSS 2.0, RSS 1.0, OPML, XBEL, FOAF, SIOC.
Языки запросов
SQL, SPARQL (с расширениями), XQuery (реализация стандартной библиотеки функций не завершена), XPath (только 1.0), XSLT (только 1.0)
DL SQL, XML Schema
Сценарии использования
Virtuoso применяется для решения задач:
- Интеграция корпоративной информации (EII)
- Язык-независимое развёртывание веб-приложений
- Модульное проектирование монолитных приложений с применением SOA
- Веб-сервисы и интеграция корпоративных приложений с поддержкой WS-*
- Управление бизнес-процессами через BPEL
- Генерация семантических хранилищ данных
- Создание платформы для интеграции Linked Data в семантическую паутину
Смежные области технологий
- Система управления реляционными базами данных
- Список СУБД
- Сравнение объектно-реляционных СУБД
- Сравнение реляционных СУБД
- Web 2.0
- Корпоративная сервисная шина
- Сервис-ориентированная архитектура
- Интеграция корпоративных приложений
- Интеграция данных
- Open Semantic Framework
- Веб-сервисы
- Семантическая паутина
- Сравнение ПО для интеграции бизнес-процессов
Связанные продукты и инструменты
Кроме Virtuoso, OpenLink выпускает:
- OpenLink Data Spaces — платформа на базе Virtuoso для создания и управления присутствием в семантической паутине/Linked Data с возможностями интеграции данных из социальных сетей, блогов, файловых хранилищ, закладок, вики, электронной почты, фото и новостных агрегаторов, а также множеством собственных распределённых приложений.
- Universal Data Access Drivers — высокопроизводительные драйверы доступа к данным через ODBC, JDBC, ADO.NET и OLE DB, обеспечивающие прозрачное взаимодействие с корпоративными БД на разных платформах.


