

<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
  <meta charset="utf-8" />
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title></title>

  
  <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    <link rel="stylesheet" href="_static/extra.css" type="text/css" />

  
  

  
  

  

  
  <!--[if lt IE 9]>
    <script src="_static/js/html5shiv.min.js"></script>
  <![endif]-->
  
    
      <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
        <script src="_static/jquery.js"></script>
        <script src="_static/underscore.js"></script>
        <script src="_static/doctools.js"></script>
    
    <script type="text/javascript" src="_static/js/theme.js"></script>

    
    <link rel="index" title="Index" href="genindex.html" />
    <link rel="search" title="Search" href="search.html" /> 
</head>

<body class="wy-body-for-nav">

   
  <div class="wy-grid-for-nav">
    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search" >
          

          
            <a href="#" class="icon icon-home"> Apache Cassandra
          

          
          </a>

          
            
            
              <div class="version">
                3.11.10
              </div>
            
          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        
        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
            
            
              
            
            
              <ul>
<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"><a class="reference internal" href="operating/index.html">Operating Cassandra</a></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>
        
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" aria-label="top navigation">
        
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="#">Apache Cassandra</a>
        
      </nav>


      <div class="wy-nav-content">
        
        <div class="rst-content">
        
          

















<div role="navigation" aria-label="breadcrumbs navigation">

  <ul class="wy-breadcrumbs">
    
      <li><a href="#" class="icon icon-home"></a> &raquo;</li>
        
      <li></li>
    
    
      <li class="wy-breadcrumbs-aside">
        
          
        
      </li>
    
  </ul>

  
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
   <h1>Apache Cassandra Documentation v3.11.10</h1>
   <p>
   Welcome! This is the documentation for Apache Cassandra 3.11.10.
   </p>
 <div id="wipwarning">This documentation is a work-in-progress.
    <a href="bugs.html">Contributions</a> are welcome.</div>

<h3>Main documentation</h3>

<table class="contentstable doc-landing-table" align="center">
  <tr>
    <td class="left-column">
      <p class="biglink"><a class="biglink" href="getting_started/index.html">Getting started</a><br/>
      <span class="linkdescr">Newbie friendly starting point</span></p>
    </td>
    <td class="right-column">
      <p class="biglink"><a class="biglink" href="operating/index.html">Operating Cassandra</a><br/>
      <span class="linkdescr">The operator's corner</span></p>
    </td>
  </tr>
  <tr>
    <td class="left-column">
      <p class="biglink"><a class="biglink" href="architecture/index.html">Cassandra Architecture</a><br/>
      <span class="linkdescr">Cassandra's big picture</span></p>
    </td>
    <td class="right-column">
      <p class="biglink"><a class="biglink" href="tools/index.html">Cassandra's Tools</a><br/>
      <span class="linkdescr">cqlsh, nodetool, ...</span></p>
    </td>
  </tr>
  <tr>
    <td class="left-column">
      <p class="biglink"><a class="biglink" href="data_modeling/index.html">Data Modeling</a><br/>
      <span class="linkdescr">Or how to make square pegs fit round holes</span></p>
    </td>
    <td class="right-column">
      <p class="biglink"><a class="biglink" href="troubleshooting/index.html">Troubleshooting</a><br/>
      <span class="linkdescr">What to look for when you have a problem</span></p>
    </td>
  </tr>
  <tr>
    <td class="left-column">
      <p class="biglink"><a class="biglink" href="cql/index.html">Cassandra Query Language</a><br/>
      <span class="linkdescr">CQL reference documentation</span></p>
    </td>
    <td class="right-column">
      <p class="biglink"><a class="biglink" href="development/index.html">Cassandra Development</a><br/>
      <span class="linkdescr">Learn how to improve Cassandra and contribute patches</span></p>
    </td>
  </tr>
  <tr>
    <td class="left-column">
      <p class="biglink"><a class="biglink" href="faq/index.html">FAQs</a><br/>
      <span class="linkdescr">Frequently Asked Questions (with answers!)</span></p>
    </td>
    <td class="right-column">
      <p class="biglink"><a class="biglink" href="configuration/index.html">Configuration</a><br/>
      <span class="linkdescr">Cassandra's handles and knobs</span></p>
    </td>
  </tr>
</table>

<h3>Meta informations</h3>

<ul>
  <li><a class="biglink" href="bugs.html">Reporting bugs</a></li>
  <li><a class="biglink" href="contactus.html">Contact us</a></li>
</ul>


           </div>
           
          </div>
          <footer>

  <hr/>

  <div role="contentinfo">
    <p>
        &#169; Copyright 2016, The Apache Cassandra team.

    </p>
  </div>
    
    
    
    Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    
    <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    
    provided by <a href="https://readthedocs.org">Read the Docs</a>. 

</footer>
        </div>
      </div>

    </section>

  </div>
  

  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script>

  
  
    
   

</body>
</html>