---
layout: default
title: "Apache Cassandra"
is_homepage: true
---

<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 reqests 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 -->
