cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tylerho...@apache.org
Subject svn commit: r1757419 [24/29] - in /cassandra/site/src/doc: ./ 3.10/ 3.10/_images/ 3.10/_sources/ 3.10/_sources/architecture/ 3.10/_sources/configuration/ 3.10/_sources/cql/ 3.10/_sources/data_modeling/ 3.10/_sources/development/ 3.10/_sources/faq/ 3.10...
Date Tue, 23 Aug 2016 19:25:18 GMT
Propchange: cassandra/site/src/doc/3.10/objects.inv
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: cassandra/site/src/doc/3.10/operating/backups.html
URL: http://svn.apache.org/viewvc/cassandra/site/src/doc/3.10/operating/backups.html?rev=1757419&view=auto
==============================================================================
--- cassandra/site/src/doc/3.10/operating/backups.html (added)
+++ cassandra/site/src/doc/3.10/operating/backups.html Tue Aug 23 19:25:17 2016
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Backups"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Bulk Loading" href="bulk_loading.html"/>
+      <link rel="prev" title="Change Data Capture" href="cdc.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ""
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-2">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="container">
+          
+  <div class="section" id="backups">
+<h1>Backups<a class="headerlink" href="#backups" title="Permalink to this headline">¶</a></h1>
+<div class="admonition-todo admonition" id="index-0">
+<p class="first admonition-title">Todo</p>
+<p class="last">TODO</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="bulk_loading.html" class="btn btn-default pull-right " role="button" title="Bulk Loading" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="cdc.html" class="btn btn-default" role="button" title="Change Data Capture" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+    <div class="col-md-2">
+    </div>
+  </div>
+</div>
\ No newline at end of file

Added: cassandra/site/src/doc/3.10/operating/bloom_filters.html
URL: http://svn.apache.org/viewvc/cassandra/site/src/doc/3.10/operating/bloom_filters.html?rev=1757419&view=auto
==============================================================================
--- cassandra/site/src/doc/3.10/operating/bloom_filters.html (added)
+++ cassandra/site/src/doc/3.10/operating/bloom_filters.html Tue Aug 23 19:25:17 2016
@@ -0,0 +1,162 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Bloom Filters"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Compression" href="compression.html"/>
+      <link rel="prev" title="Compaction" href="compaction.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ""
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-2">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Bloom Filters</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#changing">Changing</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="container">
+          
+  <div class="section" id="bloom-filters">
+<h1>Bloom Filters<a class="headerlink" href="#bloom-filters" title="Permalink to this headline">¶</a></h1>
+<p>In the read path, Cassandra merges data on disk (in SSTables) with data in RAM (in memtables). To avoid checking every
+SSTable data file for the partition being requested, Cassandra employs a data structure known as a bloom filter.</p>
+<p>Bloom filters are a probabilistic data structure that allows Cassandra to determine one of two possible states: - The
+data definitely does not exist in the given file, or - The data probably exists in the given file.</p>
+<p>While bloom filters can not guarantee that the data exists in a given SSTable, bloom filters can be made more accurate
+by allowing them to consume more RAM. Operators have the opportunity to tune this behavior per table by adjusting the
+the <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> to a float between 0 and 1.</p>
+<p>The default value for <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> is 0.1 for tables using LeveledCompactionStrategy and 0.01 for all
+other cases.</p>
+<p>Bloom filters are stored in RAM, but are stored offheap, so operators should not consider bloom filters when selecting
+the maximum heap size.  As accuracy improves (as the <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> gets closer to 0), memory usage
+increases non-linearly - the bloom filter for <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span> <span class="pre">=</span> <span class="pre">0.01</span></code> will require about three times as much
+memory as the same table with <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span> <span class="pre">=</span> <span class="pre">0.1</span></code>.</p>
+<p>Typical values for <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> are usually between 0.01 (1%) to 0.1 (10%) false-positive chance, where
+Cassandra may scan an SSTable for a row, only to find that it does not exist on the disk. The parameter should be tuned
+by use case:</p>
+<ul class="simple">
+<li>Users with more RAM and slower disks may benefit from setting the <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> to a numerically lower
+number (such as 0.01) to avoid excess IO operations</li>
+<li>Users with less RAM, more dense nodes, or very fast disks may tolerate a higher <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> in order to
+save RAM at the expense of excess IO operations</li>
+<li>In workloads that rarely read, or that only perform reads by scanning the entire data set (such as analytics
+workloads), setting the <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> to a much higher number is acceptable.</li>
+</ul>
+<div class="section" id="changing">
+<h2>Changing<a class="headerlink" href="#changing" title="Permalink to this headline">¶</a></h2>
+<p>The bloom filter false positive chance is visible in the <code class="docutils literal"><span class="pre">DESCRIBE</span> <span class="pre">TABLE</span></code> output as the field
+<code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code>. Operators can change the value with an <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> statement:</p>
+<div class="highlight-none"><div class="highlight"><pre><span></span>ALTER TABLE keyspace.table WITH bloom_filter_fp_chance=0.01
+</pre></div>
+</div>
+<p>Operators should be aware, however, that this change is not immediate: the bloom filter is calculated when the file is
+written, and persisted on disk as the Filter component of the SSTable. Upon issuing an <code class="docutils literal"><span class="pre">ALTER</span> <span class="pre">TABLE</span></code> statement, new
+files on disk will be written with the new <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code>, but existing sstables will not be modified until
+they are compacted - if an operator needs a change to <code class="docutils literal"><span class="pre">bloom_filter_fp_chance</span></code> to take effect, they can trigger an
+SSTable rewrite using <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">scrub</span></code> or <code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">upgradesstables</span> <span class="pre">-a</span></code>, both of which will rebuild the sstables on
+disk, regenerating the bloom filters in the progress.</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="compression.html" class="btn btn-default pull-right " role="button" title="Compression" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="compaction.html" class="btn btn-default" role="button" title="Compaction" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+    <div class="col-md-2">
+    </div>
+  </div>
+</div>
\ No newline at end of file

Added: cassandra/site/src/doc/3.10/operating/bulk_loading.html
URL: http://svn.apache.org/viewvc/cassandra/site/src/doc/3.10/operating/bulk_loading.html?rev=1757419&view=auto
==============================================================================
--- cassandra/site/src/doc/3.10/operating/bulk_loading.html (added)
+++ cassandra/site/src/doc/3.10/operating/bulk_loading.html Tue Aug 23 19:25:17 2016
@@ -0,0 +1,125 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Bulk Loading"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Monitoring" href="metrics.html"/>
+      <link rel="prev" title="Backups" href="backups.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ""
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-2">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="container">
+          
+  <div class="section" id="bulk-loading">
+<span id="id1"></span><h1>Bulk Loading<a class="headerlink" href="#bulk-loading" title="Permalink to this headline">¶</a></h1>
+<div class="admonition-todo admonition" id="index-0">
+<p class="first admonition-title">Todo</p>
+<p class="last">TODO</p>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="metrics.html" class="btn btn-default pull-right " role="button" title="Monitoring" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="backups.html" class="btn btn-default" role="button" title="Backups" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+    <div class="col-md-2">
+    </div>
+  </div>
+</div>
\ No newline at end of file

Added: cassandra/site/src/doc/3.10/operating/cdc.html
URL: http://svn.apache.org/viewvc/cassandra/site/src/doc/3.10/operating/cdc.html?rev=1757419&view=auto
==============================================================================
--- cassandra/site/src/doc/3.10/operating/cdc.html (added)
+++ cassandra/site/src/doc/3.10/operating/cdc.html Tue Aug 23 19:25:17 2016
@@ -0,0 +1,188 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Change Data Capture"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Backups" href="backups.html"/>
+      <link rel="prev" title="Compression" href="compression.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ""
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-2">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compaction.html">Compaction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Change Data Capture</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#overview">Overview</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#configuration">Configuration</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#reading-commitlogsegments">Reading CommitLogSegments</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#warnings">Warnings</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#further-reading">Further Reading</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="container">
+          
+  <div class="section" id="change-data-capture">
+<h1>Change Data Capture<a class="headerlink" href="#change-data-capture" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="overview">
+<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
+<p>Change data capture (CDC) provides a mechanism to flag specific tables for archival as well as rejecting writes to those
+tables once a configurable size-on-disk for the combined flushed and unflushed CDC-log is reached. An operator can
+enable CDC on a table by setting the table property <code class="docutils literal"><span class="pre">cdc=true</span></code> (either when <a class="reference internal" href="../cql/ddl.html#create-table-statement"><span class="std std-ref">creating the table</span></a> or <a class="reference internal" href="../cql/ddl.html#alter-table-statement"><span class="std std-ref">altering it</span></a>), after which any CommitLogSegments containing
+data for a CDC-enabled table are moved to the directory specified in <code class="docutils literal"><span class="pre">cassandra.yaml</span></code> on segment discard. A threshold
+of total disk space allowed is specified in the yaml at which time newly allocated CommitLogSegments will not allow CDC
+data until a consumer parses and removes data from the destination archival directory.</p>
+</div>
+<div class="section" id="configuration">
+<h2>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="enabling-or-disable-cdc-on-a-table">
+<h3>Enabling or disable CDC on a table<a class="headerlink" href="#enabling-or-disable-cdc-on-a-table" title="Permalink to this headline">¶</a></h3>
+<p>CDC is enable or disable through the <cite>cdc</cite> table property, for instance:</p>
+<div class="highlight-none"><div class="highlight"><pre><span></span>CREATE TABLE foo (a int, b text, PRIMARY KEY(a)) WITH cdc=true;
+
+ALTER TABLE foo WITH cdc=true;
+
+ALTER TABLE foo WITH cdc=false;
+</pre></div>
+</div>
+</div>
+<div class="section" id="cassandra-yaml-parameters">
+<h3>cassandra.yaml parameters<a class="headerlink" href="#cassandra-yaml-parameters" title="Permalink to this headline">¶</a></h3>
+<p>The following <cite>cassandra.yaml</cite> are available for CDC:</p>
+<dl class="docutils">
+<dt><code class="docutils literal"><span class="pre">cdc_enabled</span></code> (default: false)</dt>
+<dd>Enable or disable CDC operations node-wide.</dd>
+<dt><code class="docutils literal"><span class="pre">cdc_raw_directory</span></code> (default: <code class="docutils literal"><span class="pre">$CASSANDRA_HOME/data/cdc_raw</span></code>)</dt>
+<dd>Destination for CommitLogSegments to be moved after all corresponding memtables are flushed.</dd>
+<dt><code class="docutils literal"><span class="pre">cdc_free_space_in_mb</span></code>: (default: min of 4096 and 1/8th volume space)</dt>
+<dd>Calculated as sum of all active CommitLogSegments that permit CDC + all flushed CDC segments in
+<code class="docutils literal"><span class="pre">cdc_raw_directory</span></code>.</dd>
+<dt><code class="docutils literal"><span class="pre">cdc_free_space_check_interval_ms</span></code> (default: 250)</dt>
+<dd>When at capacity, we limit the frequency with which we re-calculate the space taken up by <code class="docutils literal"><span class="pre">cdc_raw_directory</span></code> to
+prevent burning CPU cycles unnecessarily. Default is to check 4 times per second.</dd>
+</dl>
+</div>
+</div>
+<div class="section" id="reading-commitlogsegments">
+<span id="id1"></span><h2>Reading CommitLogSegments<a class="headerlink" href="#reading-commitlogsegments" title="Permalink to this headline">¶</a></h2>
+<p>This implementation included a refactor of CommitLogReplayer into <a class="reference external" href="https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReader.java">CommitLogReader.java</a>.
+Usage is <a class="reference external" href="https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java#L132-L140">fairly straightforward</a>
+with a <a class="reference external" href="https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReader.java#L71-L103">variety of signatures</a>
+available for use. In order to handle mutations read from disk, implement <a class="reference external" href="https://github.com/apache/cassandra/blob/e31e216234c6b57a531cae607e0355666007deb2/src/java/org/apache/cassandra/db/commitlog/CommitLogReadHandler.java">CommitLogReadHandler</a>.</p>
+</div>
+<div class="section" id="warnings">
+<h2>Warnings<a class="headerlink" href="#warnings" title="Permalink to this headline">¶</a></h2>
+<p><strong>Do not enable CDC without some kind of consumption process in-place.</strong></p>
+<p>The initial implementation of Change Data Capture does not include a parser (see <a class="reference internal" href="#reading-commitlogsegments"><span class="std std-ref">Reading CommitLogSegments</span></a> above)
+so, if CDC is enabled on a node and then on a table, the <code class="docutils literal"><span class="pre">cdc_free_space_in_mb</span></code> will fill up and then writes to
+CDC-enabled tables will be rejected unless some consumption process is in place.</p>
+</div>
+<div class="section" id="further-reading">
+<h2>Further Reading<a class="headerlink" href="#further-reading" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="https://docs.google.com/document/d/1ZxCWYkeZTquxsvf5hdPc0fiUnUHna8POvgt6TIzML4Y/edit">Design doc</a></li>
+<li><a class="reference external" href="https://issues.apache.org/jira/browse/CASSANDRA-8844">JIRA ticket</a></li>
+</ul>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="backups.html" class="btn btn-default pull-right " role="button" title="Backups" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="compression.html" class="btn btn-default" role="button" title="Compression" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+    <div class="col-md-2">
+    </div>
+  </div>
+</div>
\ No newline at end of file

Added: cassandra/site/src/doc/3.10/operating/compaction.html
URL: http://svn.apache.org/viewvc/cassandra/site/src/doc/3.10/operating/compaction.html?rev=1757419&view=auto
==============================================================================
--- cassandra/site/src/doc/3.10/operating/compaction.html (added)
+++ cassandra/site/src/doc/3.10/operating/compaction.html Tue Aug 23 19:25:17 2016
@@ -0,0 +1,513 @@
+---
+layout: docpage
+
+title: "Documentation"
+
+is_homepage: false
+is_sphinx_doc: true
+
+doc-parent: "Operating Cassandra"
+
+doc-title: "Compaction"
+doc-header-links: '
+  <link rel="top" title="Apache Cassandra Documentation v3.10" href="../index.html"/>
+      <link rel="up" title="Operating Cassandra" href="index.html"/>
+      <link rel="next" title="Bloom Filters" href="bloom_filters.html"/>
+      <link rel="prev" title="Hints" href="hints.html"/>
+'
+doc-search-path: "../search.html"
+
+extra-footer: '
+<script type="text/javascript">
+    var DOCUMENTATION_OPTIONS = {
+      URL_ROOT:    "",
+      VERSION:     "",
+      COLLAPSE_INDEX: false,
+      FILE_SUFFIX: ".html",
+      HAS_SOURCE:  false,
+      SOURCELINK_SUFFIX: ""
+    };
+</script>
+'
+
+---
+<div class="container-fluid">
+  <div class="row">
+    <div class="col-md-2">
+      <div class="doc-navigation">
+        <div class="doc-menu" role="navigation">
+          <div class="navbar-header">
+            <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+          </div>
+          <div class="navbar-collapse collapse sidebar-navbar-collapse">
+            <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
+              <div class="form-group">
+                <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </div>
+            </form>
+            
+            
+            
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="index.html">Operating Cassandra</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="snitch.html">Snitch</a></li>
+<li class="toctree-l2"><a class="reference internal" href="topo_changes.html">Adding, replacing, moving and removing nodes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="repair.html">Repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="read_repair.html">Read repair</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hints.html">Hints</a></li>
+<li class="toctree-l2 current"><a class="current reference internal" href="#">Compaction</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#types-of-compaction">Types of compaction</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#when-is-a-minor-compaction-triggered">When is a minor compaction triggered?</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#merging-sstables">Merging sstables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#tombstones-and-garbage-collection-gc-grace">Tombstones and Garbage Collection (GC) Grace</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#ttl">TTL</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#fully-expired-sstables">Fully expired sstables</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#repaired-unrepaired-data">Repaired/unrepaired data</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#data-directories">Data directories</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#single-sstable-tombstone-compaction">Single sstable tombstone compaction</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#common-options">Common options</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#compaction-nodetool-commands">Compaction nodetool commands</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#switching-the-compaction-strategy-and-options-using-jmx">Switching the compaction strategy and options using JMX</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#more-detailed-compaction-logging">More detailed compaction logging</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#size-tiered-compaction-strategy">Size Tiered Compaction Strategy</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#leveled-compaction-strategy">Leveled Compaction Strategy</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#time-window-compactionstrategy">Time Window CompactionStrategy</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="bloom_filters.html">Bloom Filters</a></li>
+<li class="toctree-l2"><a class="reference internal" href="compression.html">Compression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cdc.html">Change Data Capture</a></li>
+<li class="toctree-l2"><a class="reference internal" href="backups.html">Backups</a></li>
+<li class="toctree-l2"><a class="reference internal" href="bulk_loading.html">Bulk Loading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="metrics.html">Monitoring</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l2"><a class="reference internal" href="hardware.html">Hardware Choices</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../development/index.html">Cassandra Development</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs and Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
+</ul>
+
+            
+            
+          </div><!--/.nav-collapse -->
+        </div>
+      </div>
+    </div>
+    <div class="col-md-8">
+      <div class="content doc-content">
+        <div class="container">
+          
+  <div class="section" id="compaction">
+<span id="id1"></span><h1>Compaction<a class="headerlink" href="#compaction" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="types-of-compaction">
+<h2>Types of compaction<a class="headerlink" href="#types-of-compaction" title="Permalink to this headline">¶</a></h2>
+<p>The concept of compaction is used for different kinds of operations in Cassandra, the common thing about these
+operations is that it takes one or more sstables and output new sstables. The types of compactions are;</p>
+<dl class="docutils">
+<dt>Minor compaction</dt>
+<dd>triggered automatically in Cassandra.</dd>
+<dt>Major compaction</dt>
+<dd>a user executes a compaction over all sstables on the node.</dd>
+<dt>User defined compaction</dt>
+<dd>a user triggers a compaction on a given set of sstables.</dd>
+<dt>Scrub</dt>
+<dd>try to fix any broken sstables. This can actually remove valid data if that data is corrupted, if that happens you
+will need to run a full repair on the node.</dd>
+<dt>Upgradesstables</dt>
+<dd>upgrade sstables to the latest version. Run this after upgrading to a new major version.</dd>
+<dt>Cleanup</dt>
+<dd>remove any ranges this node does not own anymore, typically triggered on neighbouring nodes after a node has been
+bootstrapped since that node will take ownership of some ranges from those nodes.</dd>
+<dt>Secondary index rebuild</dt>
+<dd>rebuild the secondary indexes on the node.</dd>
+<dt>Anticompaction</dt>
+<dd>after repair the ranges that were actually repaired are split out of the sstables that existed when repair started.</dd>
+<dt>Sub range compaction</dt>
+<dd>It is possible to only compact a given sub range - this could be useful if you know a token that has been
+misbehaving - either gathering many updates or many deletes. (<code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">compact</span> <span class="pre">-st</span> <span class="pre">x</span> <span class="pre">-et</span> <span class="pre">y</span></code>) will pick
+all sstables containing the range between x and y and issue a compaction for those sstables. For STCS this will
+most likely include all sstables but with LCS it can issue the compaction for a subset of the sstables. With LCS
+the resulting sstable will end up in L0.</dd>
+</dl>
+</div>
+<div class="section" id="when-is-a-minor-compaction-triggered">
+<h2>When is a minor compaction triggered?<a class="headerlink" href="#when-is-a-minor-compaction-triggered" title="Permalink to this headline">¶</a></h2>
+<p>#  When an sstable is added to the node through flushing/streaming etc.
+#  When autocompaction is enabled after being disabled (<code class="docutils literal"><span class="pre">nodetool</span> <span class="pre">enableautocompaction</span></code>)
+#  When compaction adds new sstables.
+#  A check for new minor compactions every 5 minutes.</p>
+</div>
+<div class="section" id="merging-sstables">
+<h2>Merging sstables<a class="headerlink" href="#merging-sstables" title="Permalink to this headline">¶</a></h2>
+<p>Compaction is about merging sstables, since partitions in sstables are sorted based on the hash of the partition key it
+is possible to efficiently merge separate sstables. Content of each partition is also sorted so each partition can be
+merged efficiently.</p>
+</div>
+<div class="section" id="tombstones-and-garbage-collection-gc-grace">
+<h2>Tombstones and Garbage Collection (GC) Grace<a class="headerlink" href="#tombstones-and-garbage-collection-gc-grace" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="why-tombstones">
+<h3>Why Tombstones<a class="headerlink" href="#why-tombstones" title="Permalink to this headline">¶</a></h3>
+<p>When a delete request is received by Cassandra it does not actually remove the data from the underlying store. Instead
+it writes a special piece of data known as a tombstone. The Tombstone represents the delete and causes all values which
+occurred before the tombstone to not appear in queries to the database. This approach is used instead of removing values
+because of the distributed nature of Cassandra.</p>
+</div>
+<div class="section" id="deletes-without-tombstones">
+<h3>Deletes without tombstones<a class="headerlink" href="#deletes-without-tombstones" title="Permalink to this headline">¶</a></h3>
+<p>Imagine a three node cluster which has the value [A] replicated to every node.:</p>
+<div class="highlight-none"><div class="highlight"><pre><span></span>[A], [A], [A]
+</pre></div>
+</div>
+<p>If one of the nodes fails and and our delete operation only removes existing values we can end up with a cluster that
+looks like:</p>
+<div class="highlight-none"><div class="highlight"><pre><span></span>[], [], [A]
+</pre></div>
+</div>
+<p>Then a repair operation would replace the value of [A] back onto the two
+nodes which are missing the value.:</p>
+<div class="highlight-none"><div class="highlight"><pre><span></span>[A], [A], [A]
+</pre></div>
+</div>
+<p>This would cause our data to be resurrected even though it had been
+deleted.</p>
+</div>
+<div class="section" id="deletes-with-tombstones">
+<h3>Deletes with Tombstones<a class="headerlink" href="#deletes-with-tombstones" title="Permalink to this headline">¶</a></h3>
+<p>Starting again with a three node cluster which has the value [A] replicated to every node.:</p>
+<div class="highlight-none"><div class="highlight"><pre><span></span>[A], [A], [A]
+</pre></div>
+</div>
+<p>If instead of removing data we add a tombstone record, our single node failure situation will look like this.:</p>
+<div class="highlight-none"><div class="highlight"><pre><span></span>[A, Tombstone[A]], [A, Tombstone[A]], [A]
+</pre></div>
+</div>
+<p>Now when we issue a repair the Tombstone will be copied to the replica, rather than the deleted data being
+resurrected.:</p>
+<div class="highlight-none"><div class="highlight"><pre><span></span>[A, Tombstone[A]], [A, Tombstone[A]], [A, Tombstone[A]]
+</pre></div>
+</div>
+<p>Our repair operation will correctly put the state of the system to what we expect with the record [A] marked as deleted
+on all nodes. This does mean we will end up accruing Tombstones which will permanently accumulate disk space. To avoid
+keeping tombstones forever we have a parameter known as <code class="docutils literal"><span class="pre">gc_grace_seconds</span></code> for every table in Cassandra.</p>
+</div>
+<div class="section" id="the-gc-grace-seconds-parameter-and-tombstone-removal">
+<h3>The gc_grace_seconds parameter and Tombstone Removal<a class="headerlink" href="#the-gc-grace-seconds-parameter-and-tombstone-removal" title="Permalink to this headline">¶</a></h3>
+<p>The table level <code class="docutils literal"><span class="pre">gc_grace_seconds</span></code> parameter controls how long Cassandra will retain tombstones through compaction
+events before finally removing them. This duration should directly reflect the amount of time a user expects to allow
+before recovering a failed node. After <code class="docutils literal"><span class="pre">gc_grace_seconds</span></code> has expired the tombstone may be removed (meaning there will
+no longer be any record that a certain piece of data was deleted), but as a tombstone can live in one sstable and the
+data it covers in another, a compaction must also include both sstable for a tombstone to be removed. More precisely, to
+be able to drop an actual tombstone the following needs to be true;</p>
+<ul class="simple">
+<li>The tombstone must be older than <code class="docutils literal"><span class="pre">gc_grace_seconds</span></code></li>
+<li>If partition X contains the tombstone, the sstable containing the partition plus all sstables containing data older
+than the tombstone containing X must be included in the same compaction. We don&#8217;t need to care if the partition is in
+an sstable if we can guarantee that all data in that sstable is newer than the tombstone. If the tombstone is older
+than the data it cannot shadow that data.</li>
+<li>If the option <code class="docutils literal"><span class="pre">only_purge_repaired_tombstones</span></code> is enabled, tombstones are only removed if the data has also been
+repaired.</li>
+</ul>
+<p>If a node remains down or disconnected for longer than <code class="docutils literal"><span class="pre">gc_grace_seconds</span></code> it&#8217;s deleted data will be repaired back to
+the other nodes and re-appear in the cluster. This is basically the same as in the &#8220;Deletes without Tombstones&#8221; section.
+Note that tombstones will not be removed until a compaction event even if <code class="docutils literal"><span class="pre">gc_grace_seconds</span></code> has elapsed.</p>
+<p>The default value for <code class="docutils literal"><span class="pre">gc_grace_seconds</span></code> is 864000 which is equivalent to 10 days. This can be set when creating or
+altering a table using <code class="docutils literal"><span class="pre">WITH</span> <span class="pre">gc_grace_seconds</span></code>.</p>
+</div>
+</div>
+<div class="section" id="ttl">
+<h2>TTL<a class="headerlink" href="#ttl" title="Permalink to this headline">¶</a></h2>
+<p>Data in Cassandra can have an additional property called time to live - this is used to automatically drop data that has
+expired once the time is reached. Once the TTL has expired the data is converted to a tombstone which stays around for
+at least <code class="docutils literal"><span class="pre">gc_grace_seconds</span></code>. Note that if you mix data with TTL and data without TTL (or just different length of the
+TTL) Cassandra will have a hard time dropping the tombstones created since the partition might span many sstables and
+not all are compacted at once.</p>
+</div>
+<div class="section" id="fully-expired-sstables">
+<h2>Fully expired sstables<a class="headerlink" href="#fully-expired-sstables" title="Permalink to this headline">¶</a></h2>
+<p>If an sstable contains only tombstones and it is guaranteed that that sstable is not shadowing data in any other sstable
+compaction can drop that sstable. If you see sstables with only tombstones (note that TTL:ed data is considered
+tombstones once the time to live has expired) but it is not being dropped by compaction, it is likely that other
+sstables contain older data. There is a tool called <code class="docutils literal"><span class="pre">sstableexpiredblockers</span></code> that will list which sstables are
+droppable and which are blocking them from being dropped. This is especially useful for time series compaction with
+<code class="docutils literal"><span class="pre">TimeWindowCompactionStrategy</span></code> (and the deprecated <code class="docutils literal"><span class="pre">DateTieredCompactionStrategy</span></code>).</p>
+</div>
+<div class="section" id="repaired-unrepaired-data">
+<h2>Repaired/unrepaired data<a class="headerlink" href="#repaired-unrepaired-data" title="Permalink to this headline">¶</a></h2>
+<p>With incremental repairs Cassandra must keep track of what data is repaired and what data is unrepaired. With
+anticompaction repaired data is split out into repaired and unrepaired sstables. To avoid mixing up the data again
+separate compaction strategy instances are run on the two sets of data, each instance only knowing about either the
+repaired or the unrepaired sstables. This means that if you only run incremental repair once and then never again, you
+might have very old data in the repaired sstables that block compaction from dropping tombstones in the unrepaired
+(probably newer) sstables.</p>
+</div>
+<div class="section" id="data-directories">
+<h2>Data directories<a class="headerlink" href="#data-directories" title="Permalink to this headline">¶</a></h2>
+<p>Since tombstones and data can live in different sstables it is important to realize that losing an sstable might lead to
+data becoming live again - the most common way of losing sstables is to have a hard drive break down. To avoid making
+data live tombstones and actual data are always in the same data directory. This way, if a disk is lost, all versions of
+a partition are lost and no data can get undeleted. To achieve this a compaction strategy instance per data directory is
+run in addition to the compaction strategy instances containing repaired/unrepaired data, this means that if you have 4
+data directories there will be 8 compaction strategy instances running. This has a few more benefits than just avoiding
+data getting undeleted:</p>
+<ul class="simple">
+<li>It is possible to run more compactions in parallel - leveled compaction will have several totally separate levelings
+and each one can run compactions independently from the others.</li>
+<li>Users can backup and restore a single data directory.</li>
+<li>Note though that currently all data directories are considered equal, so if you have a tiny disk and a big disk
+backing two data directories, the big one will be limited the by the small one. One work around to this is to create
+more data directories backed by the big disk.</li>
+</ul>
+</div>
+<div class="section" id="single-sstable-tombstone-compaction">
+<h2>Single sstable tombstone compaction<a class="headerlink" href="#single-sstable-tombstone-compaction" title="Permalink to this headline">¶</a></h2>
+<p>When an sstable is written a histogram with the tombstone expiry times is created and this is used to try to find
+sstables with very many tombstones and run single sstable compaction on that sstable in hope of being able to drop
+tombstones in that sstable. Before starting this it is also checked how likely it is that any tombstones will actually
+will be able to be dropped how much this sstable overlaps with other sstables. To avoid most of these checks the
+compaction option <code class="docutils literal"><span class="pre">unchecked_tombstone_compaction</span></code> can be enabled.</p>
+</div>
+<div class="section" id="common-options">
+<span id="compaction-options"></span><h2>Common options<a class="headerlink" href="#common-options" title="Permalink to this headline">¶</a></h2>
+<p>There is a number of common options for all the compaction strategies;</p>
+<dl class="docutils">
+<dt><code class="docutils literal"><span class="pre">enabled</span></code> (default: true)</dt>
+<dd>Whether minor compactions should run. Note that you can have &#8216;enabled&#8217;: true as a compaction option and then do
+&#8216;nodetool enableautocompaction&#8217; to start running compactions.</dd>
+<dt><code class="docutils literal"><span class="pre">tombstone_threshold</span></code> (default: 0.2)</dt>
+<dd>How much of the sstable should be tombstones for us to consider doing a single sstable compaction of that sstable.</dd>
+<dt><code class="docutils literal"><span class="pre">tombstone_compaction_interval</span></code> (default: 86400s (1 day))</dt>
+<dd>Since it might not be possible to drop any tombstones when doing a single sstable compaction we need to make sure
+that one sstable is not constantly getting recompacted - this option states how often we should try for a given
+sstable.</dd>
+<dt><code class="docutils literal"><span class="pre">log_all</span></code> (default: false)</dt>
+<dd>New detailed compaction logging, see <a class="reference internal" href="#detailed-compaction-logging"><span class="std std-ref">below</span></a>.</dd>
+<dt><code class="docutils literal"><span class="pre">unchecked_tombstone_compaction</span></code> (default: false)</dt>
+<dd>The single sstable compaction has quite strict checks for whether it should be started, this option disables those
+checks and for some usecases this might be needed.  Note that this does not change anything for the actual
+compaction, tombstones are only dropped if it is safe to do so - it might just rewrite an sstable without being able
+to drop any tombstones.</dd>
+<dt><code class="docutils literal"><span class="pre">only_purge_repaired_tombstone</span></code> (default: false)</dt>
+<dd>Option to enable the extra safety of making sure that tombstones are only dropped if the data has been repaired.</dd>
+<dt><code class="docutils literal"><span class="pre">min_threshold</span></code> (default: 4)</dt>
+<dd>Lower limit of number of sstables before a compaction is triggered. Not used for <code class="docutils literal"><span class="pre">LeveledCompactionStrategy</span></code>.</dd>
+<dt><code class="docutils literal"><span class="pre">max_threshold</span></code> (default: 32)</dt>
+<dd>Upper limit of number of sstables before a compaction is triggered. Not used for <code class="docutils literal"><span class="pre">LeveledCompactionStrategy</span></code>.</dd>
+</dl>
+<p>Further, see the section on each strategy for specific additional options.</p>
+</div>
+<div class="section" id="compaction-nodetool-commands">
+<h2>Compaction nodetool commands<a class="headerlink" href="#compaction-nodetool-commands" title="Permalink to this headline">¶</a></h2>
+<p>The <a class="reference internal" href="../tools/nodetool.html#nodetool"><span class="std std-ref">nodetool</span></a> utility provides a number of commands related to compaction:</p>
+<dl class="docutils">
+<dt><code class="docutils literal"><span class="pre">enableautocompaction</span></code></dt>
+<dd>Enable compaction.</dd>
+<dt><code class="docutils literal"><span class="pre">disableautocompaction</span></code></dt>
+<dd>Disable compaction.</dd>
+<dt><code class="docutils literal"><span class="pre">setcompactionthroughput</span></code></dt>
+<dd>How fast compaction should run at most - defaults to 16MB/s, but note that it is likely not possible to reach this
+throughput.</dd>
+<dt><code class="docutils literal"><span class="pre">compactionstats</span></code></dt>
+<dd>Statistics about current and pending compactions.</dd>
+<dt><code class="docutils literal"><span class="pre">compactionhistory</span></code></dt>
+<dd>List details about the last compactions.</dd>
+<dt><code class="docutils literal"><span class="pre">setcompactionthreshold</span></code></dt>
+<dd>Set the min/max sstable count for when to trigger compaction, defaults to 4/32.</dd>
+</dl>
+</div>
+<div class="section" id="switching-the-compaction-strategy-and-options-using-jmx">
+<h2>Switching the compaction strategy and options using JMX<a class="headerlink" href="#switching-the-compaction-strategy-and-options-using-jmx" title="Permalink to this headline">¶</a></h2>
+<p>It is possible to switch compaction strategies and its options on just a single node using JMX, this is a great way to
+experiment with settings without affecting the whole cluster. The mbean is:</p>
+<div class="highlight-none"><div class="highlight"><pre><span></span>org.apache.cassandra.db:type=ColumnFamilies,keyspace=&lt;keyspace_name&gt;,columnfamily=&lt;table_name&gt;
+</pre></div>
+</div>
+<p>and the attribute to change is <code class="docutils literal"><span class="pre">CompactionParameters</span></code> or <code class="docutils literal"><span class="pre">CompactionParametersJson</span></code> if you use jconsole or jmc. The
+syntax for the json version is the same as you would use in an <a class="reference internal" href="../cql/ddl.html#alter-table-statement"><span class="std std-ref">ALTER TABLE</span></a> statement -
+for example:</p>
+<div class="highlight-none"><div class="highlight"><pre><span></span>{ &#39;class&#39;: &#39;LeveledCompactionStrategy&#39;, &#39;sstable_size_in_mb&#39;: 123 }
+</pre></div>
+</div>
+<p>The setting is kept until someone executes an <a class="reference internal" href="../cql/ddl.html#alter-table-statement"><span class="std std-ref">ALTER TABLE</span></a> that touches the compaction
+settings or restarts the node.</p>
+</div>
+<div class="section" id="more-detailed-compaction-logging">
+<span id="detailed-compaction-logging"></span><h2>More detailed compaction logging<a class="headerlink" href="#more-detailed-compaction-logging" title="Permalink to this headline">¶</a></h2>
+<p>Enable with the compaction option <code class="docutils literal"><span class="pre">log_all</span></code> and a more detailed compaction log file will be produced in your log
+directory.</p>
+</div>
+<div class="section" id="size-tiered-compaction-strategy">
+<span id="stcs"></span><h2>Size Tiered Compaction Strategy<a class="headerlink" href="#size-tiered-compaction-strategy" title="Permalink to this headline">¶</a></h2>
+<p>The basic idea of <code class="docutils literal"><span class="pre">SizeTieredCompactionStrategy</span></code> (STCS) is to merge sstables of approximately the same size. All
+sstables are put in different buckets depending on their size. An sstable is added to the bucket if size of the sstable
+is within <code class="docutils literal"><span class="pre">bucket_low</span></code> and <code class="docutils literal"><span class="pre">bucket_high</span></code> of the current average size of the sstables already in the bucket. This
+will create several buckets and the most interesting of those buckets will be compacted. The most interesting one is
+decided by figuring out which bucket&#8217;s sstables takes the most reads.</p>
+<div class="section" id="major-compaction">
+<h3>Major compaction<a class="headerlink" href="#major-compaction" title="Permalink to this headline">¶</a></h3>
+<p>When running a major compaction with STCS you will end up with two sstables per data directory (one for repaired data
+and one for unrepaired data). There is also an option (-s) to do a major compaction that splits the output into several
+sstables. The sizes of the sstables are approximately 50%, 25%, 12.5%... of the total size.</p>
+</div>
+<div class="section" id="stcs-options">
+<span id="id2"></span><h3>STCS options<a class="headerlink" href="#stcs-options" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><code class="docutils literal"><span class="pre">min_sstable_size</span></code> (default: 50MB)</dt>
+<dd>Sstables smaller than this are put in the same bucket.</dd>
+<dt><code class="docutils literal"><span class="pre">bucket_low</span></code> (default: 0.5)</dt>
+<dd>How much smaller than the average size of a bucket a sstable should be before not being included in the bucket. That
+is, if <code class="docutils literal"><span class="pre">bucket_low</span> <span class="pre">*</span> <span class="pre">avg_bucket_size</span> <span class="pre">&lt;</span> <span class="pre">sstable_size</span></code> (and the <code class="docutils literal"><span class="pre">bucket_high</span></code> condition holds, see below), then
+the sstable is added to the bucket.</dd>
+<dt><code class="docutils literal"><span class="pre">bucket_high</span></code> (default: 1.5)</dt>
+<dd>How much bigger than the average size of a bucket a sstable should be before not being included in the bucket. That
+is, if <code class="docutils literal"><span class="pre">sstable_size</span> <span class="pre">&lt;</span> <span class="pre">bucket_high</span> <span class="pre">*</span> <span class="pre">avg_bucket_size</span></code> (and the <code class="docutils literal"><span class="pre">bucket_low</span></code> condition holds, see above), then
+the sstable is added to the bucket.</dd>
+</dl>
+</div>
+<div class="section" id="defragmentation">
+<h3>Defragmentation<a class="headerlink" href="#defragmentation" title="Permalink to this headline">¶</a></h3>
+<p>Defragmentation is done when many sstables are touched during a read.  The result of the read is put in to the memtable
+so that the next read will not have to touch as many sstables. This can cause writes on a read-only-cluster.</p>
+</div>
+</div>
+<div class="section" id="leveled-compaction-strategy">
+<span id="lcs"></span><h2>Leveled Compaction Strategy<a class="headerlink" href="#leveled-compaction-strategy" title="Permalink to this headline">¶</a></h2>
+<p>The idea of <code class="docutils literal"><span class="pre">LeveledCompactionStrategy</span></code> (LCS) is that all sstables are put into different levels where we guarantee
+that no overlapping sstables are in the same level. By overlapping we mean that the first/last token of a single sstable
+are never overlapping with other sstables. This means that for a SELECT we will only have to look for the partition key
+in a single sstable per level. Each level is 10x the size of the previous one and each sstable is 160MB by default. L0
+is where sstables are streamed/flushed - no overlap guarantees are given here.</p>
+<p>When picking compaction candidates we have to make sure that the compaction does not create overlap in the target level.
+This is done by always including all overlapping sstables in the next level. For example if we select an sstable in L3,
+we need to guarantee that we pick all overlapping sstables in L4 and make sure that no currently ongoing compactions
+will create overlap if we start that compaction. We can start many parallel compactions in a level if we guarantee that
+we wont create overlap. For L0 -&gt; L1 compactions we almost always need to include all L1 sstables since most L0 sstables
+cover the full range. We also can&#8217;t compact all L0 sstables with all L1 sstables in a single compaction since that can
+use too much memory.</p>
+<p>When deciding which level to compact LCS checks the higher levels first (with LCS, a &#8220;higher&#8221; level is one with a higher
+number, L0 being the lowest one) and if the level is behind a compaction will be started in that level.</p>
+<div class="section" id="id3">
+<h3>Major compaction<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h3>
+<p>It is possible to do a major compaction with LCS - it will currently start by filling out L1 and then once L1 is full,
+it continues with L2 etc. This is sub optimal and will change to create all the sstables in a high level instead,
+CASSANDRA-11817.</p>
+</div>
+<div class="section" id="bootstrapping">
+<h3>Bootstrapping<a class="headerlink" href="#bootstrapping" title="Permalink to this headline">¶</a></h3>
+<p>During bootstrap sstables are streamed from other nodes. The level of the remote sstable is kept to avoid many
+compactions after the bootstrap is done. During bootstrap the new node also takes writes while it is streaming the data
+from a remote node - these writes are flushed to L0 like all other writes and to avoid those sstables blocking the
+remote sstables from going to the correct level, we only do STCS in L0 until the bootstrap is done.</p>
+</div>
+<div class="section" id="stcs-in-l0">
+<h3>STCS in L0<a class="headerlink" href="#stcs-in-l0" title="Permalink to this headline">¶</a></h3>
+<p>If LCS gets very many L0 sstables reads are going to hit all (or most) of the L0 sstables since they are likely to be
+overlapping. To more quickly remedy this LCS does STCS compactions in L0 if there are more than 32 sstables there. This
+should improve read performance more quickly compared to letting LCS do its L0 -&gt; L1 compactions. If you keep getting
+too many sstables in L0 it is likely that LCS is not the best fit for your workload and STCS could work out better.</p>
+</div>
+<div class="section" id="starved-sstables">
+<h3>Starved sstables<a class="headerlink" href="#starved-sstables" title="Permalink to this headline">¶</a></h3>
+<p>If a node ends up with a leveling where there are a few very high level sstables that are not getting compacted they
+might make it impossible for lower levels to drop tombstones etc. For example, if there are sstables in L6 but there is
+only enough data to actually get a L4 on the node the left over sstables in L6 will get starved and not compacted.  This
+can happen if a user changes sstable_size_in_mb from 5MB to 160MB for example. To avoid this LCS tries to include
+those starved high level sstables in other compactions if there has been 25 compaction rounds where the highest level
+has not been involved.</p>
+</div>
+<div class="section" id="lcs-options">
+<span id="id4"></span><h3>LCS options<a class="headerlink" href="#lcs-options" title="Permalink to this headline">¶</a></h3>
+<dl class="docutils">
+<dt><code class="docutils literal"><span class="pre">sstable_size_in_mb</span></code> (default: 160MB)</dt>
+<dd>The target compressed (if using compression) sstable size - the sstables can end up being larger if there are very
+large partitions on the node.</dd>
+</dl>
+<p>LCS also support the <code class="docutils literal"><span class="pre">cassandra.disable_stcs_in_l0</span></code> startup option (<code class="docutils literal"><span class="pre">-Dcassandra.disable_stcs_in_l0=true</span></code>) to avoid
+doing STCS in L0.</p>
+</div>
+</div>
+<div class="section" id="time-window-compactionstrategy">
+<span id="twcs"></span><h2>Time Window CompactionStrategy<a class="headerlink" href="#time-window-compactionstrategy" title="Permalink to this headline">¶</a></h2>
+<p><code class="docutils literal"><span class="pre">TimeWindowCompactionStrategy</span></code> (TWCS) is designed specifically for workloads where it&#8217;s beneficial to have data on
+disk grouped by the timestamp of the data, a common goal when the workload is time-series in nature or when all data is
+written with a TTL. In an expiring/TTL workload, the contents of an entire SSTable likely expire at approximately the
+same time, allowing them to be dropped completely, and space reclaimed much more reliably than when using
+<code class="docutils literal"><span class="pre">SizeTieredCompactionStrategy</span></code> or <code class="docutils literal"><span class="pre">LeveledCompactionStrategy</span></code>. The basic concept is that
+<code class="docutils literal"><span class="pre">TimeWindowCompactionStrategy</span></code> will create 1 sstable per file for a given window, where a window is simply calculated
+as the combination of two primary options:</p>
+<dl class="docutils">
+<dt><code class="docutils literal"><span class="pre">compaction_window_unit</span></code> (default: DAYS)</dt>
+<dd>A Java TimeUnit (MINUTES, HOURS, or DAYS).</dd>
+<dt><code class="docutils literal"><span class="pre">compaction_window_size</span></code> (default: 1)</dt>
+<dd>The number of units that make up a window.</dd>
+</dl>
+<p>Taken together, the operator can specify windows of virtually any size, and <cite>TimeWindowCompactionStrategy</cite> will work to
+create a single sstable for writes within that window. For efficiency during writing, the newest window will be
+compacted using <cite>SizeTieredCompactionStrategy</cite>.</p>
+<p>Ideally, operators should select a <code class="docutils literal"><span class="pre">compaction_window_unit</span></code> and <code class="docutils literal"><span class="pre">compaction_window_size</span></code> pair that produces
+approximately 20-30 windows - if writing with a 90 day TTL, for example, a 3 Day window would be a reasonable choice
+(<code class="docutils literal"><span class="pre">'compaction_window_unit':'DAYS','compaction_window_size':3</span></code>).</p>
+<div class="section" id="timewindowcompactionstrategy-operational-concerns">
+<h3>TimeWindowCompactionStrategy Operational Concerns<a class="headerlink" href="#timewindowcompactionstrategy-operational-concerns" title="Permalink to this headline">¶</a></h3>
+<p>The primary motivation for TWCS is to separate data on disk by timestamp and to allow fully expired SSTables to drop
+more efficiently. One potential way this optimal behavior can be subverted is if data is written to SSTables out of
+order, with new data and old data in the same SSTable. Out of order data can appear in two ways:</p>
+<ul class="simple">
+<li>If the user mixes old data and new data in the traditional write path, the data will be comingled in the memtables
+and flushed into the same SSTable, where it will remain comingled.</li>
+<li>If the user&#8217;s read requests for old data cause read repairs that pull old data into the current memtable, that data
+will be comingled and flushed into the same SSTable.</li>
+</ul>
+<p>While TWCS tries to minimize the impact of comingled data, users should attempt to avoid this behavior.  Specifically,
+users should avoid queries that explicitly set the timestamp via CQL <code class="docutils literal"><span class="pre">USING</span> <span class="pre">TIMESTAMP</span></code>. Additionally, users should run
+frequent repairs (which streams data in such a way that it does not become comingled), and disable background read
+repair by setting the table&#8217;s <code class="docutils literal"><span class="pre">read_repair_chance</span></code> and <code class="docutils literal"><span class="pre">dclocal_read_repair_chance</span></code> to 0.</p>
+</div>
+<div class="section" id="changing-timewindowcompactionstrategy-options">
+<h3>Changing TimeWindowCompactionStrategy Options<a class="headerlink" href="#changing-timewindowcompactionstrategy-options" title="Permalink to this headline">¶</a></h3>
+<p>Operators wishing to enable <code class="docutils literal"><span class="pre">TimeWindowCompactionStrategy</span></code> on existing data should consider running a major compaction
+first, placing all existing data into a single (old) window. Subsequent newer writes will then create typical SSTables
+as expected.</p>
+<p>Operators wishing to change <code class="docutils literal"><span class="pre">compaction_window_unit</span></code> or <code class="docutils literal"><span class="pre">compaction_window_size</span></code> can do so, but may trigger
+additional compactions as adjacent windows are joined together. If the window size is decrease d (for example, from 24
+hours to 12 hours), then the existing SSTables will not be modified - TWCS can not split existing SSTables into multiple
+windows.</p>
+</div>
+</div>
+</div>
+
+
+
+          
+          <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
+            
+            <a href="bloom_filters.html" class="btn btn-default pull-right " role="button" title="Bloom Filters" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
+            
+            
+            <a href="hints.html" class="btn btn-default" role="button" title="Hints" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
+            
+          </div>
+          
+        </div>
+      </div>
+    </div>
+    <div class="col-md-2">
+    </div>
+  </div>
+</div>
\ No newline at end of file



Mime
View raw message