---
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="https://www.dataversity.net/case-study-cassandra-meets-call-of-duty/">Activision</a>,
	<a href="https://www.techrepublic.com/article/apples-secret-nosql-sauce-includes-a-hefty-dose-of-cassandra/">Apple</a>,
	<a href="https://www.youtube.com/watch?v=5jKZUnkhB50">BazaarVoice</a>,
	<a href="https://www.slideshare.net/joelcrabb/cassandra-and-riak-at-bestbuycom">Best Buy</a>,
	CERN,
        <a href="http://www.slideshare.net/daveconnors/cassandra-puppet-scaling-data-at-15-per-month">Constant Contact</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>,
	Fidelity,
	Github,	
	<a href="https://www.nexttv.com/news/hulu-scales-user-database-apache-cassandra-133429">Hulu</a>,
	<a href="https://ithome.com.tw/video/103028">ING</a>,
	<a href="https://instagram-engineering.com/open-sourcing-a-10x-reduction-in-apache-cassandra-tail-latency-d64f86b43589">Instagram</a>,
	<a href="https://www.datastax.com/resources/video/datastax-accelerate-2019-managing-400-billion-requests-zero-downtime-turbotax">Intuit</a>, 
	<a href="https://www.slideshare.net/planetcassandra/apache-cassandra-at-macys">Macy's™</a>,
	<a href="https://diginomica.com/macquarie-banks-on-customer-appetite-for-a-spotify-like-experience">Macquarie Bank</a>,
	Microsoft,
	McDonalds,
	<a href="https://www.slideshare.net/VinayKumarChella/how-netflix-manages-petabyte-scale-apache-cassandra-in-the-cloud">Netflix</a>, 
	<a href="https://www.slideshare.net/planetcassandra/michael-laing-nyt-developers1">New York Times</a>,
	Outbrain,
	Pearson Education,
	<a href="https://www.slideshare.net/OliverLockwood1/apache-cassandra-building-a-production-app-on-an-eventuallyconsistent-db">Sky</a>,
	<a href="https://engineering.atspotify.com/2015/01/09/personalization-at-spotify-using-cassandra/">Spotify</a>,
	<a href="http://highscalability.com/blog/2016/9/28/how-uber-manages-a-million-writes-per-second-using-mesos-and.html">Uber</a>,
	<a href="https://medium.com/walmartlabs/how-we-build-a-robust-analytics-platform-using-spark-kafka-and-cassandra-lambda-architecture-70c2d1bc8981">Walmart</a>,
        and  thousands of other companies that have large, active data sets. In fact, Cassandra is used by 40% of the Fortune 100.</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 real applications,
        primarily because of <a href="https://www.datastax.com/blog/2013/01/2012-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="https://cassandra.apache.org/doc/latest/architecture/guarantees.html#durability1">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="https://cassandra.apache.org/doc/latest/operating/hints.html">Hinted Handoff</a> and
        <a href="https://cassandra.apache.org/doc/latest/operating/read_repair.html">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="https://cassandra.apache.org/third-party/">third parties</a>.
        </p>
      </div>
    </div><!-- /.feature-list -->

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