
<!DOCTYPE html>
<!--
 Generated by Apache Maven Doxia at 2016-11-07
 Rendered using Reflow Maven Skin 1.1.1 (http://andriusvelykis.github.io/reflow-maven-skin)
-->
<html  xml:lang="en" lang="en">

	<head>
		<meta charset="UTF-8" />
		<title>Apache HBase &#x2013;  
      Apache HBase (TM) ACID Properties
    </title>
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<meta name="description" content="" />
		<meta http-equiv="content-language" content="en" />

		<link href="http://netdna.bootstrapcdn.com/bootswatch/2.3.2/spacelab/bootstrap.min.css" rel="stylesheet" />
		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-responsive.min.css" rel="stylesheet" />
		<link href="./css/bootswatch.css" rel="stylesheet" />
		<link href="./css/reflow-skin.css" rel="stylesheet" />


		<link href="./css/lightbox.css" rel="stylesheet" />

		<link href="./css/site.css" rel="stylesheet" />
		<link href="./css/print.css" rel="stylesheet" media="print" />

		<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
		<!--[if lt IE 9]>
			<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
		<![endif]-->



	</head>

	<body class="page-acid-semantics project-hbase" data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">

		<div class="navbar navbar-fixed-top">
			<div class="navbar-inner">
				<div class="container">
					<a class="btn btn-navbar" data-toggle="collapse" data-target="#top-nav-collapse">
						<span class="icon-bar"></span>
						<span class="icon-bar"></span>
						<span class="icon-bar"></span>
					</a>
					<div class="nav-collapse collapse" id="top-nav-collapse">
						<ul class="nav pull-right">
							<li class="dropdown">
								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache HBase Project <b class="caret"></b></a>
								<ul class="dropdown-menu">
									<li ><a href="index.html" title="Overview">Overview</a></li>
									<li ><a href="license.html" title="License">License</a></li>
									<li ><a href="http://www.apache.org/dyn/closer.cgi/hbase/" title="Downloads" class="externalLink">Downloads</a></li>
									<li ><a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel" title="Release Notes" class="externalLink">Release Notes</a></li>
									<li ><a href="issue-tracking.html" title="Issue Tracking">Issue Tracking</a></li>
									<li ><a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a></li>
									<li ><a href="source-repository.html" title="Source Repository">Source Repository</a></li>
									<li ><a href="https://reviews.apache.org" title="ReviewBoard" class="externalLink">ReviewBoard</a></li>
									<li ><a href="team-list.html" title="Team">Team</a></li>
									<li ><a href="sponsors.html" title="Thanks">Thanks</a></li>
									<li ><a href="http://blogs.apache.org/hbase/" title="Blog" class="externalLink">Blog</a></li>
									<li ><a href="resources.html" title="Other resources">Other resources</a></li>
								</ul>
							</li>
							<li class="dropdown active">
								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
								<ul class="dropdown-menu">
									<li ><a href="book.html" title="Reference Guide" target="_blank">Reference Guide</a></li>
									<li ><a href="apache_hbase_reference_guide.pdf" title="Reference Guide (PDF)" target="_blank">Reference Guide (PDF)</a></li>
									<li ><a href="book.html#quickstart" title="Getting Started" target="_blank">Getting Started</a></li>
									<li ><a href="apidocs/index.html" title="User API" target="_blank">User API</a></li>
									<li ><a href="devapidocs/index.html" title="Developer API" target="_blank">Developer API</a></li>
									<li ><a href="xref/index.html" title="X-Ref">X-Ref</a></li>
									<li ><a href="http://abloz.com/hbase/book.html" title="中文参考指南(单页)" target="_blank" class="externalLink">中文参考指南(单页)</a></li>
									<li ><a href="book.html#faq" title="FAQ" target="_blank">FAQ</a></li>
									<li ><a href="book.html#other.info" title="Videos/Presentations" target="_blank">Videos/Presentations</a></li>
									<li ><a href="http://wiki.apache.org/hadoop/Hbase" title="Wiki" target="_blank" class="externalLink">Wiki</a></li>
									<li class="active"><a href="" title="ACID Semantics" target="_blank">ACID Semantics</a></li>
									<li ><a href="book.html#arch.bulk.load" title="Bulk Loads" target="_blank">Bulk Loads</a></li>
									<li ><a href="metrics.html" title="Metrics" target="_blank">Metrics</a></li>
									<li ><a href="cygwin.html" title="HBase on Windows" target="_blank">HBase on Windows</a></li>
									<li ><a href="replication.html" title="Cluster replication" target="_blank">Cluster replication</a></li>
								</ul>
							</li>
							<li class="dropdown">
								<a href="#" class="dropdown-toggle" data-toggle="dropdown">0.94 Documentation <b class="caret"></b></a>
								<ul class="dropdown-menu">
									<li ><a href="0.94/apidocs/index.html" title="API" target="_blank">API</a></li>
									<li ><a href="0.94/xref/index.html" title="X-Ref" target="_blank">X-Ref</a></li>
									<li ><a href="0.94/book.html" title="Ref Guide (single-page)" target="_blank">Ref Guide (single-page)</a></li>
								</ul>
							</li>
							<li class="dropdown">
								<a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
								<ul class="dropdown-menu">
									<li ><a href="http://www.apache.org/foundation/" title="Apache Software Foundation" target="_blank" class="externalLink">Apache Software Foundation</a></li>
									<li ><a href="http://www.apache.org/foundation/how-it-works.html" title="How Apache Works" target="_blank" class="externalLink">How Apache Works</a></li>
									<li ><a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsoring Apache" target="_blank" class="externalLink">Sponsoring Apache</a></li>
								</ul>
							</li>
						</ul>
					</div><!--/.nav-collapse -->
				</div>
			</div>
		</div>

	<div class="container">

	<!-- Masthead
	================================================== -->

	<header>
	<div class="jumbotron subhead">
		<div class="row" id="banner">
			<div class="span12">
				<div class="pull-left">
					<a href="./" id="bannerLeft"><img src="images/hbase_logo.png" alt='"'Apache HBase'"' /></a>
				</div>
				<div class="pull-right">
					<a href="http://hbasecon.com/" id="bannerRight"><img src="images/hbasecon2015.30percent.png" alt='"'Apache HBase Orca'"' /></a>
				</div>
			</div>
		</div>
	</div>
		<div>
			<ul class="breadcrumb">
				<li class="projectVersion version-date">Version: 1.1.8-SNAPSHOT</li>
				<li class="divider">|</li>
				<li class="publishDate version-date">Last Published: 2016-11-07</li>
			</ul>
		</div>
	</header>

	<div class="main-body">
	<div class="row">
		<div class="span12">
			<div class="body-content">
<!-- Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you 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="section"> 
 <div class="page-header">
  <h2 id="About_this_Document">About this Document</h2>
 </div> 
 <p>Apache HBase (TM) is not an ACID compliant database. However, it does guarantee certain specific properties.</p> 
 <p>This specification enumerates the ACID properties of HBase.</p> 
</div> 
<div class="section"> 
 <h2 id="Definitions">Definitions</h2> 
 <p>For the sake of common vocabulary, we define the following terms:</p> 
 <dl> 
  <dt>
    Atomicity 
  </dt> 
  <dd>
    an operation is atomic if it either completes entirely or not at all 
  </dd> 
  <dt>
    Consistency 
  </dt> 
  <dd>
    all actions cause the table to transition from one valid state directly to another (eg a row will not disappear during an update, etc) 
  </dd> 
  <dt>
    Isolation 
  </dt> 
  <dd>
    an operation is isolated if it appears to complete independently of any other concurrent transaction 
  </dd> 
  <dt>
    Durability 
  </dt> 
  <dd>
    any update that reports &quot;successful&quot; to the client will not be lost 
  </dd> 
  <dt>
    Visibility 
  </dt> 
  <dd>
    an update is considered visible if any subsequent read will see the update as having been committed 
  </dd> 
 </dl> 
 <p> The terms <i>must</i> and <i>may</i> are used as specified by RFC 2119. In short, the word &quot;must&quot; implies that, if some case exists where the statement is not true, it is a bug. The word &quot;may&quot; implies that, even if the guarantee is provided in a current release, users should not rely on it. </p> 
</div> 
<div class="section"> 
 <h2 id="APIs_to_consider">APIs to consider</h2> 
 <ul> 
  <li>Read APIs 
   <ul> 
    <li>get</li> 
    <li>scan</li> 
   </ul> </li> 
  <li>Write APIs</li> 
  <ul> 
   <li>put</li> 
   <li>batch put</li> 
   <li>delete</li> 
  </ul> 
  <li>Combination (read-modify-write) APIs</li> 
  <ul> 
   <li>incrementColumnValue</li> 
   <li>checkAndPut</li> 
  </ul> 
 </ul> 
</div> 
<div class="section"> 
 <h2 id="Guarantees_Provided">Guarantees Provided</h2> 
 <div class="section"> 
  <h2 id="Atomicity">Atomicity</h2> 
  <ol style="list-style-type: decimal"> 
   <li>All mutations are atomic within a row. Any put will either wholely succeed or wholely fail.[3]</li> 
   <ol style="list-style-type: decimal"> 
    <li>An operation that returns a &quot;success&quot; code has completely succeeded.</li> 
    <li>An operation that returns a &quot;failure&quot; code has completely failed.</li> 
    <li>An operation that times out may have succeeded and may have failed. However, it will not have partially succeeded or failed.</li> 
   </ol> 
   <li> This is true even if the mutation crosses multiple column families within a row.</li> 
   <li> APIs that mutate several rows will _not_ be atomic across the multiple rows. For example, a multiput that operates on rows 'a','b', and 'c' may return having mutated some but not all of the rows. In such cases, these APIs will return a list of success codes, each of which may be succeeded, failed, or timed out as described above.</li> 
   <li> The checkAndPut API happens atomically like the typical compareAndSet (CAS) operation found in many hardware architectures.</li> 
   <li> The order of mutations is seen to happen in a well-defined order for each row, with no interleaving. For example, if one writer issues the mutation &quot;a=1,b=1,c=1&quot; and another writer issues the mutation &quot;a=2,b=2,c=2&quot;, the row must either be &quot;a=1,b=1,c=1&quot; or &quot;a=2,b=2,c=2&quot; and must <i>not</i> be something like &quot;a=1,b=2,c=1&quot;.</li> 
   <ol style="list-style-type: decimal"> 
    <li>Please note that this is not true _across rows_ for multirow batch mutations.</li> 
   </ol> 
  </ol> 
 </div> 
 <div class="section"> 
  <h2 id="Consistency_and_Isolation">Consistency and Isolation</h2> 
  <ol style="list-style-type: decimal"> 
   <li>All rows returned via any access API will consist of a complete row that existed at some point in the table's history.</li> 
   <li>This is true across column families - i.e a get of a full row that occurs concurrent with some mutations 1,2,3,4,5 will return a complete row that existed at some point in time between mutation i and i+1 for some i between 1 and 5.</li> 
   <li>The state of a row will only move forward through the history of edits to it.</li> 
  </ol> 
  <div class="section"> 
   <h2 id="Consistency_of_Scans">Consistency of Scans</h2> 
   <p> A scan is <b>not</b> a consistent view of a table. Scans do <b>not</b> exhibit <i>snapshot isolation</i>. </p> 
   <p> Rather, scans have the following properties: </p> 
   <ol style="list-style-type: decimal"> 
    <li> Any row returned by the scan will be a consistent view (i.e. that version of the complete row existed at some point in time) [1] </li> 
    <li> A scan will always reflect a view of the data <i>at least as new as</i> the beginning of the scan. This satisfies the visibility guarantees enumerated below.</li> 
    <ol style="list-style-type: decimal"> 
     <li>For example, if client A writes data X and then communicates via a side channel to client B, any scans started by client B will contain data at least as new as X.</li> 
     <li>A scan _must_ reflect all mutations committed prior to the construction of the scanner, and _may_ reflect some mutations committed subsequent to the construction of the scanner.</li> 
     <li>Scans must include <i>all</i> data written prior to the scan (except in the case where data is subsequently mutated, in which case it _may_ reflect the mutation)</li> 
    </ol> 
   </ol> 
   <p> Those familiar with relational databases will recognize this isolation level as &quot;read committed&quot;. </p> 
   <p> Please note that the guarantees listed above regarding scanner consistency are referring to &quot;transaction commit time&quot;, not the &quot;timestamp&quot; field of each cell. That is to say, a scanner started at time <i>t</i> may see edits with a timestamp value greater than <i>t</i>, if those edits were committed with a &quot;forward dated&quot; timestamp before the scanner was constructed. </p> 
  </div> 
 </div> 
 <div class="section"> 
  <h2 id="Visibility">Visibility</h2> 
  <ol style="list-style-type: decimal"> 
   <li> When a client receives a &quot;success&quot; response for any mutation, that mutation is immediately visible to both that client and any client with whom it later communicates through side channels. [3]</li> 
   <li> A row must never exhibit so-called &quot;time-travel&quot; properties. That is to say, if a series of mutations moves a row sequentially through a series of states, any sequence of concurrent reads will return a subsequence of those states.</li> 
   <ol style="list-style-type: decimal"> 
    <li>For example, if a row's cells are mutated using the &quot;incrementColumnValue&quot; API, a client must never see the value of any cell decrease.</li> 
    <li>This is true regardless of which read API is used to read back the mutation.</li> 
   </ol> 
   <li> Any version of a cell that has been returned to a read operation is guaranteed to be durably stored.</li> 
  </ol> 
 </div> 
 <div class="section"> 
  <h2 id="Durability">Durability</h2> 
  <ol style="list-style-type: decimal"> 
   <li> All visible data is also durable data. That is to say, a read will never return data that has not been made durable on disk[2]</li> 
   <li> Any operation that returns a &quot;success&quot; code (eg does not throw an exception) will be made durable.[3]</li> 
   <li> Any operation that returns a &quot;failure&quot; code will not be made durable (subject to the Atomicity guarantees above)</li> 
   <li> All reasonable failure scenarios will not affect any of the guarantees of this document.</li> 
  </ol> 
 </div> 
 <div class="section"> 
  <h2 id="Tunability">Tunability</h2> 
  <p>All of the above guarantees must be possible within Apache HBase. For users who would like to trade off some guarantees for performance, HBase may offer several tuning options. For example:</p> 
  <ul> 
   <li>Visibility may be tuned on a per-read basis to allow stale reads or time travel.</li> 
   <li>Durability may be tuned to only flush data to disk on a periodic basis</li> 
  </ul> 
 </div> 
</div> 
<div class="section"> 
 <h2 id="More_Information">More Information</h2> 
 <p> For more information, see the <a href="book.html#client">client architecture</a> or <a href="book.html#datamodel">data model</a> sections in the Apache HBase Reference Guide. </p> 
</div> 
<div class="section"> 
 <h2 id="Footnotes">Footnotes</h2> 
 <p>[1] A consistent view is not guaranteed intra-row scanning -- i.e. fetching a portion of a row in one RPC then going back to fetch another portion of the row in a subsequent RPC. Intra-row scanning happens when you set a limit on how many values to return per Scan#next (See <a class="externalLink" href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Scan.html#setBatch(int)">Scan#setBatch(int)</a>). </p> 
 <p>[2] In the context of Apache HBase, &quot;durably on disk&quot; implies an hflush() call on the transaction log. This does not actually imply an fsync() to magnetic media, but rather just that the data has been written to the OS cache on all replicas of the log. In the case of a full datacenter power loss, it is possible that the edits are not truly durable.</p> 
 <p>[3] Puts will either wholely succeed or wholely fail, provided that they are actually sent to the RegionServer. If the writebuffer is used, Puts will not be sent until the writebuffer is filled or it is explicitly flushed.</p> 
</div>
			</div>
		</div>
	</div>
	</div>

	</div><!-- /container -->

	<!-- Footer
	================================================== -->
	<footer class="well">
		<div class="container">
			<div class="row">
				<div class="span3 bottom-nav">
					<ul class="nav nav-list">
						<li class="nav-header">Apache HBase Project</li>
						<li >
							<a href="index.html" title="Overview">Overview</a>
						</li>
						<li >
							<a href="license.html" title="License">License</a>
						</li>
						<li >
							<a href="http://www.apache.org/dyn/closer.cgi/hbase/" title="Downloads" class="externalLink">Downloads</a>
						</li>
						<li >
							<a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel" title="Release Notes" class="externalLink">Release Notes</a>
						</li>
						<li >
							<a href="issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
						</li>
						<li >
							<a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a>
						</li>
						<li >
							<a href="source-repository.html" title="Source Repository">Source Repository</a>
						</li>
						<li >
							<a href="https://reviews.apache.org" title="ReviewBoard" class="externalLink">ReviewBoard</a>
						</li>
						<li >
							<a href="team-list.html" title="Team">Team</a>
						</li>
						<li >
							<a href="sponsors.html" title="Thanks">Thanks</a>
						</li>
						<li >
							<a href="http://blogs.apache.org/hbase/" title="Blog" class="externalLink">Blog</a>
						</li>
						<li >
							<a href="resources.html" title="Other resources">Other resources</a>
						</li>
					</ul>
				</div>
				<div class="span3 bottom-nav">
					<ul class="nav nav-list">
						<li class="nav-header">Documentation</li>
						<li >
							<a href="book.html" title="Reference Guide" target="_blank">Reference Guide</a>
						</li>
						<li >
							<a href="apache_hbase_reference_guide.pdf" title="Reference Guide (PDF)" target="_blank">Reference Guide (PDF)</a>
						</li>
						<li >
							<a href="book.html#quickstart" title="Getting Started" target="_blank">Getting Started</a>
						</li>
						<li >
							<a href="apidocs/index.html" title="User API" target="_blank">User API</a>
						</li>
						<li >
							<a href="devapidocs/index.html" title="Developer API" target="_blank">Developer API</a>
						</li>
						<li >
							<a href="xref/index.html" title="X-Ref">X-Ref</a>
						</li>
						<li >
							<a href="http://abloz.com/hbase/book.html" title="中文参考指南(单页)" target="_blank" class="externalLink">中文参考指南(单页)</a>
						</li>
						<li >
							<a href="book.html#faq" title="FAQ" target="_blank">FAQ</a>
						</li>
						<li >
							<a href="book.html#other.info" title="Videos/Presentations" target="_blank">Videos/Presentations</a>
						</li>
						<li >
							<a href="http://wiki.apache.org/hadoop/Hbase" title="Wiki" target="_blank" class="externalLink">Wiki</a>
						</li>
						<li class="active">
							<a href="#" title="ACID Semantics" target="_blank">ACID Semantics</a>
						</li>
						<li >
							<a href="book.html#arch.bulk.load" title="Bulk Loads" target="_blank">Bulk Loads</a>
						</li>
						<li >
							<a href="metrics.html" title="Metrics" target="_blank">Metrics</a>
						</li>
						<li >
							<a href="cygwin.html" title="HBase on Windows" target="_blank">HBase on Windows</a>
						</li>
						<li >
							<a href="replication.html" title="Cluster replication" target="_blank">Cluster replication</a>
						</li>
					</ul>
				</div>
				<div class="span3 bottom-nav">
					<ul class="nav nav-list">
						<li class="nav-header">0.94 Documentation</li>
						<li >
							<a href="0.94/apidocs/index.html" title="API" target="_blank">API</a>
						</li>
						<li >
							<a href="0.94/xref/index.html" title="X-Ref" target="_blank">X-Ref</a>
						</li>
						<li >
							<a href="0.94/book.html" title="Ref Guide (single-page)" target="_blank">Ref Guide (single-page)</a>
						</li>
						<li class="nav-header">ASF</li>
						<li >
							<a href="http://www.apache.org/foundation/" title="Apache Software Foundation" target="_blank" class="externalLink">Apache Software Foundation</a>
						</li>
						<li >
							<a href="http://www.apache.org/foundation/how-it-works.html" title="How Apache Works" target="_blank" class="externalLink">How Apache Works</a>
						</li>
						<li >
							<a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsoring Apache" target="_blank" class="externalLink">Sponsoring Apache</a>
						</li>
					</ul>
				</div>
			</div>
		</div>
	</footer>

	<div class="container subfooter">
		<div class="row">
			<div class="span12">
				<p class="pull-right"><a href="#">Back to top</a></p>
				<p class="copyright">Copyright &copy;2007-2016 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</p>
				<p><a href="http://github.com/andriusvelykis/reflow-maven-skin" title="Reflow Maven skin">Reflow Maven skin</a> by <a href="http://andrius.velykis.lt" target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
			</div>
		</div>
	</div>

	<!-- Le javascript
	================================================== -->
	<!-- Placed at the end of the document so the pages load faster -->
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

	<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
	<script src="./js/lightbox.min.js"></script>
	<script src="./js/reflow-scroll.js"></script>

	<script src="./js/reflow-skin.js"></script>

	</body>
</html>
