<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="A new open source Apache Hadoop ecosystem project, Apache Kudu completes Hadoop's storage layer to enable fast analytics on fast data" />
    <meta name="author" content="Cloudera" />
    <title>Apache Kudu - Transaction Semantics in Apache Kudu</title>
    <!-- Bootstrap core CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
          integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7"
          crossorigin="anonymous">

    <!-- Custom styles for this template -->
    <link href="/css/kudu.css" rel="stylesheet"/>
    <link href="/css/asciidoc.css" rel="stylesheet"/>
    <link rel="shortcut icon" href="/img/logo-favicon.ico" />
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" />

    

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
        <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
  </head>
  <body>
    <div class="kudu-site container-fluid">
      <!-- Static navbar -->
        <nav class="navbar navbar-default">
          <div class="container-fluid">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              
              <a class="logo" href="/"><img
                src="//d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_80px.png"
                srcset="//d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_80px.png 1x, //d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_160px.png 2x"
                alt="Apache Kudu"/></a>
              
            </div>
            <div id="navbar" class="collapse navbar-collapse">
              <ul class="nav navbar-nav navbar-right">
                <li >
                  <a href="/">Home</a>
                </li>
                <li >
                  <a href="/overview.html">Overview</a>
                </li>
                <li class="active">
                  <a href="/docs/">Documentation</a>
                </li>
                <li >
                  <a href="/releases/">Releases</a>
                </li>
                <li >
                  <a href="/blog/">Blog</a>
                </li>
                <!-- NOTE: this dropdown menu does not appear on Mobile, so don't add anything here
                     that doesn't also appear elsewhere on the site. -->
                <li class="dropdown">
                  <a href="/community.html" role="button" aria-haspopup="true" aria-expanded="false">Community <span class="caret"></span></a>
                  <ul class="dropdown-menu">
                    <li class="dropdown-header">GET IN TOUCH</li>
                    <li><a class="icon email" href="/community.html">Mailing Lists</a></li>
                    <li><a class="icon slack" href="https://getkudu-slack.herokuapp.com/">Slack Channel</a></li>
                    <li role="separator" class="divider"></li>
                    <li><a href="/community.html#meetups-user-groups-and-conference-presentations">Events and Meetups</a></li>
                    <li><a href="/committers.html">Project Committers</a></li>
                    <li><a href="/ecosystem.html">Ecosystem</a></li>
                    <!--<li><a href="/roadmap.html">Roadmap</a></li>-->
                    <li><a href="/community.html#contributions">How to Contribute</a></li>
                    <li role="separator" class="divider"></li>
                    <li class="dropdown-header">DEVELOPER RESOURCES</li>
                    <li><a class="icon github" href="https://github.com/apache/incubator-kudu">GitHub</a></li>
                    <li><a class="icon gerrit" href="http://gerrit.cloudera.org:8080/#/q/status:open+project:kudu">Gerrit Code Review</a></li>
                    <li><a class="icon jira" href="https://issues.apache.org/jira/browse/KUDU">JIRA Issue Tracker</a></li>
                    <li role="separator" class="divider"></li>
                    <li class="dropdown-header">SOCIAL MEDIA</li>
                    <li><a class="icon twitter" href="https://twitter.com/ApacheKudu">Twitter</a></li>
                    <li><a href="https://www.reddit.com/r/kudu/">Reddit</a></li>
                    <li role="separator" class="divider"></li>
                    <li class="dropdown-header">APACHE SOFTWARE FOUNDATION</li>
                    <li><a href="https://www.apache.org/security/" target="_blank">Security</a></li>
                    <li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship</a></li>
                    <li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li>
                    <li><a href="https://www.apache.org/licenses/" target="_blank">License</a></li>
                  </ul>
                </li>
                <li >
                  <a href="/faq.html">FAQ</a>
                </li>
              </ul><!-- /.nav -->
            </div><!-- /#navbar -->
          </div><!-- /.container-fluid -->
        </nav>

<!--

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->


<div class="container">
  <div class="row">
    <div class="col-md-9">

<h1>Transaction Semantics in Apache Kudu</h1>
      <div id="preamble">
<div class="sectionbody">
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
This document applies to Apache Kudu version 1.15.0. Please consult the
<a href="http://kudu.apache.org/releases/">documentation of the appropriate release</a> that&#8217;s applicable
to the version of the Kudu cluster.
</td>
</tr>
</table>
</div>
<div class="sidebarblock">
<div class="content">
<div class="paragraph">
<p>This is a brief introduction to Kudu&#8217;s transaction and consistency semantics. For an
in-depth technical exposition of most of what is mentioned here, and why it is correct,
see the technical report <a href="#ht">[1]</a>.</p>
</div>
</div>
</div>
<div class="paragraph">
<p>Kudu&#8217;s transactional semantics and architecture are inspired by state-of-the-art
systems such as Spanner <a href="#spanner">[2]</a> and Calvin <a href="#fdt">[3]</a>. Kudu builds upon decades of database
research. The core philosophy is to make the lives of developers easier by providing transactions with
simple, strong semantics, without sacrificing performance or the ability to tune to different
requirements.</p>
</div>
<div class="paragraph">
<p>Kudu is designed to eventually be fully ACID, however, multi-tablet transactions are not
yet implemented. As such, this discussion focuses on single-tablet write operations, and only
briefly touches multi-tablet reads. Eventually Kudu will support fully strict-serializable
semantics. In fact it already does in a limited context, but not all corner cases are covered
as this is still a work in progress.</p>
</div>
<div class="paragraph">
<p>Kudu currently allows the following operations:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>Write operations</strong> are sets of rows to be inserted, updated, or deleted in the storage
engine, in a single tablet with multiple replicas. Write operations do not have separate
"read sets" i.e. they do not scan existing data before performing the write. Each write
is only concerned with previous state of the rows that are about to change.
Writes are not  "committed" explicitly by the user. Instead, they are committed automatically
by the system, after completion.</p>
</li>
<li>
<p><strong>Scans</strong> are read operations that can traverse multiple tablets and read information
with different levels of consistency or correctness guarantees. Scans can perform
time-travel reads, i.e. the user is able to set a scan timestamp in the past and
get back results that reflect the state of the storage engine at that point in time.</p>
</li>
</ul>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="title">Before We Begin</div>
<div class="ulist">
<ul>
<li>
<p>The term <em>timestamp</em> is mentioned several times to illustrate the
functionality, but <em>timestamp</em> is an internal concept mostly invisible to users,
except when setting timestamp on a <code>KuduScanner</code>.</p>
</li>
<li>
<p>We generally refer to methods and classes of the C&#43;&#43; client. While the Java
client mostly has analogous methods and classes, the exact names of the APIs
may differ.</p>
</li>
</ul>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_single_tablet_write_operations"><a class="link" href="#_single_tablet_write_operations">Single tablet write operations</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Kudu employs <em>Multiversion Concurrency Control (MVCC)</em> and the <em>Raft consensus</em>
algorithm <a href="#consensus">[4]</a>. Each write operation in Kudu must go through the
tablet&#8217;s leader.</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>The leader acquires all locks for the rows that it will change.</p>
</li>
<li>
<p>The leader assigns the write a timestamp before the write is submitted for
replication. This timestamp will be the write&#8217;s "tag" in MVCC.</p>
</li>
<li>
<p>After a majority of replicas acknowledges the change, the actual rows are changed.</p>
</li>
<li>
<p>After the changes are complete, they are made visible to concurrent writes
and reads, atomically.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>All replicas of a tablet observe the same order of operations, and if a write
operation is assigned timestamp <em>n</em> and changes row <em>x</em>, a second write operation
at timestamp <em>m &gt; n</em> is guaranteed to see the new value of <em>x</em>.</p>
</div>
<div class="paragraph">
<p>This strict ordering of lock acquisition and timestamp assignment is enforced to be
consistent across all replicas of a tablet through consensus. Therefore, write operations
are totally ordered with regard to clock-assigned timestamps, relative to other writes
in the same tablet. In other words, writes have strict-serializable semantics,
though in an admittedly limited context. See this
<a href="http://www.bailis.org/blog/linearizability-versus-serializability">blog post</a>
for a little more context regarding what these semantics mean.</p>
</div>
<div class="paragraph">
<p>While Isolated and Durable in an ACID sense, multi-row write operations are not yet fully Atomic.
The failure of a single write in a batch operation does not roll back the operation,
but produces per-row errors.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_writing_to_multiple_tablets"><a class="link" href="#_writing_to_multiple_tablets">Writing to multiple tablets</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Kudu does not yet support transactions that span multiple tablets. However,
consistent snapshot reads are possible (with caveats in the current implementation)
as explained below.</p>
</div>
<div class="paragraph">
<p>Writes from a Kudu client are optionally buffered in memory until they are flushed and sent
to the server. When client&#8217;s session flushes, the rows for each tablet are batched
together, and sent to the tablet server which hosts the leader replica of the tablet.
Since there are no inter-tablet transactions, each of these batches represents a single,
independent write operation with its own timestamp. However, the client API provides
the option to impose some constraints on the assigned timestamps and on how writes to
different tablets can be observed by clients.</p>
</div>
<div class="paragraph">
<p>Kudu, like Spanner, was designed to be externally consistent <a href="#consistency">[5]</a>, preserving consistency
when operations span multiple tablets and even multiple data centers. In practice this
means that, if a write operation changes item <em>x</em> at tablet <em>A</em>, and a following write
operation changes item <em>y</em> at tablet <em>B</em>, you might want to enforce that if
the change to <em>y</em> is observed, the change to <em>x</em> must also be observed. There
are many examples where this can be important. For example,  if Kudu is
storing clickstreams for further analysis, and two clicks follow each other but
are stored in different tablets, subsequent clicks should be assigned subsequent
timestamps so that the causal relationship between them is captured.</p>
</div>
<div class="paragraph">
<div class="title"><code>CLIENT_PROPAGATED</code> Consistency</div>
<p>Kudu&#8217;s default external consistency mode is called <code>CLIENT_PROPAGATED</code>.
See <a href="#ht">[1]</a> for an extensive explanation on how it works. In brief, this mode causes writes
from <em>a single client</em> to be automatically externally consistent. In the clickstream scenario
above, if the two clicks are submitted by different client instances, the application must
manually propagate timestamps from one client to the other for the causal relationship
to be captured.</p>
</div>
<div class="paragraph">
<p>Timestamps between clients <em>a</em> and <em>b</em> can be propagated as follows:</p>
</div>
<div class="dlist">
<dl>
<dt class="hdlist1">Java Client</dt>
<dd>
<p>Call <code>AsyncKuduClient#getLastPropagatedTimestamp()</code> on client <em>a</em>,
propagate the timestamp to client <em>b</em>, and call
<code>AsyncKuduClient#setLastPropagatedTimestamp()</code> on client <em>b</em>.</p>
</dd>
<dt class="hdlist1">C&#43;&#43; Client</dt>
<dd>
<p>Call <code>KuduClient::GetLatestObservedTimestamp()</code> on client <em>a</em>,
propagate the timestamp to client <em>b</em>, and call
<code>KuduClient::SetLatestObservedTimestamp()</code> on client <em>b</em>.</p>
</dd>
</dl>
</div>
<div class="paragraph">
<div class="title"><code>COMMIT_WAIT</code> Consistency</div>
<p>Kudu also has an experimental implementation of an external consistency
model used in Google&#8217;s Spanner , called <code>COMMIT_WAIT</code>. <code>COMMIT_WAIT</code> works
by tightly synchronizing the clocks on all machines in the cluster. Then, when a
write occurs, timestamps are assigned and the results of the write are not made
visible until enough time has passed so that no other machine in the cluster could
possibly assign a lower timestamp to a following write.</p>
</div>
<div class="paragraph">
<p>When using this mode, the latency of writes is tightly tied to the accuracy of clocks on
all the cluster hosts, and using this mode with loose clock synchronization causes writes
to take a long time to complete or even time out. See <a href="#known_issues">Known Issues and Limitations</a>.</p>
</div>
<div class="paragraph">
<p>The <code>COMMIT_WAIT</code> consistency mode may be selected as follows:</p>
</div>
<div class="dlist">
<dl>
<dt class="hdlist1">Java Client</dt>
<dd>
<p>Call <code>KuduSession#setExternalConsistencyMode(ExternalConsistencyMode.COMMIT_WAIT)</code></p>
</dd>
<dt class="hdlist1">C&#43;&#43; Client</dt>
<dd>
<p>Call <code>KuduSession::SetExternalConsistencyMode(COMMIT_WAIT)</code></p>
</dd>
</dl>
</div>
<div class="admonitionblock caution">
<table>
<tr>
<td class="icon">
<i class="fa icon-caution" title="Caution"></i>
</td>
<td class="content">
<code>COMMIT_WAIT</code> consistency is considered an experimental feature. It may return
incorrect results, exhibit performance issues, or negatively impact cluster stability.
Use in production environments is discouraged.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_read_operations_scans"><a class="link" href="#_read_operations_scans">Read Operations (Scans)</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Scans are read operations performed by clients that may span one or more rows across
one or more tablets. When a server receives a scan request, it takes a snapshot of the MVCC
state and then proceeds in one of two ways depending on the read mode selected by
the user. The mode may be selected as follows:</p>
</div>
<div class="dlist">
<dl>
<dt class="hdlist1">Java Client</dt>
<dd>
<p>Call <code>KuduScannerBuilder#readMode(&#8230;&#8203;)</code></p>
</dd>
<dt class="hdlist1">C&#43;&#43; Client</dt>
<dd>
<p>Call <code>KuduScanner::SetReadMode()</code></p>
</dd>
</dl>
</div>
<div class="paragraph">
<p>The following modes are available in both clients:</p>
</div>
<div class="dlist">
<dl>
<dt class="hdlist1"><code>READ_LATEST</code></dt>
<dd>
<p>This is the default read mode. The server takes a snapshot of
the MVCC state and proceeds with the read immediately. Reads in this mode only yield
'Read Committed' isolation.</p>
</dd>
<dt class="hdlist1"><code>READ_AT_SNAPSHOT</code></dt>
<dd>
<p>In this read mode, scans are consistent and repeatable. A
timestamp for the snapshot is selected either by the server, or set
explicitly by the user through <code>KuduScanner::SetSnapshotMicros()</code>. Explicitly setting
the timestamp is recommended; see <a href="#recommendations">Recommendations</a>. The server waits until this
timestamp is 'safe' (until all write operations that have a lower timestamp have
completed and are visible). This delay, coupled with an external consistency method,
will eventually allow Kudu to have full <code>strict-serializable</code> semantics for reads
and writes. This is still a work in progress and some anomalies are still possible
(see <a href="#known_issues">Known Issues and Limitations</a>). Only scans in this mode can be fault-tolerant.</p>
</dd>
</dl>
</div>
<div class="paragraph">
<p>Selecting between read modes requires balancing the trade-offs and making a choice
that fits your workload. For instance, a reporting application that needs to
scan the entire database might need to perform careful accounting operations, so that
scan may need to be fault-tolerant, but probably doesn&#8217;t require a to-the-microsecond
up-to-date view of the database. In that case, you might choose <code>READ_AT_SNAPSHOT</code>
and select a timestamp that is a few seconds in the past when the scan starts. On
the other hand, a machine learning workload that is not ingesting the whole data
set and is already statistical in nature might not require the scan to be repeatable,
so you might choose <code>READ_LATEST</code> instead for better scan performance.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>Kudu also provides replica selection API for users to choose at which replica the
scan should be performed:</p>
</div>
<div class="dlist">
<dl>
<dt class="hdlist1">Java Client</dt>
<dd>
<p>Call <code>KuduScannerBuilder#replicaSelection(&#8230;&#8203;)</code></p>
</dd>
<dt class="hdlist1">C&#43;&#43; Client</dt>
<dd>
<p>Call <code>KuduScanner::SetSelection(&#8230;&#8203;)</code></p>
</dd>
</dl>
</div>
<div class="paragraph">
<p>This API is a means to control locality and, in some cases, latency. The replica
selection API has no effect on the consistency guarantees, which will hold no matter
which replica is selected.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="known_issues"><a class="link" href="#known_issues">Known Issues and Limitations</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>There are several gaps and corner cases that prevent Kudu from being fully strictly-serializable
in some situations, at the moment. Below are the details and next, some recommendations.</p>
</div>
<div class="sect2">
<h3 id="known_issues_scans"><a class="link" href="#known_issues_scans">Writes</a></h3>
<div class="ulist">
<ul>
<li>
<p>Support for <code>COMMIT_WAIT</code> is experimental and requires careful tuning of the
time-synchronization protocol, such as NTP (Network Time Protocol). Its use
is discouraged in production environments.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_reads_scans"><a class="link" href="#_reads_scans">Reads (Scans)</a></h3>
<div class="ulist">
<ul>
<li>
<p>On a leader change, <code>READ_AT_SNAPSHOT</code> scans at a snapshot whose timestamp is beyond the last
write may also yield non-repeatable reads (see
<a href="https://issues.apache.org/jira/browse/KUDU-1188">KUDU-1188</a>).
See <a href="#recommendations">Recommendations</a> for a workaround.</p>
</li>
<li>
<p>Impala scans are currently performed as <code>READ_LATEST</code> and have no consistency
guarantees.</p>
</li>
<li>
<p>In <code>AUTO_BACKGROUND_FLUSH</code> mode, or when using "async" flushing mechanisms,
writes applied to a single client session may become reordered due to the
concurrency of flushing the data to the server. This may be particularly
noticeable if a single row is quickly updated with different values in
succession. This phenomenon affects all client API implementations.
Workarounds are described in the API documentation for the respective
implementations in the docs for <code>FlushMode</code> or <code>AsyncKuduSession</code>.
See <a href="https://issues.apache.org/jira/browse/KUDU-1767">KUDU-1767</a>.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="recommendations"><a class="link" href="#recommendations">Recommendations</a></h3>
<div class="ulist">
<ul>
<li>
<p>If repeatable snapshot reads are a requirement, use <code>READ_AT_SNAPSHOT</code>
with a timestamp that is slightly in the past (between 2-5 seconds, ideally).
This will circumvent the anomaly described in <a href="#known_issues_scans">Writes</a>. Even when the
anomaly has been addressed, back-dating the timestamp will always make scans
faster, since they are unlikely to block.</p>
</li>
<li>
<p>If external consistency is a requirement and you decide to use <code>COMMIT_WAIT</code>, the
time-synchronization protocol needs to be tuned carefully. Each transaction will wait
2x the maximum clock error at the time of execution, which is usually in the 100 msec.
to 1 sec. range with the default settings, maybe more. Thus, transactions would take at least
200 msec. to 2 sec. to complete when using the default settings and may even time out.</p>
<div class="ulist">
<ul>
<li>
<p>A local server should be used as a time server. We&#8217;ve performed experiments using the default
NTP time source available in a Google Compute Engine data center and were able to obtain
a reasonable tight max error bound, usually varying between 12-17 milliseconds.</p>
</li>
<li>
<p>The following parameters should be adjusted in <code>/etc/ntp.conf</code> to tighten the maximum error:</p>
<div class="ulist">
<ul>
<li>
<p><code>server my_server.org iburst minpoll 1 maxpoll 8</code></p>
</li>
<li>
<p><code>tinker dispersion 500</code></p>
</li>
<li>
<p><code>tinker allan 0</code></p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="admonitionblock important">
<table>
<tr>
<td class="icon">
<i class="fa icon-important" title="Important"></i>
</td>
<td class="content">
The above parameters minimize <code>maximum error</code> at the expense of <code>estimated error</code>,
the latter might be orders of magnitude above it&#8217;s "normal" value. These parameters also
may place a greater load on the time server, since they make the servers poll much more
frequently.
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_references"><a class="link" href="#_references">References</a></h2>
<div class="sectionbody">
<div class="ulist bibliography">
<ul class="bibliography">
<li>
<p><a id="ht"></a>[1] David Alves, Todd Lipcon and Vijay Garg. Technical Report: HybridTime - Accessible Global Consistency with High Clock Uncertainty. April, 2014. <a href="http://users.ece.utexas.edu/~garg/pdslab/david/hybrid-time-tech-report-01.pdf" class="bare">http://users.ece.utexas.edu/~garg/pdslab/david/hybrid-time-tech-report-01.pdf</a></p>
</li>
<li>
<p><a id="spanner"></a>[2] James C. Corbett, Jeffrey Dean, Michael Epstein, Andrew Fikes, Christopher Frost, J. J. Furman, Sanjay Ghemawat, Andrey Gubarev, Christopher Heiser, Peter Hochschild, Wilson Hsieh, Sebastian Kanthak, Eugene Kogan, Hongyi Li, Alexander Lloyd, Sergey Melnik, David Mwaura, David Nagle, Sean Quinlan, Rajesh Rao, Lindsay Rolig, Yasushi Saito, Michal Szymaniak, Christopher Taylor, Ruth Wang, and Dale Woodford. 2012. Spanner: Google&#8217;s globally-distributed database. In Proceedings of the 10th USENIX conference on Operating Systems Design and Implementation (OSDI'12). USENIX Association, Berkeley, CA, USA, 251-264.</p>
</li>
<li>
<p><a id="fdt"></a>[3] Alexander Thomson, Thaddeus Diamond, Shu-Chun Weng, Kun Ren, Philip Shao, and Daniel J. Abadi. 2012. Calvin: fast distributed transactions for partitioned database systems. In Proceedings of the 2012 ACM SIGMOD International Conference on Management of Data (SIGMOD '12). ACM, New York, NY, USA, 1-12. DOI=10.1145/2213836.2213838 <a href="http://doi.acm.org/10.1145/2213836.2213838" class="bare">http://doi.acm.org/10.1145/2213836.2213838</a></p>
</li>
<li>
<p><a id="consensus"></a>[4] Diego Ongaro and John Ousterhout. 2014. In search of an understandable consensus algorithm. In Proceedings of the 2014 USENIX conference on USENIX Annual Technical Conference (USENIX ATC'14), Garth Gibson and Nickolai Zeldovich (Eds.). USENIX Association, Berkeley, CA, USA, 305-320.</p>
</li>
<li>
<p><a id="consistency"></a>[5] Kwei-Jay Lin, "Consistency issues in real-time database systems," in System Sciences, 1989. Vol.II: Software Track, Proceedings of the Twenty-Second Annual Hawaii International Conference on , vol.2, no., pp.654-661 vol.2, 3-6 Jan 1989 doi: 10.1109/HICSS.1989.48069</p>
</li>
</ul>
</div>
</div>
</div>
    </div>
    <div class="col-md-3">

  <div id="toc" data-spy="affix" data-offset-top="70">
  <ul>

      <li>

          <a href="index.html">Introducing Kudu</a> 
      </li> 
      <li>

          <a href="release_notes.html">Kudu Release Notes</a> 
      </li> 
      <li>

          <a href="quickstart.html">Quickstart Guide</a> 
      </li> 
      <li>

          <a href="installation.html">Installation Guide</a> 
      </li> 
      <li>

          <a href="configuration.html">Configuring Kudu</a> 
      </li> 
      <li>

          <a href="hive_metastore.html">Using the Hive Metastore with Kudu</a> 
      </li> 
      <li>

          <a href="kudu_impala_integration.html">Using Impala with Kudu</a> 
      </li> 
      <li>

          <a href="administration.html">Administering Kudu</a> 
      </li> 
      <li>

          <a href="troubleshooting.html">Troubleshooting Kudu</a> 
      </li> 
      <li>

          <a href="developing.html">Developing Applications with Kudu</a> 
      </li> 
      <li>

          <a href="schema_design.html">Kudu Schema Design</a> 
      </li> 
      <li>

          <a href="scaling_guide.html">Kudu Scaling Guide</a> 
      </li> 
      <li>

          <a href="security.html">Kudu Security</a> 
      </li> 
      <li>
<span class="active-toc">Kudu Transaction Semantics</span>
            <ul class="sectlevel1">
<li><a href="#_single_tablet_write_operations">Single tablet write operations</a></li>
<li><a href="#_writing_to_multiple_tablets">Writing to multiple tablets</a></li>
<li><a href="#_read_operations_scans">Read Operations (Scans)</a></li>
<li><a href="#known_issues">Known Issues and Limitations</a>
<ul class="sectlevel2">
<li><a href="#known_issues_scans">Writes</a></li>
<li><a href="#_reads_scans">Reads (Scans)</a></li>
<li><a href="#recommendations">Recommendations</a></li>
</ul>
</li>
<li><a href="#_references">References</a></li>
</ul> 
      </li> 
      <li>

          <a href="background_tasks.html">Background Maintenance Tasks</a> 
      </li> 
      <li>

          <a href="configuration_reference.html">Kudu Configuration Reference</a> 
      </li> 
      <li>

          <a href="command_line_tools_reference.html">Kudu Command Line Tools Reference</a> 
      </li> 
      <li>

          <a href="metrics_reference.html">Kudu Metrics Reference</a> 
      </li> 
      <li>

          <a href="known_issues.html">Known Issues and Limitations</a> 
      </li> 
      <li>

          <a href="contributing.html">Contributing to Kudu</a> 
      </li> 
      <li>

          <a href="export_control.html">Export Control Notice</a> 
      </li> 
  </ul>
  </div>
    </div>
  </div>
</div>
      <footer class="footer">
        <div class="row">
          <div class="col-md-9">
            <p class="small">
            Copyright &copy; 2020 The Apache Software Foundation.  Last updated 2021-05-20 10:46:53 -0700 
            </p>
            <p class="small">
            Apache Kudu, Kudu, Apache, the Apache feather logo, and the Apache Kudu
            project logo are either registered trademarks or trademarks of The
            Apache Software Foundation in the United States and other countries.
            </p>
          </div>
          <div class="col-md-3">
            <a class="pull-right" href="https://www.apache.org/events/current-event.html">
                <img src="https://www.apache.org/events/current-event-234x60.png"/>
            </a>
          </div>
        </div>
      </footer>
    </div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script>
      // Try to detect touch-screen devices. Note: Many laptops have touch screens.
      $(document).ready(function() {
        if ("ontouchstart" in document.documentElement) {
          $(document.documentElement).addClass("touch");
        } else {
          $(document.documentElement).addClass("no-touch");
        }
      });
    </script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"
            integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS"
            crossorigin="anonymous"></script>
    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-68448017-1', 'auto');
      ga('send', 'pageview');
    </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/3.1.0/anchor.js"></script>
    <script>
      anchors.options = {
        placement: 'right',
        visible: 'touch',
      };
      anchors.add();
    </script>
  </body>
</html>

