---
published: true
title: Interactive Analytics at Scale
layout: html_page
id: home
canonical: 'https://druid.apache.org/'
---

<link rel="stylesheet" href="/css/index.css">

<main class="druid-masthead">
  <div class="container">
  <div class="row">
    <div class="text-center">
    <p class="lead">Apache Druid is a high performance real-time analytics database.</p>
    <p><a class="button" href="/downloads.html"><span class="fa fa-download"></span> Download</a>
    <a class="button" href="https://github.com/apache/incubator-druid/"><span class="fab fa-github"></span> GitHub</a></p>
  </div>
  </div>
  </div>
</main>

<div class="container">
  <div class="row">

    <div class="col-md-9">
      <h2>
        Overview
      </h2>
      <div class="features">
        <div class="feature">
          <span class="fa fa-chart-line fa"></span>
          <h5>A modern cloud-native, stream-native, analytics database</h5>
          <p>
            Druid is designed for workflows where fast queries and ingest really matter. Druid excels at instant data visibility, ad-hoc queries, operational analytics, and handling high concurrency. Consider Druid as an open source alternative to data warehouses for a variety of <a href='/use-cases'>use cases</a>.
          </p>
        </div>
        <div class="feature">
          <span class="fa fa-forward fa"></span>
          <h5>Easy integration with your existing data pipelines</h5>
          <p>
            Druid can natively stream data from message buses such as <a href='http://kafka.apache.org/'>Kafka</a>, <a href='https://aws.amazon.com/kinesis/'>Amazon Kinesis</a>, and more, and batch load files from data lakes such as <a href='https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html'>HDFS</a>, <a href='https://aws.amazon.com/s3/'>Amazon S3</a>, and more.
          </p>
        </div>
        <div class="feature">
          <span class="fa fa-lightbulb fa"></span>
          <h5>Up to 100x faster than traditional solutions</h5>
          <p>
            Druid has been <a href='https://imply.io/post/performance-benchmark-druid-presto-hive'>benchmarked</a> to greatly outpeform legacy solutions for data ingestion and data querying. Druid's novel architecture combines the best of <a href='https://en.wikipedia.org/wiki/Data_warehouse'>data warehouses</a>, <a href='https://en.wikipedia.org/wiki/Time_series_database'>timeseries databases</a>, and <a href='https://en.wikipedia.org/wiki/Search_engine_(computing)'>search systems</a>.
          </p>
        </div>
        <div class="feature">
          <span class="fa fa-unlock fa"></span>
          <h5>Unlock new workflows</h5>
          <p>
            Druid <a href='/use-cases'>unlocks new types of queries and workflows</a> for clickstream, APM, supply chain, network telemetry, digital marketing, and many other forms of event-driven data. Druid is purpose built for rapid, ad-hoc queries on both real-time and historical data.
          </p>
        </div>
        <div class="feature">
          <span class="fa fa-cloud fa"></span>
          <h5>Deploy in AWS/GCP/Azure, hybrid clouds, Kubernetes, and bare metal</h5>
          <p>
            Druid can be deployed in any *NIX environment on commodity hardware, both in the cloud and on premise. Deploying Druid is easy: scaling up and down is as simple as adding and removing Druid services.
          </p>
        </div>
      </div>

      <h2>
        Learn more
      </h2>
      <div class="features">
        <div class="feature">
          <span class="fa fa-power-off fa"></span>
          <h5>Powered By</h5>
          <p>
            Druid is proven in production at the <a href='/druid-powered'>world’s leading companies</a> at massive scale.
          </p>
        </div>
        <div class="feature">
          <span class="fa fa-info fa"></span>
          <h5>FAQ</h5>
          <p>
            Learn about some of the <a href='faq'>most common questions about Druid</a>.
          </p>
        </div>
        <div class="feature">
          <span class="fa fa-flag-checkered fa"></span>
          <h5>Quickstart</h5>
          <p>
            <a href="/docs/latest/tutorials/quickstart">Get started with Druid</a> in minutes. Load your own data and query it.
          </p>
        </div>
        <div class="feature">
          <span class="fa fa-question-circle fa"></span>
          <h5>Get Help</h5>
          <p>
            Get help from a <a href='/community'>wide network of community members</a> about using Druid.
          </p>
        </div>
      </div>

    </div>

    <div class="col-md-3">
      {% include event-list.html %}
      {% include featured-list.html %}
      <div class="bottom-news">
        {% include news-list.html %}
      </div>
    </div>

  </div>
</div>

