< Back to index
Virtuoso Universal Server is a middleware and database engine hybrid that combines the functionality of a traditional RDBMS, ORDBMS, virtual database, RDF, XML, free-text, Web Application Server, and File Server functionality in a single server product offering. Rather than have dedicated servers for each of the aforementioned functionality realms, Virtuoso is a "universal server"; it enables a single multithreaded server process that implements multiple protocols.
The open source edition of Virtuoso Universal Server is also known as OpenLink Virtuoso.
The software has been developed by OpenLink Software with [http://www.openlinksw.com/dataspace/kidehen@openlinksw.com Kingsley Idehen] and [http://www.openlinksw.com/dataspace/oerling Orri Erling] as the chief software architects.
Database Structure
Core Database Engine
Virtuoso provides an extended object-relational model, which offers all the flexibility of relational access with inheritance, run time data typing, late binding, and identity based access. Virtuoso Universal Server database includes physical file and in memory storage and operating system processes that interact with the storage. There is one main process, which has listeners on a specified port for http, soap, and other protocols.
Architecture
Virtuoso is designed to take advantage of operating system threading support and multiple CPU's. It consists of a single process with an adjustable pool of threads shared between clients. Multiple threads may work on a single index tree with minimal interference with each other. One cache of database pages is shared among all threads and old dirty pages are written back to disk as a background process.
The database has at all times a clean checkpoint state and a delta of committed or uncommitted changes to this checkpointed state. This makes it possible to do a clean backup of the checkpoint state while transactions proceed on the commit state.
A transaction log file records all transactions since the last checkpoint. Transaction log files may be preserved and archived for an indefinite time, providing a full, recoverable history of the database.
A single set of files is used for storing all tables. A separate set of files is used for all temporary data. The maximum size of a file set is 32 terabytes, for 4G x 8K pages.
Locking
Virtuoso provides dynamic locking, starting with row level locks and escalating to page level locks when a cursor holds a large percentage of a page's rows or when it has a history of locking entire pages. Lock escalation only happens when no other transactions hold locks on the same page, hence it never deadlocks. Virtuoso SQL provides means for exclusive read and for setting transaction isolation.
Transactions
All four levels of isolation are supported: Dirty read, read committed, repeatable read and serializable. The level of isolation may be specified operation by operation within a single transaction. Virtuoso can also act as a resource manager and/or transaction coordinator under Microsoft's Distributed Transaction Coordinator ( MS DTC ) or the XA standard.
Data Integrity
Virtuoso ORDBMS database supports entity integrity and referential integrity. Virtuoso ensures that relationships between records in related tables are valid by enforcing referential integrity. Integrity constraints include:
* NOT NULL - Within the definition of a table, Virtuoso allows data to contain a NULL value. This NULL value is not really a value at all and is considered an absence of value. The constraint of NOT NULL forces a value to be given to a column.
* Unique Key - Uniqueness for a column or set of columns means that the values in that column or set of columns must be different from all other columns or set of columns in that table. A unique key may contain NULL values since they are by definition a unique non-valued value.
* Primary Key - Primary key are much like unique keys except that they are designed to uniquely identify a row in a table. They can consist of a single column or multiple columns. The primary key cannot contain a NULL value.
* CHECK Constraint - Virtuoso provides on a column an integrity constraint that requires certain conditions to be met before the data is inserted or modified. If the checks are not satisfied then the transaction cannot be completed.
Data Dictionary
Virtuoso stores all its information about all user objects in the database in the system catalog tables designated by db.dba*.
Components and Files
Components
Virtuoso is made up of client and server components. These are the components typically used to communicate with a local or remote Virtuoso server which include:
* Virtuoso Drivers for ODBC, JDBC, ADO.NET and OLE DB
* Conductor, a Web Based Database Administration User Interface
* ISQL (Interactive SQL) and ISQO Utilities
* Documentation and Tutorials
* Samples
Files
* Database File: {virtuoso}.db is default for a single file database, this is the relative path of the file in the format appropriate to the platform. The path is resolved relative to the directory that is current at server startup.
* Transaction File: {virtuoso}.trx is the transaction log file.
* Error Log File: {virtuoso}.log is that contains all the logs for the database including informational and error messages. Using this file, database administrators can trace problems and see at which times the server has started, checkpoints have been made, and other messages.
* Lock Files: {virtuoso}.lck Virtuoso, by default, creates a file with the same name as the database filename but with the extension of .lck. This file exists when the Virtuoso server is running to prevent it starting multiple times using the same parameters, and should be automatically removed by the server upon exit.
* Init File: virtuoso.ini is the Virtuoso configuration file, which is read from the directory that is current at server startup. This file contains an entry for all user settable options in the server.
All database installation come with two databases, a default database and a demo database. The demo database includes sample tables and tutorials, the user can log into the database with the username demo and the password demo. By default, the default database listens on port 1111 and the demo database on 1112.
History
The Virtuoso project was born in 1998 from a merger of the OpenLink data access middleware and Kubl RDBMS.
Kubl RDBMS
The Kubl ORDBMS was one of a list of relational database systems with roots in Finland. This list also includes MySQL, InnoDB and Solid RDBMS [http://www.solidtech.com/].
As is the case with most technology products, key personnel behind OpenLink Virtuoso, InnoDB and Solid share periods of professional overlap that provide noteworthy insight into the history database technology development in Finland. Heikki Tuuri (creator of Inno DB), Ora Lassila (W3C and Nokia Research, a technology lead and visionary in the areas RDF and Semantic Web in general alongside Tim Berners-Lee), and Orri Erling (Virtuoso Program Manager at OpenLink Software) all worked together in a startup company called Entity Systems in Finland - were they were developing Common Lisp and Prolog development environments for the early generation of PC's circa. 1986-88.
Later, Orri Erling worked with VIA International, the developer of VIA/DRE in designing a LISP based Object Oriented Data Access layer atop the company's DBMS product. The core development team of VIA, following the company's demise in 1992, went on to found Solid under the direction of Artturi Tarjanne.
Heikki Tuuri worked at Solid for a while before starting his own database development project which became Inno DB (recently acquired by Oracle in 2005).
Orri Erling started his own DBMS development work in 1994, which was to become Kubl. Development of Kubl was initially financed by Infosto Group, publisher of Finland's largest free ads paper, as part of their in-house software development project for their on-line services. The on-line version of Keltainen Pörssi was at one time said to be Finland's most popular web site with 500,000 registered users. The Kubl database was prominently displayed in a "Powered by Kubl" logo on the search results.
A free trial version of Kubl was made available for download on November 7, 1996. [http://groups.google.com/group/comp.os.linux.announce/browse_thread/thread/1f16aee3485e6ec4/584d1a35614d67e1#584d1a35614d67e1]
Kubl was marketed as a high performance lightweight database for embedded use; the development aim was to achieve top scores in Transactions Per Second tests. [http://sal.linet.gr.jp/H/1/KUBL.html] [http://groups.google.com/group/comp.databases/browse_thread/thread/2460a5cf7b13e6b7/31b04e5457c76e66#31b04e5457c76e66] Pricing of the of the product was especially favorable to Linux users with a Linux license priced at $199. [http://groups.google.com/group/hun.lists.mlf.linux/browse_thread/thread/c3c8c5a8f23c9ace/de60d5e2abbfa638?q=&rnum=32#de60d5e2abbfa638]
Kubl became the cornerstone of OpenLink Virtuoso, after the technology paths of Kingsley Idehen and Orri Erling crossed in 1998, leading to the acquisition of Kubl by OpenLink Software [http://www.openlinksw.com].
Functionality Realms
Virtuoso is a universal server that implements a number of industry standard protocols and APIs, including the following:
* Object-relational database engine for (SQL, XML, RDF and Free Text)
* Web Services Platform
* Web Application Server
* Web Content Management
* NNTP based Discussion Management
* Replication of Homogeneous and Heterogeneous Data
* Mail Storage Sink and (POP3) Service Proxy
Protocols Implemented
* HTTP
* WebDAV
* SOAP
* UDDI
* WSDL
* WS-Policy
* WS-Security
* WS-ReliableMessaging
* WS-Routing
* WS-Referral
* WS-Attachment
* WS-BPEL
* SyncML
* GData
* SPARQL
* XMLA
* NNTP
API Support
* ODBC
* JDBC
* OLE DB
* ADO.NET
Content Syndication & Interchange Format Support
* Atom
* RSS 2.0
* RSS 1.0
* OPML
* XBEL
* FOAF
* SIOC
Query Language Support
* SQL
* SPARQL
* XQuery
* XPath
* XSLT
Schema Definition Language Support
* SQL's Data Definition Language
* XML Schema
Usage Scenarios
Virtuoso is a solution for the following systems integration challenges:
* Enterprise Information Integration (EII)
* Programming Language Independent Web Application deployment
* Monolithic Application Decomposition that leverage the principles of SOA
* Web Services based Enterprise application integration via a significant amount of WS-* protocols support
* Business Process Management via BPEL
* Semantic Web Data Spaces Generation
Related Technology Areas
Data Management
* RDBMS
* List of relational database management systems
* List of object-relational database management systems
* Comparison of relational database management systems
* Comparison of object-relational database management systems
* Comparison of SQL syntax
Enterprise Application, Information, and Data Integration
* Web 2.0
* Enterprise Service Bus
* SOA
* BPEL Engines List
* Enterprise Application Integration
* Data Integration
* Web Services
* Semantic Web
* Business Integration Severs Comparison Matrix
Company links
Backgrounders
* [http://virtuoso.openlinksw.com/wiki/main/Main/VOSHistory History of Virtuoso]
Product Documentation
* [http://docs.openlinksw.com/virtuoso/contents.html Online Documentation]
Demonstrations & Tutorials
* [http://demo.openlinksw.com/tutorial/ Collection of Functionality Realm Tutorials]
* [http://demo.openlinksw.com/isparql SPARQL Query Service Demo]
Feature Summary and FAQs
* [http://virtuoso.openlinksw.com/main/featurematrix/index.htm Feature Summary]
* [http://virtuoso.openlinksw.com/FAQ/index.htm Product FAQ]
Architecture Diagrams
* [http://virtuoso.openlinksw.com/architect/varch.htm General Usage Diagram]
Articles and Whitepapers
* [http://virtuoso.openlinksw.com/Whitepapers/index.htm/ Virtuoso Technical Whitepapers]
Weblogs
* [http://virtuoso.openlinksw.com/blog/ Virtuoso Product Weblog]
* [http://www.openlinksw.com/blog/~kidehen/ Kingsley Idehen's Blog Data Space]
* [http://www.openlinksw.com/weblog/oerling/ Orri Erling's Blog Data Space]
Related products and tools
In addition to Virtuoso, OpenLink Software produces several related tools and applications.
* [http://virtuoso.openlinksw.com/wiki/main/Main/OdsIndex OpenLink Data Spaces] is a suite of Virtuoso applications for creating and maintaining Semantic Web presence. It includes Social Networking, Weblog Platform, File Sharing, Shared & Social Bookmarking, Wiki Platform, Mail, Photo Sharing, RSS 2.0, Atom, and RSS 1.1 Content Aggregation services.
* [http://uda.openlinksw.com/ Universal Data Access Drivers] - High-performance data access drivers for ODBC, JDBC, ADO.NET, and OLE DB that provide transparent access to enterprise databases across multiple platforms and databases.
Platforms
Virtuoso is supported on a number of 32 & 64 bit platforms including cross-platform Windows, UNIX ( HP, AIX, Sun, DEC, BSD, SCO), Linux ( Redhat, SuSE), and Mac OSX.
Licensing
In April 2006 an open source version of Virtuoso was made available under the GPL license.
The software is now available in Commercial and Open Source license variants. [http://www.openlinksw.com/press/VOSPressRelease.htm]
This entry uses material from from Wikipedia, the leading user-contributed encyclopedia. It is licensed under the GNU Free Documentation License. Disclaimer.