Введение

Компьютерное программное обеспечение Virtuoso Universal Server представляет собой гибридный вид средового обеспечения и движка базы данных, который сочетает в себе функциональность традиционной реляционной системы управления базами данных (RDBMS), объектно-реляционной базы данных (ORDBMS), виртуальной базы данных, RDF, XML, свободного текста, веб-сервера приложений и файлового сервера в одной системе. Вместо того, чтобы иметь выделенные серверы для каждой из вышеупомянутых областей функциональности, Virtuoso является "универсальным сервером"; он позволяет использовать один многопоточный серверный процесс, который реализует несколько протоколов. Свободная и открытая версия Virtuoso Universal Server также известна как OpenLink Virtuoso. Программное обеспечение было разработано OpenLink Software с Кингсли Уйи Идехен и Ори Эрлинг в качестве главных архитекторов программного обеспечения.

Основная система баз данных

Virtuoso предоставляет расширенную объектно-реляционную модель, которая сочетает в себе гибкость реляционного доступа с наследованием, типизацией данных во время выполнения, поздней связкой и доступом на основе идентификации. База данных Virtuoso Universal Server включает в себя физические файлы и процессы операционной системы, которые взаимодействуют с хранилищем. Существует один основной процесс, который имеет слушателей на определенном порту для HTTP, SOAP и других протоколов.

Архитектура

Virtuoso предназначен для использования возможностей поддержки потоковой передачи операционной системы и нескольких процессоров. Он состоит из одного процесса с регулируемым пулом потоков, совместно используемых между клиентами. Несколько нитей могут работать на одном индексном дереве с минимальным вмешательством друг в друга. Один кэш страниц базы данных используется всеми потоками, а старые грязные страницы записываются на диск в качестве фонового процесса. В базе данных всегда имеется чистое состояние контрольной точки и дельта обязательных или не обязательных изменений в этом контрольном состоянии. Это позволяет сделать чистую резервную копию состояния контрольной точки, в то время как транзакции продолжаются в состоянии commit. В журнале транзакций записываются все транзакции, совершенные с момента последней проверки. Файлы журнала транзакций могут храниться и архивироваться в течение неопределенного времени, обеспечивая полную, восстанавливаемую историю базы данных. Для хранения всех таблиц используется один набор файлов. Для всех временных данных используется отдельный набор файлов. Максимальный размер набора файлов составляет 32 терабайта для страниц 4G × 8K.

Закрытие

Virtuoso обеспечивает динамическое блокирование, начиная с блокировки на уровне строк и переходя к блокировке на уровне страниц, когда курсор содержит большой процент строк страницы или когда у него есть история блокировки целых страниц. Эскалация блокировки происходит только тогда, когда никакие другие транзакции не содержат блокировки на той же странице, следовательно, она никогда не блокируется. Virtuoso SQL предоставляет средства для исключительного чтения и для установки изоляции транзакций.

Сделки

Поддерживаются все четыре уровня изоляции: грязное чтение, чтение с обязательным выполнением, повторяемое чтение и сериализация. Уровень изоляции может быть определен операцией за операцией в рамках одной операции. Virtuoso также может выступать в качестве менеджера ресурсов и/или координатора транзакций в рамках распределенного координатора транзакций Microsoft (MS DTC) или стандарта XA.

Целостность данных

База данных Virtuoso ORDBMS поддерживает целостность сущности и референциальную целостность. Virtuoso гарантирует, что отношения между записями в связанных таблицах являются действительными, обеспечивая референтную целостность. Ограничения целостности включают: НЕ НУЛЬ В определении таблицы Virtuoso позволяет данным содержать значение NULL. Это значение NULL на самом деле не является значением и считается отсутствием значения. Ограничение NOT NULL заставляет присваивать значение колонке. Уникальный ключ Уникальность для колонки или набора колонк означает, что значения в этой колонке или набор колонк должны отличаться от всех других колонк или набора колонк в этой таблице. Уникальный ключ может содержать NULL-значения, поскольку они по определению являются уникальными неоцененными значениями. Первичный ключ Первичный ключ похож на уникальные ключи, за исключением того, что они предназначены для уникальной идентификации строки в таблице. Они могут состоять из одной колонки или нескольких колонк. Первичный ключ не может содержать NULL значение. CHECK Constraint Virtuoso предоставляет в колонке ограничение целостности, которое требует выполнения определенных условий перед вставкой или изменением данных. Если проверки не удовлетворяются, то сделка не может быть завершена.

Словарь данных

Virtuoso хранит всю информацию о всех пользовательских объектах в базе данных в таблицах системного каталога, обозначенных db. dba*.

История

Проект Virtuoso родился в 1998 году в результате слияния средового ПО доступа к данным OpenLink и Kubl RDBMS.

Kubl RDBMS

Kubl ORDBMS была одной из списка реляционных систем баз данных с корнями в Финляндии. В этот список также входят MySQL, InnoDB и Solid RDBMS/Solid Technologies. Как и в случае с большинством технологических продуктов, ключевые сотрудники OpenLink Virtuoso, InnoDB и Solid имеют общие периоды профессионального перекрытия, которые дают значительное представление об истории развития технологии баз данных в Финляндии. Хейки Туури (создатель InnoDB), Ора Лассила (W3C и Nokia Research, технологический лидер и провидца в области RDF и Семантической сети в целом вместе с Тимом Бернерсом Ли) и Ори Эрлинг (Virtuoso Program Manager в OpenLink Software) работали вместе в стартапе Entity Systems в Финляндии, где они разрабатывали среды разработки Common Lisp и Prolog для раннего поколения ПК примерно в 2000 году. 1986-88 гг. Позже Орри Эрлинг работал с VIA International, разработчиком VIA/DRE, над проектированием объектоориентированного уровня доступа к данным на основе LISP на вершине продукта DBMS компании. Основная команда разработчиков VIA, после ликвидации компании в 1992 году, основала Solid Technologies под руководством Артури Тарьяне. Хейки Туури некоторое время работал в Solid, прежде чем начать свой собственный проект по разработке баз данных, который стал InnoDB (приобретен Oracle в 2005 году). В 1994 году Ори Эрлинг начал собственную работу по разработке СУБД, которая должна была стать Kubl. Разработка Kubl была первоначально финансирована Infosto Group, издателем крупнейшей в Финляндии бесплатной рекламной газеты, в рамках их собственного проекта по разработке программного обеспечения для их онлайн-услуг. Онлайн-версия Keltainen Pörssi была когда-то самым популярным сайтом Финляндии с 500 000 зарегистрированных пользователей. База данных Kubl была заметно отображена в логотипе "Powered by Kubl" в результатах поиска. Бесплатная пробная версия Kubl была доступна для загрузки 7 ноября 1996 года. Kubl был представлен на рынке как высокопроизводительная легкая база данных для встроенного использования; целью разработки было достижение наилучших результатов в тестах транзакций в секунду. Цены на продукт были особенно выгодны для пользователей Linux с лицензией Linux по цене 199 долларов. Kubl стал краеугольным камнем OpenLink Virtuoso, после того, как технологические пути Кингсли Уйи Идехен и Ори Эрлинг пересеклись в 1998 году, что привело к приобретению Kubl компанией OpenLink Software.

Поддержка API

Для разработчиков приложений баз данных и системных интеграторов Virtuoso реализует различные API для доступа к данным (клиент и сервер), которые включают: ODBC, JDBC, OLE DB, ADO. Нет, Адо. NET Entity Framework, XMLA.

Поддержка синдикации контента и формата обмена

Для разработчиков веб-приложений и контент-синдикатов, издателей и потребителей Virtuoso поддерживает такие стандарты, как: Atom, RSS 2.0, RSS 1.0, OPML, XBEL, FOAF, SIOC.

Поддержка языка запроса

SQL, SPARQL (с многочисленными расширениями), XQuery (реализация библиотеки основных функций серьезно неполная), XPath (только 1.0), XSLT (только 1.0)

Платформы

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

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

В апреле 2006 года была выпущена бесплатная версия Virtuoso под GNU General Public License версия 2. Программное обеспечение теперь доступно в коммерческих и открытых лицензионных вариантах.