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 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 охватывает широкий спектр задач, включая:

Реализованные протоколы

Поддерживаются стандарты и протоколы:

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

Поддержка API

Для разработчиков баз данных и системных интеграторов 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 в семантическую паутину

Смежные области технологий

Управление данными

  • Система управления реляционными базами данных
  • Список СУБД
  • Сравнение объектно-реляционных СУБД
  • Сравнение реляционных СУБД

Интеграция приложений, информации и данных в корпоративной среде

Связанные продукты и инструменты

Кроме Virtuoso, OpenLink выпускает:

  • OpenLink Data Spaces — платформа на базе Virtuoso для создания и управления присутствием в семантической паутине/Linked Data с возможностями интеграции данных из социальных сетей, блогов, файловых хранилищ, закладок, вики, электронной почты, фото и новостных агрегаторов, а также множеством собственных распределённых приложений.
  • Universal Data Access Drivers — высокопроизводительные драйверы доступа к данным через ODBC, JDBC, ADO.NET и OLE DB, обеспечивающие прозрачное взаимодействие с корпоративными БД на разных платформах.

Платформы

Virtuoso поддерживается на 32- и 64-битных системах: Windows, UNIX (HP, AIX, Sun, DEC, BSD, SCO), Linux (Red Hat, SUSE) и macOS.

Лицензирование

В апреле 2006 года появилась свободная версия Virtuoso под лицензией GNU GPLv2. Доступны как коммерческие, так и открытые варианты лицензирования[6].

Примечания

Ссылки