<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">
 <channel>
  <title>Virtuoso Cluster Operation</title>
  <link>http://docs.openlinksw.com/virtuoso/clusteroperation.html</link>
  <description>OpenLink Virtuoso Universal Server: Documentation</description>
  <managingEditor>virtuoso.docs@openlinksw.com</managingEditor>
  <pubDate>Wed, 18 Jun 2008 13:00:12 GMT</pubDate>
  <generator>OpenLink Software Documentation Team</generator>
  <webMaster>webmaster@openlinksw.com</webMaster>
  <image>
    <title>OpenLink Virtuoso Universal Server: Documentation</title>
    <url>http://docs.openlinksw.com/virtuoso/../images/misc/logo.jpg</url>
    <link>http://docs.openlinksw.com/virtuoso/clusteroperation.html</link>
    <description>OpenLink Virtuoso Universal Server: Documentation</description>
  </image>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/clusteroperationgeneral.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>General</category>
    <link>http://docs.openlinksw.com/virtuoso/clusteroperationgeneral.html</link>
    <pubDate>Wed, 18 Jun 2008 13:00:12 GMT</pubDate>
    <title>General</title>
    <description>Virtuoso can be run in cluster mode where one logical database is served by a collection
of server processes spread over a cluster of machines.
    

The cluster&#39;s composition is declared in a cluster.ini file which is to be in the starting
directory of each of the servers composing the cluster. This file declares the hosts and listening
ports of all processes composing the cluster and which of these processes is the local process and
which the master.
    

A cluster has a single master process which is the only one allowed to run DDL operations
and which is responsible for distributed deadlock resolution. In all other respects, all server
processes of the cluster are interchangeable.
    

</description>
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/clusteroperationsetcl.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>Setting up a Cluster</category>
    <link>http://docs.openlinksw.com/virtuoso/clusteroperationsetcl.html</link>
    <pubDate>Wed, 18 Jun 2008 13:00:12 GMT</pubDate>
    <title>Setting up a Cluster</title>
    <description>To make a new empty clustered Virtuoso database, set up the individual instances.
The processes must be of exactly the same version, the operating systems, byte orders or word
lengths of the participating machines do not have to match.
    

Each individual database is assigned its database files and other configuration by editing
its virtuoso.ini file. No installation besides having the Virtuoso executable and the virtuoso.ini file
is needed.
    

If there is a Virtuoso installation on the machine, use the executable from that and set up
an empty directory with the virtuoso.ini file.
    

</description>
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/clusteroperationexdb.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>Using Clustering with an Existing Database</category>
    <link>http://docs.openlinksw.com/virtuoso/clusteroperationexdb.html</link>
    <pubDate>Wed, 18 Jun 2008 13:00:12 GMT</pubDate>
    <title>Using Clustering with an Existing Database</title>
    <description>The procedure for converting a single server database into a clustered one will be
specified later. For 6.0, there is no automatic way of doing this.
    

One can take an existing database and convert it to clustered operation by copying the
initial database to each node of the cluster. Set up the database so that each node would run an
identical copy. Then make the cluster.ini files.
    

Start the servers. Connect to the master and run the partitioning statements for all keys
of all tables that are to be managed by the cluster.
    

</description>
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/clusteroperationpart.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>Partitioning</category>
    <link>http://docs.openlinksw.com/virtuoso/clusteroperationpart.html</link>
    <pubDate>Wed, 18 Jun 2008 13:00:12 GMT</pubDate>
    <title>Partitioning</title>
    <description>All databases in a cluster share precisely the same schema. Any DDL operations take
effect on all nodes simultaneously.

The tables can be of one of three types:

Partitioning an index means that different hosts store different parts of the index. For each
partitioned index one or more partitioning columns must be declared. Also each partitioned index is
always held in its totality in a logical cluster. A logical cluster is a subset of the machines composing
the physical cluster declared in cluster.ini. Usually the logical and physical cluster are the same.
    

</description>
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/clusteroperationtransc.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>Transactions</category>
    <link>http://docs.openlinksw.com/virtuoso/clusteroperationtransc.html</link>
    <pubDate>Wed, 18 Jun 2008 13:00:12 GMT</pubDate>
    <title>Transactions</title>
    <description>A Virtuoso cluster is fully transactional and supports the 4 isolation levels identically
with a single server Virtuoso. Transactions are committed using single to two phase commit as may be
appropriate and this is transparent to the application program.
    

Distributed deadlocks are detected and one of the deadlocking transactions is killed,
just as with a single process.
    

Transactions are logged on the cluster nodes which perform updates pertaining to the transaction.

</description>
  </item>
  <item>
    <guid>http://docs.openlinksw.com/virtuoso/clusteroperationadmin.html</guid>
    <author>virtuoso.docs@openlinksw.com</author>
    <category>Administration</category>
    <link>http://docs.openlinksw.com/virtuoso/clusteroperationadmin.html</link>
    <pubDate>Wed, 18 Jun 2008 13:00:12 GMT</pubDate>
    <title>Administration</title>
    <description>All administrative operations other than data definition take effect on the node to which
they are issued.
    

The cl_exec SQL function can be used for executing things on all nodes of a cluster.

The cmd is a SQL string. If it contains parameter markers (?), the params array is used
for assigning values, left to right. If is_txn is 1, the cl_exec makes a distributed transaction
and does not automatically commit on locally on each node. Thus cl_exec can be used as part of a
containing distributed transaction.
    

</description>
  </item>
 </channel>
</rss>
