<!DOCTYPE html>
<html>
  



<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data. Cassandra's support for replicating across multiple datacenters is best-in-class, providing lower latency for your users and the peace of mind of knowing that you can survive regional outages.
">
  <meta name="keywords" content="cassandra, apache, apache cassandra, distributed storage, key value store, scalability, bigtable, dynamo" />
  <meta name="robots" content="index,follow" />
  <meta name="language" content="en" />  

  <title>Apache Cassandra</title>

  <link rel="canonical" href="http://cassandra.apache.org/">

  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
  <link rel="stylesheet" href="./css/style.css">
  

  
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css" integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">
  
  <link type="application/atom+xml" rel="alternate" href="http://cassandra.apache.org/feed.xml" title="Apache Cassandra Website" />
</head>

  <body>
    <!-- breadcrumbs -->
<div class="topnav">
  <div class="container breadcrumb-container">
    <ul class="breadcrumb">
      <li>
        <div class="dropdown">
          <img class="asf-logo" src="./img/asf_feather.png" />
          <a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
            <li><a href="http://www.apache.org">Apache Homepage</a></li>
            <li><a href="http://www.apache.org/licenses/">License</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
            <li><a href="http://www.apache.org/security/">Security</a></li>
          </ul>
        </div>
      </li>

      
      <li>Apache Cassandra</li>
      

      

      

      
    </ul>
  </div>

  <!-- navbar -->
  <nav class="navbar navbar-default navbar-static-top" role="navigation">
    <div class="container">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#cassandra-menu" aria-expanded="false">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="./"><img src="./img/cassandra_logo.png" alt="Apache Cassandra logo" /></a>
      </div><!-- /.navbar-header -->

      <div id="cassandra-menu" class="collapse navbar-collapse">
        <ul class="nav navbar-nav navbar-right">
          <li><a href="./">Home</a></li>
          <li><a href="./download/">Download</a></li>
          <li><a href="./doc/">Documentation</a></li>
          <li><a href="./community/">Community</a></li>
          <li>
            <a href="./blog">Blog</a>                    
        </li>
        </ul>
      </div><!-- /#cassandra-menu -->

      
      <div class="jumbotron">
        <h1>
          Manage massive amounts of data, fast, without losing sleep
        </h1>
        <p>
        <a class="btn btn-default download" role="button" href="./download/">Download Cassandra</a>
        </p>
        <p>
        
          <a class="changelog"
             href="https://gitbox.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=CHANGES.txt;hb=refs/tags/cassandra-3.11.5">Cassandra 3.11.5 Changelog
          </a>
        </p>
      </div><!-- /.jumbotron -->
      
    </div>
  </nav><!-- /.navbar -->
</div><!-- /.topnav -->

    <div class="feature-list-group">
  <div class="container">
    <div class="row header">
      <h3>What is Cassandra?</h3>
      <p class="lead">
      The Apache Cassandra database is the right choice when you need scalability and high availability without
      compromising performance. <a href="http://techblog.netflix.com/2011/11/benchmarking-cassandra-scalability-on.html">Linear scalability</a>
      and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for
      mission-critical data. Cassandra's support for replicating across multiple datacenters is best-in-class, providing
      lower latency for your users and the peace of mind of knowing that you can survive regional outages.
      </p>
    </div><!-- /.header -->

    <div class="row feature-list">
      <div class="col-md-3 col-sm-3 feature-item">
        <h4>Proven</h4>
        <p>
        Cassandra is in use at
        <a href="http://www.slideshare.net/daveconnors/cassandra-puppet-scaling-data-at-15-per-month">Constant Contact</a>,
        <a href="http://planetcassandra.org/blog/post/cassandra-at-cern-large-hadron-collider/">CERN</a>,
        <a href="http://www.slideshare.net/planetcassandra/nyc-tech-day-using-cassandra-for-dvr-scheduling-at-comcast">Comcast</a>,
        <a href="http://www.slideshare.net/jaykumarpatel/cassandra-at-ebay-13920376">eBay</a>,
        <a href="http://planetcassandra.org/blog/post/analytics-at-github-with-apache-cassandra/">GitHub</a>,
        <a href="http://planetcassandra.org/blog/post/godaddy-worlds-largest-domain-name-registrar-and-web-host-provider-utilizes-cassandra-for-replication-and-scalability/">GoDaddy</a>,
        <a href="http://planetcassandra.org/blog/post/cassandra-used-to-build-scalable-and-highly-available-systems-at-hulu-streaming-content-to-over-5-million-subscribers/">Hulu</a>,
        <a href="http://planetcassandra.org/blog/post/instagram-making-the-switch-to-cassandra-from-redis-75-instasavings/">Instagram</a>, 
        <a href="http://www.slideshare.net/planetcassandra/3-mohit-anchlia">Intuit</a>,
        <a href="http://www.slideshare.net/adrianco/migrating-netflix-from-oracle-to-global-cassandra">Netflix</a>,
        <a href="http://planetcassandra.org/blog/post/reddit-upvotes-apache-cassandras-horizontal-scaling-managing-17000000-votes-daily/">Reddit</a>, 
        <a href="http://planetcassandra.org/blog/post/make-it-rain-apache-cassandra-at-the-weather-channel-for-severe-weather-alerts/">The Weather Channel</a>,
        and <a href="http://planetcassandra.org/companies/">over 1500 more companies</a> that have large, active data
        sets.</p>
      </div>

      <div class="col-md-2 col-sm-2 feature-item">
        <h4>Fault tolerant</h4>
        <p>
        Data is automatically replicated to multiple nodes for fault-tolerance. Replication across multiple data centers
        is supported. Failed nodes can be replaced with no downtime.
        </p>
      </div>

      <div class="col-md-2 col-sm-2 feature-item">
        <h4>Performant</h4>
        <p>
        Cassandra <a href="http://vldb.org/pvldb/vol5/p1724_tilmannrabl_vldb2012.pdf">consistently</a>
        <a href="http://www.datastax.com/resources/whitepapers/benchmarking-top-nosql-databases">outperforms</a> popular
        NoSQL alternatives in benchmarks and <a href="http://blog.markedup.com/2013/02/cassandra-hive-and-hadoop-how-we-picked-our-analytics-stack/">real applications</a>,
        primarily because of <a href="http://www.datastax.com/dev/blog/2012-in-review-performance">fundamental architectural choices</a>.
        </p>
      </div>

      <div class="col-md-2 col-sm-2 feature-item">
        <h4>Decentralized</h4>
        <p>
        There are no single points of failure. There are no network bottlenecks. Every node in the cluster is
        identical.
        </p>
      </div>

      <div class="col-md-3 col-sm-3 feature-item">
        <h4>Scalable</h4>
        <p>
        Some of the largest production deployments include Apple's, with over 75,000 nodes storing over 10 PB of data,
        Netflix (2,500 nodes, 420 TB, over 1 trillion requests per day), Chinese search engine Easou (270 nodes, 300 TB,
        over 800 million requests per day), and eBay (over 100 nodes, 250 TB).
        </p>
      </div>
    </div><!-- /.feature-list -->

    <div class="row feature-list">
      <div class="col-md-3 col-sm-3 feature-item">
        <h4>Durable</h4>
        <p>
        Cassandra is <a href="http://wiki.apache.org/cassandra/Durability">suitable for applications that can't afford to lose data</a>,
        even when an entire data center goes down.
        </p>
      </div>

      <div class="col-md-3 col-sm-3 feature-item">
        <h4>You're in control</h4>
        <p>
        Choose between synchronous or asynchronous replication for each update. Highly available asynchronous operations are
        optimized with features like <a href="http://wiki.apache.org/cassandra/HintedHandoff">Hinted Handoff</a> and
        <a href="http://wiki.apache.org/cassandra/ReadRepair">Read Repair</a>.</p>
        </p>
      </div>

      <div class="col-md-3 col-sm-3 feature-item">
        <h4>Elastic</h4>
        <p>
          Read and write throughput both increase linearly as new machines are added, with no downtime or interruption
          to applications.
        </p>
      </div>

      <div class="col-md-3 col-sm-3 feature-item">
        <h4>Professionally Supported</h4>
        <p>
          Cassandra support contracts and services are available from <a href="http://wiki.apache.org/cassandra/ThirdPartySupport">third parties</a>.
        </p>
      </div>
    </div><!-- /.feature-list -->

  </div><!-- /.container -->
</div><!-- /.feature-list-group -->

    <hr />

<footer>
  <div class="container">
    <div class="col-md-4 social-blk">
      <span class="social">
        <a href="https://twitter.com/cassandra"
           class="twitter-follow-button"
           data-show-count="false" data-size="large">Follow @cassandra</a>
        <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
        <a href="https://twitter.com/intent/tweet?button_hashtag=cassandra"
           class="twitter-hashtag-button"
           data-size="large"
           data-related="ApacheCassandra">Tweet #cassandra</a>
        <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>

      </span>
      <a class="subscribe-rss icon-link" href="/feed.xml" title="Subscribe to Blog via RSS">
          <span><i class="fa fa-rss"></i></span>
      </a>
    </div>

    <div class="col-md-8 trademark">
      <p>&copy; 2016 <a href="http://apache.org">The Apache Software Foundation</a>.
      Apache, the Apache feather logo, and Apache Cassandra are trademarks of The Apache Software Foundation.
      <p>
    </div>
  </div><!-- /.container -->
</footer>

<!-- Javascript. Placed here so pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="./js/underscore-min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>



<script type="text/javascript">
  var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
  document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

  try {
    var pageTracker = _gat._getTracker("UA-11583863-1");
    pageTracker._trackPageview();
  } catch(err) {}
</script>

	<div></div>
  </body>
</html>
