Virtuoso Universal Server
Developer(s) | OpenLink Software |
---|---|
Stable release | 7.2.7
/ May 18, 2022[1] |
Repository | |
Written in | GPLv2[2] and proprietary |
Website | virtuoso |
Virtuoso Universal Server is a
Database structure
Core database engine
Virtuoso provides an extended
Architecture
Virtuoso is designed to take advantage of operating system threading support and multiple CPUs. 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 × 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
.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 components typically communicate with a local or remote Virtuoso server, which include:
- Virtuoso Drivers for
- Conductor, a web-based database administration user interface
- ISQL (Interactive SQL) and ISQO Utilities
- Documentation and Tutorials
- Samples
Installations come with two databases: a default and a demo database.
History
The Virtuoso project was born in 1998 from a merger of the OpenLink data access middleware and Kubl RDBMS.
Kubl RDBMS
The Kubl
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 of database technology development in Finland. Heikki Tuuri (creator of InnoDB), 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 – where they were developing Common Lisp and Prolog development environments for the early generation of PC's circa. 1986–88.
Later, Orri Erling worked with
Heikki Tuuri worked at Solid for a while before starting his own database development project which became InnoDB (acquired by Oracle in 2005).
Orri Erling started his own DBMS development work in 1994, which was to become
A free trial version of Kubl was made available for download on November 7, 1996.[3]
Kubl was marketed as a high performance lightweight database for
Kubl became the cornerstone of OpenLink Virtuoso, after the technology paths of Kingsley Uyi Idehen and Orri Erling crossed in 1998, leading to the acquisition of Kubl by OpenLink Software.
Functionality realms
Virtuoso's functionality covers a broad range of traditionally distinct realms in a single product offering. These functional realms include:
- Object–relational database engine for (SQL, XML, RDF and plain text)
- Web services computing platform
- Web application server
- Web content management system (WCMS)
- NNTP-based discussion management
- Replicationof homogeneous and heterogeneous data
- Mail Storage Sink and (POP3) service proxy
- DataPortability
Protocols implemented
Virtuoso supports a broad range of industry standard Web & Internet protocols that includes:
, NNTPAPI support
For the database application developer and systems integrator, Virtuoso implements a variety of industry standard data access APIs (client and server) that includes: ODBC, JDBC, OLE DB, ADO.NET,
Content syndication and interchange format support
For the Web application developer and content syndicate(s) publishers, and consumers, Virtuoso supports standards such as:
Query language support
SQL,
Schema definition language support
SQL's
Usage scenarios
Virtuoso is a solution for the following system integration challenges:
- Enterprise Information Integration(EII)
- Programming Language Independent Web application deployment
- Monolithic application decomposition that leverages the principles of service-oriented architecture
- WS-*protocols support
- Business process management via BPEL
- Semantic Web Data Spaces Generation
- Deployment platform for injecting RDF-based Linked Datainto the Semantic Data Web
Related technology areas
Data management
- Relational database management system
- List of relational database management systems
- Comparison of object–relational database management systems
- Comparison of relational database management systems
Enterprise application, information, and data integration
- Web 2.0
- Enterprise service bus
- Service-oriented architecture
- Enterprise application integration
- Data integration
- Open Semantic Framework
- Web service
- Semantic Web
- Business Integration Severs Comparison Matrix
Related products and tools
In addition to Virtuoso, OpenLink Software produces several related tools and applications:
- Linked Datacompliant distributed collaborative applications, across each of the aforementioned Web application realms.
- 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- and 64-bit platforms including cross-platform
.Licensing
In April 2006, a free software version of Virtuoso was made available under the GNU General Public License version 2. The software is now available in Commercial and Open Source license variants.[7]
References
- ^ "Virtuoso Open Source 7.2.7 Release Notes". 10 May 2022. Retrieved 21 June 2022.
- ^ OpenLink Software. "Virtuoso Open-Source License Terms". Retrieved 2011-03-30.
- Usenet: [email protected].
- ^ "SAL- Database Systems - Relational DBMS - Kubl". Archived from the original on 2004-01-27. Retrieved 2006-07-07.
- ^ "DBMS Benchmark code? Who's fastest?". 11 April 1996. Retrieved 2010-02-03.
- ^ "Kubl RDBMS for Linux". 12 November 1997. Retrieved 2010-02-03.
- ^ OpenLink Software (11 April 2006). "Open Source Edition of OpenLink Virtuoso, Unleashed!". Retrieved 2010-02-03.