<!DOCTYPE html>
<html lang="en">
<head>
    

    <title>Apache Jena - TDB Transactions</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <link href="/css/bootstrap.min.css" rel="stylesheet" media="screen">
    <link href="/css/bootstrap-extension.css" rel="stylesheet" type="text/css">
    <link href="/css/jena.css" rel="stylesheet" type="text/css">
    <link rel="shortcut icon" href="/images/favicon.ico" />

    <script src="https://code.jquery.com/jquery-2.2.4.min.js"
            integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
            crossorigin="anonymous"></script>
    <script src="/js/jena-navigation.js" type="text/javascript"></script>
    <script src="/js/bootstrap.min.js" type="text/javascript"></script>

    <script src="/js/improve.js" type="text/javascript"></script>

    
</head>

<body>

<nav class="navbar navbar-default" role="navigation">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="/index.html">
                <img class="logo-menu" src="/images/jena-logo/jena-logo-notext-small.png" alt="jena logo">Apache Jena</a>
        </div>

        <div class="collapse navbar-collapse navbar-ex1-collapse">
            <ul class="nav navbar-nav">
                <li id="homepage"><a href="/index.html"><span class="glyphicon glyphicon-home"></span> Home</a></li>
                <li id="download"><a href="/download/index.cgi"><span class="glyphicon glyphicon-download-alt"></span> Download</a></li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-book"></span> Learn <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li class="dropdown-header">Tutorials</li>
                        <li><a href="/tutorials/index.html">Overview</a></li>
                        <li><a href="/documentation/fuseki2/index.html">Fuseki Triplestore</a></li>
                        <li><a href="/documentation/notes/index.html">How-To's</a></li>
                        <li><a href="/documentation/query/manipulating_sparql_using_arq.html">Manipulating SPARQL using ARQ</a></li>
                        <li><a href="/tutorials/rdf_api.html">RDF core API tutorial</a></li>
                        <li><a href="/tutorials/sparql.html">SPARQL tutorial</a></li>
                        <li><a href="/tutorials/using_jena_with_eclipse.html">Using Jena with Eclipse</a></li>
                        <li class="divider"></li>
                        <li class="dropdown-header">References</li>
                        <li><a href="/documentation/index.html">Overview</a></li>
                        <li><a href="/documentation/query/index.html">ARQ (SPARQL)</a></li>
                        <li><a href="/documentation/assembler/index.html">Assembler</a></li>
                        <li><a href="/documentation/tools/index.html">Command-line tools</a></li>
                        <li><a href="/documentation/rdfs/">Data with RDFS Inferencing</a></li>
                        <li><a href="/documentation/geosparql/index.html">GeoSPARQL</a></li>
                        <li><a href="/documentation/inference/index.html">Inference API</a></li>
                        <li><a href="/documentation/javadoc.html">Javadoc</a></li>
                        <li><a href="/documentation/ontology/">Ontology API</a></li>
                        <li><a href="/documentation/permissions/index.html">Permissions</a></li>
                        <li><a href="/documentation/extras/querybuilder/index.html">Query Builder</a></li>
                        <li><a href="/documentation/rdf/index.html">RDF API</a></li>
                        <li><a href="/documentation/rdfconnection/">RDF Connection - SPARQL API</a></li>
                        <li><a href="/documentation/io/">RDF I/O</a></li>
                        <li><a href="/documentation/rdfstar/index.html">RDF-star</a></li>
                        <li><a href="/documentation/shacl/index.html">SHACL</a></li>
                        <li><a href="/documentation/shex/index.html">ShEx</a></li>
                        <li><a href="/documentation/jdbc/index.html">SPARQL over JDBC</a></li>
                        <li><a href="/documentation/tdb/index.html">TDB</a></li>
                        <li><a href="/documentation/tdb2/index.html">TDB2</a></li>
                        <li><a href="/documentation/query/text-query.html">Text Search</a></li>
                    </ul>
                </li>

                <li class="drop down">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-book"></span> Javadoc <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="/documentation/javadoc.html">All Javadoc</a></li>
                        <li><a href="/documentation/javadoc/arq/">ARQ</a></li>
                        <li><a href="/documentation/javadoc_elephas.html">Elephas</a></li>
                        <li><a href="/documentation/javadoc/fuseki2/">Fuseki</a></li>
                        <li><a href="/documentation/javadoc/geosparql/">GeoSPARQL</a></li>
                        <li><a href="/documentation/javadoc/jdbc/">JDBC</a></li>
                        <li><a href="/documentation/javadoc/jena/">Jena Core</a></li>
                        <li><a href="/documentation/javadoc/permissions/">Permissions</a></li>
                        <li><a href="/documentation/javadoc/extras/querybuilder/">Query Builder</a></li>
                        <li><a href="/documentation/javadoc/shacl/">SHACL</a></li>
                        <li><a href="/documentation/javadoc/tdb/">TDB</a></li>
                        <li><a href="/documentation/javadoc/text/">Text Search</a></li>
                    </ul>
                </li>

                <li id="ask"><a href="/help_and_support/index.html"><span class="glyphicon glyphicon-question-sign"></span> Ask</a></li>

                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-bullhorn"></span> Get involved <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="/getting_involved/index.html">Contribute</a></li>
                        <li><a href="/help_and_support/bugs_and_suggestions.html">Report a bug</a></li>
                        <li class="divider"></li>
                        <li class="dropdown-header">Project</li>
                        <li><a href="/about_jena/about.html">About Jena</a></li>
                        <li><a href="/about_jena/architecture.html">Architecture</a></li>
                        <li><a href="/about_jena/citing.html">Citing</a></li>
                        <li><a href="/about_jena/team.html">Project team</a></li>
                        <li><a href="/about_jena/contributions.html">Related projects</a></li>
                        <li><a href="/about_jena/roadmap.html">Roadmap</a></li>
                        <li class="divider"></li>
                        <li class="dropdown-header">ASF</li>
                        <li><a href="http://www.apache.org/">Apache Software Foundation</a></li>
                        <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
                        <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
                        <li><a href="http://www.apache.org/security/">Security</a></li>
                        <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
                    </ul>
                </li>


    

                <li id="edit"><a href="https://github.com/apache/jena-site/edit/main/source/documentation/tdb/tdb_transactions.md" title="Edit this page on GitHub"><span class="glyphicon glyphicon-pencil"></span> Edit this page</a></li>
            </ul>
        </div>
    </div>
</nav>


<div class="container">
    <div class="row">
        <div class="col-md-12">
            <div id="breadcrumbs">
                
                    





<ol class="breadcrumb">
    
    
        
        
    
        
        
            
                <li><a href='/documentation'>DOCUMENTATION</a></li>
            
            
        
    
        
        
            
                <li><a href='/documentation/tdb'>TDB</a></li>
            
            
        
    
        
        
            
                <li class="active">TDB TRANSACTIONS</li>
            
            
        
    
</ol>




                
            </div>
            <h1 class="title">TDB Transactions</h1>
            
	<p>TDB provides
<a href="http://en.wikipedia.org/wiki/ACID">ACID</a>
transaction support through the use of
<a href="http://en.wikipedia.org/wiki/Write-ahead_logging">write-ahead-logging</a> in TDB1
and copy-on-write MVCC structures in TDB2.</p>
<p>Use of transactions protects a TDB dataset against data corruption, unexpected
process termination and system crashes.</p>
<p>Non-transactional use of TDB1 should be avoided; TDB2 only operates with transactions.</p>
<h2 id="contents">Contents</h2>
<ul>
<li><a href="#overview">Overview</a></li>
<li><a href="#limitations">Limitations</a></li>
<li><a href="#api-for-transactions">API for Transactions</a>
<ul>
<li><a href="#read-transactions">Read transactions</a></li>
<li><a href="#write-transactions">Write transactions</a></li>
</ul>
</li>
<li><a href="#multi-threaded-use">Multi-threaded use</a></li>
<li><a href="#bulk-loading">Bulk loading</a></li>
<li><a href="#multi-jvm">Multi JVM</a></li>
</ul>
<h2 id="overview">Overview</h2>
<p>TDB2 uses <a href="https://en.wikipedia.org/wiki/Multiversion_concurrency_control">MVCC</a>
via a copy-on-write mechanism. Update transactions can be of any size.</p>
<p>The TDB1 transaction mechanism is based on
<a href="http://en.wikipedia.org/wiki/Write-ahead_logging">write-ahead-logging</a>.  All
changes made inside a write-transaction are written to
<a href="http://en.wikipedia.org/wiki/Journaling_file_system">journals</a>, then propagated
to the main database at a suitable moment.  Transactions in TDB1 are limited in
size to a few 10&rsquo;s of million triples because they retain data in-memory until
indexes can be updated.</p>
<p>Transactional TDB supports one active write transaction, and
multiple read transactions at the same time. Read-transactions
started before a write-transaction commits see the database in a
state without any changes visible. Any transaction starting after a
write-transaction commits sees the database with the changes
visible, whether fully propagates back to the database or not.
There can be active read transactions seeing the state of the
database before the updates, and read transactions seeing the state
of the database after the updates running at the same time.</p>
<p>Transactional TDB works with SPARQL Query, SPARQL Update, SPARQL
Graph Store Update as well as the full Jena API.</p>
<p>TDB provides
<a href="http://en.wikipedia.org/wiki/Isolation_(database_systems)#SERIALIZABLE">Serializable</a>
transactions, the highest
<a href="http://en.wikipedia.org/wiki/Isolation_(database_systems)">isolation level</a>.</p>
<h2 id="limitations">Limitations</h2>
<p>(some of these limitations may be removed in later versions)</p>
<ul>
<li>Bulk loads: the TDB bulk loader is not transactional</li>
<li><a href="http://en.wikipedia.org/wiki/Nested_transaction">Nested transactions</a>
are not supported.</li>
</ul>
<p>TDB2 removed the limitations of TDB1:</p>
<ul>
<li>Some active transaction state is held exclusively in-memory,
limiting scalability.</li>
<li>Long-running transactions. Read-transactions cause a build-up
of pending changes;</li>
</ul>
<p>If a single read transaction runs for a long time when there are
many updates, the TDB1 system will consume a lot of temporary
resources.</p>
<h2 id="api-for-transactions">API for Transactions</h2>
<p>Ths section uses the primitives of the transaction mechanism.</p>
<p>Better APIs are described in <a href="/documentation/txn/">the transaction API
documentation</a>.</p>
<h3 id="read-transactions">Read transactions</h3>
<p>These are used for SPARQL queries and code using the Jena API
actions that do not change the data.  The general pattern is:</p>
<pre><code> dataset.begin(ReadWrite.READ) ;
 try {
   ...
 } finally { dataset.end() ; }
</code></pre>
<p>The <code>dataset.end()</code> declares the end of the read transaction.  Applications may also call
<code>dataset.commit()</code> or <code>dataset.abort()</code> which all have the same effect for a read transaction.</p>
<pre><code> Location location = ... ;
 Dataset dataset = ... ;
 dataset.begin(ReadWrite.READ) ;
 String qs1 = &quot;SELECT * {?s ?p ?o} LIMIT 10&quot; ;        

 try(QueryExecution qExec = QueryExecution.dataset(dataset).query(qs1).build() ) {
     ResultSet rs = qExec.execSelect() ;
     ResultSetFormatter.out(rs) ;
 } 

 String qs2 = &quot;SELECT * {?s ?p ?o} OFFSET 10 LIMIT 10&quot; ;  
 try(QueryExecution qExec = QueryExecution.dataset(dataset).query(qs2).build() ) {
     rs = qExec.execSelect() ;
     ResultSetFormatter.out(rs) ;
 }
</code></pre>
<h3 id="write-transactions">Write transactions</h3>
<p>These are used for SPARQL queries, SPARQL updates and any Jena API
actions that modify the data.  Beware that large <code>model.read</code>
operations consume large amounts of temporary space.</p>
<p>The general pattern is:</p>
<pre><code> dataset.begin(ReadWrite.WRITE) ;
 try {
   ...
   dataset.commit() ;
 } finally { 
   dataset.end() ; 
 }
</code></pre>
<p>The  <code>dataset.end()</code> will abort the transaction is there was no call to
<code>dataset.commit()</code> or <code>dataset.abort()</code> inside the write transaction.</p>
<p>Once <code>dataset.commit()</code> or <code>dataset.abort()</code> is called, the application
needs to start a new transaction to perform further operations on the
dataset.</p>
<pre><code> Location location = ... ;
 Dataset dataset = ... ;
 dataset.begin(ReadWrite.WRITE) ;
    
 try {
     Model model = dataset.getDefaultModel() ;
     // API calls to a model in the dataset

     model.add( ... )

     // A SPARQL query will see the new statement added.
     try (QueryExecution qExec = QueryExecution.dataset(dataset)
             .query(&quot;SELECT (count(*) AS ?count) { ?s ?p ?o} LIMIT 10&quot;)
             .build() ) {
         ResultSet rs = qExec.execSelect() ;
         ResultSetFormatter.out(rs) ;
     }

     // ... perform a SPARQL Update
     String sparqlUpdateString = StrUtils.strjoinNL(
          &quot;PREFIX . &lt;http://example/&gt;&quot;,
          &quot;INSERT { :s :p ?now } WHERE { BIND(now() AS ?now) }&quot;
          ) ;

     UpdateRequest request = UpdateFactory.create(sparqlUpdateString) ;
     UpdateExecution.dataset(dataset).update(request).execute();
        
     // Finally, commit the transaction. 
     dataset.commit() ;
     // Or call .abort()
    } finally { 
        dataset.end() ; 
    }
</code></pre>
<h2 id="multi-threaded-use">Multi-threaded use</h2>
<p>Each dataset object has one transaction active at a time per thread.
A dataset object can be used by different threads, with independent transactions.</p>
<p>The usual idiom within multi-threaded applications is to have
one dataset per thread, and so there is one transaction per thread.</p>
<p>Either:</p>
<pre><code> // Create a dataset and keep it globally.
 Dataset dataset = TDBFactory.createDataset(location) ;
</code></pre>
<p>Thread 1:</p>
<pre><code> dataset.begin(ReadWrite.WRITE) ;
 try {
   ...
   dataset.commit() ;
 } finally { dataset.end() ; }
</code></pre>
<p>Thread 2:</p>
<pre><code> dataset.begin(ReadWrite.READ) ;
 try {
   ...
 } finally { dataset.end() ; }
</code></pre>
<p>or create a dataset object on the thread:</p>
<p>Thread 1:</p>
<pre><code> Dataset dataset = TDBFactory.createDataset(location) ;
 dataset.begin(ReadWrite.WRITE) ;
 try {
   ...
   dataset.commit() ;
 } finally { dataset.end() ; }
</code></pre>
<p>Thread 2:</p>
<pre><code> Dataset dataset = TDBFactory.createDataset(location) ;
 dataset.begin(ReadWrite.READ) ;
 try {
   ...
 } finally { dataset.end() ; }
</code></pre>
<p>Each thread has a separate <code>dataset</code> object; these safely share the
same storage. in both cases, the transactions are independent.</p>
<h2 id="multi-jvm">Multi JVM</h2>
<p>Multiple applications, running in multiple JVMs, using the same
file databases is not supported and has a high risk of data corruption.  Once corrupted a database cannot be repaired
and must be rebuilt from the original source data. Therefore there <strong>must</strong> be a single JVM
controlling the database directory and files. TDB includes automatic prevention against multi-JVM usage
which prevents this under most circumstances.</p>
<p>Use <a href="../fuseki2/">Fuseki</a> to provide a database server for multiple
applications. Fuseki supports <a href="http://www.w3.org/TR/sparql11-query/">SPARQL
Query</a>, <a href="http://www.w3.org/TR/sparql11-update/">SPARQL
Update</a> and the <a href="http://www.w3.org/TR/sparql11-http-rdf-update/">SPARQL Graph Store
protocol</a>.</p>
<h2 id="bulk-loading">Bulk loading</h2>
<p>Bulk loaders are not transactional.</p>


        </div>
    </div>

</div>

<footer class="footer">
    <div class="container" style="font-size:80%" >
        <p>
            Copyright &copy; 2011&ndash;2022 The Apache Software Foundation, Licensed under the
            <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
        </p>
        <p>
            Apache Jena, Jena, the Apache Jena project logo, Apache and the Apache feather logos are trademarks of
            The Apache Software Foundation.
            <br/>
          <a href="https://privacy.apache.org/policies/privacy-policy-public.html"
             >Apache Software Foundation Privacy Policy</a>.
        </p>
    </div>
</footer>


<script type="text/javascript">
    var link = $('a[href="' + this.location.pathname + '"]');
    if (link != undefined)
        link.parents('li,ul').addClass('active');
</script>

</body>
</html>
