This is an automated email from the ASF dual-hosted git repository.
fjy pushed a commit to branch 0.15.0-incubating
in repository https://gitbox.apache.org/repos/asf/incubator-druid.git
The following commit(s) were added to refs/heads/0.15.0-incubating by this push:
new 4663795 some more doc improvements (#7675) (#7686)
4663795 is described below
commit 46637958749ad70e523c58adcfefecc6dcaaac81
Author: Jonathan Wei <[email protected]>
AuthorDate: Fri May 17 14:29:13 2019 -0700
some more doc improvements (#7675) (#7686)
---
docs/content/design/index.md | 41 ++++++++++++++++++++-------------
docs/content/design/segments.md | 2 +-
docs/content/ingestion/index.md | 2 +-
docs/content/toc.md | 51 ++++++++++++++++++++++-------------------
4 files changed, 55 insertions(+), 41 deletions(-)
diff --git a/docs/content/design/index.md b/docs/content/design/index.md
index ec7e38a..191a7d6 100644
--- a/docs/content/design/index.md
+++ b/docs/content/design/index.md
@@ -24,18 +24,23 @@ title: "Apache Druid (incubating) Design"
# What is Druid?<a id="what-is-druid"></a>
-Apache Druid (incubating) is a data store designed for high-performance
slice-and-dice analytics
-("[OLAP](http://en.wikipedia.org/wiki/Online_analytical_processing)"-style) on
large data sets. Druid is most often
-used as a data store for powering GUI analytical applications, or as a backend
for highly-concurrent APIs that need
-fast aggregations. Common application areas for Druid include:
+Apache Druid (incubating) is a real-time analytics database designed for fast
slice-and-dice analytics
+("[OLAP](http://en.wikipedia.org/wiki/Online_analytical_processing)" queries)
on large data sets. Druid is most often
+used as a database for powering use cases where real-time ingest, fast query
performance, and high uptime are important.
+As such, Druid is commonly used for powering GUIs of analytical applications,
or as a backend for highly-concurrent APIs
+that need fast aggregations. Druid works best with event-oriented data.
-- Clickstream analytics
-- Network flow analytics
+Common application areas for Druid include:
+
+- Clickstream analytics (web and mobile analytics)
+- Network telemetry analytics (network performance monitoring)
- Server metrics storage
+- Supply chain analytics (manufacturing metrics)
- Application performance metrics
-- Digital marketing analytics
+- Digital marketing/advertising analytics
- Business intelligence / OLAP
+Druid's core architecture combines ideas from data warehouses, timeseries
databases, and logsearch systems. Some of
Druid's key features are:
1. **Columnar storage format.** Druid uses column-oriented storage, meaning it
only needs to load the exact columns
@@ -45,7 +50,7 @@ column is stored optimized for its particular data type,
which supports fast sca
offer ingest rates of millions of records/sec, retention of trillions of
records, and query latencies of sub-second to a
few seconds.
3. **Massively parallel processing.** Druid can process a query in parallel
across the entire cluster.
-4. **Realtime or batch ingestion.** Druid can ingest data either realtime
(ingested data is immediately available for
+4. **Realtime or batch ingestion.** Druid can ingest data either real-time
(ingested data is immediately available for
querying) or in batches.
5. **Self-healing, self-balancing, easy to operate.** As an operator, to scale
the cluster out or in, simply add or
remove servers and the cluster will rebalance itself automatically, in the
background, without any downtime. If any
@@ -59,11 +64,14 @@ Druid servers, replication ensures that queries are still
possible while the sys
7. **Indexes for quick filtering.** Druid uses
[CONCISE](https://arxiv.org/pdf/1004.0403) or
[Roaring](https://roaringbitmap.org/) compressed bitmap indexes to create
indexes that power fast filtering and
searching across multiple columns.
-8. **Approximate algorithms.** Druid includes algorithms for approximate
count-distinct, approximate ranking, and
+8. **Time-based partitioning.** Druid first partitions data by time, and can
additionally partition based on other fields.
+This means time-based queries will only access the partitions that match the
time range of the query. This leads to
+significant performance improvements for time-based data.
+9. **Approximate algorithms.** Druid includes algorithms for approximate
count-distinct, approximate ranking, and
computation of approximate histograms and quantiles. These algorithms offer
bounded memory usage and are often
substantially faster than exact computations. For situations where accuracy is
more important than speed, Druid also
offers exact count-distinct and exact ranking.
-9. **Automatic summarization at ingest time.** Druid optionally supports data
summarization at ingestion time. This
+10. **Automatic summarization at ingest time.** Druid optionally supports data
summarization at ingestion time. This
summarization partially pre-aggregates your data, and can lead to big costs
savings and performance boosts.
# When should I use Druid?<a id="when-to-use-druid"></a>
@@ -85,7 +93,8 @@ Situations where you would likely _not_ want to use Druid
include:
- You need low-latency updates of _existing_ records using a primary key.
Druid supports streaming inserts, but not streaming updates (updates are done
using
background batch jobs).
- You are building an offline reporting system where query latency is not very
important.
-- You want to do "big" joins (joining one big fact table to another big fact
table).
+- You want to do "big" joins (joining one big fact table to another big fact
table) and you are okay with these queries
+taking up to hours to complete.
# Architecture
@@ -157,7 +166,7 @@ The following diagram shows how queries and data flow
through this architecture,
Druid data is stored in "datasources", which are similar to tables in a
traditional RDBMS. Each datasource is
partitioned by time and, optionally, further partitioned by other attributes.
Each time range is called a "chunk" (for
example, a single day, if your datasource is partitioned by day). Within a
chunk, data is partitioned into one or more
-"segments". Each segment is a single file, typically comprising up to a few
million rows of data. Since segments are
+["segments"](../design/segments.html). Each segment is a single file,
typically comprising up to a few million rows of data. Since segments are
organized into time chunks, it's sometimes helpful to think of segments as
living on a timeline like the following:
<img src="../../img/druid-timeline.png" width="800" />
@@ -183,10 +192,10 @@ cluster.
# Query processing
-Queries first enter the Broker, where the Broker will identify which segments
have data that may pertain to that query.
+Queries first enter the [Broker](../design/broker.html), where the Broker will
identify which segments have data that may pertain to that query.
The list of segments is always pruned by time, and may also be pruned by other
attributes depending on how your
-datasource is partitioned. The Broker will then identify which Historicals and
MiddleManagers are serving those segments
-and send a rewritten subquery to each of those processes. The
Historical/MiddleManager processes will take in the
+datasource is partitioned. The Broker will then identify which
[Historicals](../design/historical.html) and
+[MiddleManagers](../design/middlemanager.html) are serving those segments and
send a rewritten subquery to each of those processes. The
Historical/MiddleManager processes will take in the
queries, process them and return results. The Broker receives results and
merges them together to get the final answer,
which it returns to the original caller.
@@ -200,4 +209,4 @@ So Druid uses three different techniques to maximize query
performance:
- Pruning which segments are accessed for each query.
- Within each segment, using indexes to identify which rows must be accessed.
-- Within each segment, only reading the specific rows and columns that are
relevant to a particular query.
\ No newline at end of file
+- Within each segment, only reading the specific rows and columns that are
relevant to a particular query.
diff --git a/docs/content/design/segments.md b/docs/content/design/segments.md
index d8d69c1..adc454b 100644
--- a/docs/content/design/segments.md
+++ b/docs/content/design/segments.md
@@ -28,7 +28,7 @@ Apache Druid (incubating) stores its index in *segment
files*, which are partiti
time. In a basic setup, one segment file is created for each time
interval, where the time interval is configurable in the
`segmentGranularity` parameter of the `granularitySpec`, which is
-documented [here](../ingestion/ingestion-spec.html#granularityspec). For
druid to
+documented [here](../ingestion/ingestion-spec.html#granularityspec). For
Druid to
operate well under heavy query load, it is important for the segment
file size to be within the recommended range of 300mb-700mb. If your
segment files are larger than this range, then consider either
diff --git a/docs/content/ingestion/index.md b/docs/content/ingestion/index.md
index 9141cb5..e9909a1 100644
--- a/docs/content/ingestion/index.md
+++ b/docs/content/ingestion/index.md
@@ -33,7 +33,7 @@ title: "Ingestion"
Apache Druid (incubating) data is stored in "datasources", which are similar
to tables in a traditional RDBMS. Each datasource is
partitioned by time and, optionally, further partitioned by other attributes.
Each time range is called a "chunk" (for
example, a single day, if your datasource is partitioned by day). Within a
chunk, data is partitioned into one or more
-"segments". Each segment is a single file, typically comprising up to a few
million rows of data. Since segments are
+["segments"](../design/segments.html). Each segment is a single file,
typically comprising up to a few million rows of data. Since segments are
organized into time chunks, it's sometimes helpful to think of segments as
living on a timeline like the following:
<img src="../../img/druid-timeline.png" width="800" />
diff --git a/docs/content/toc.md b/docs/content/toc.md
index 713a35b..9663ebb 100644
--- a/docs/content/toc.md
+++ b/docs/content/toc.md
@@ -118,42 +118,47 @@ layout: toc
* [ZooKeeper](/docs/VERSION/dependencies/zookeeper.html)
## Operations
- * [API Reference](/docs/VERSION/operations/api-reference.html)
- * [Coordinator](/docs/VERSION/operations/api-reference.html#coordinator)
- * [Overlord](/docs/VERSION/operations/api-reference.html#overlord)
- *
[MiddleManager](/docs/VERSION/operations/api-reference.html#middlemanager)
- * [Peon](/docs/VERSION/operations/api-reference.html#peon)
- * [Broker](/docs/VERSION/operations/api-reference.html#broker)
- * [Historical](/docs/VERSION/operations/api-reference.html#historical)
+ * [Management UIs](/docs/VERSION/operations/management-uis.html)
* [Including Extensions](/docs/VERSION/operations/including-extensions.html)
* [Data Retention](/docs/VERSION/operations/rule-configuration.html)
+ * [High Availability](/docs/VERSION/operations/high-availability.html)
+ * [Updating the Cluster](/docs/VERSION/operations/rolling-updates.html)
* [Metrics and Monitoring](/docs/VERSION/operations/metrics.html)
* [Alerts](/docs/VERSION/operations/alerts.html)
- * [Updating the Cluster](/docs/VERSION/operations/rolling-updates.html)
* [Different Hadoop Versions](/docs/VERSION/operations/other-hadoop.html)
- * [High Availability](/docs/VERSION/operations/high-availability.html)
- * [Management UIs](/docs/VERSION/operations/management-uis.html)
- * [Dump Segment Tool](/docs/VERSION/operations/dump-segment.html)
- * [Insert Segment Tool](/docs/VERSION/operations/insert-segment-to-db.html)
- * [Pull Dependencies Tool](/docs/VERSION/operations/pull-deps.html)
- * [Recommendations](/docs/VERSION/operations/recommendations.html)
- * [TLS Support](/docs/VERSION/operations/tls-support.html)
- * [Password Provider](/docs/VERSION/operations/password-provider.html)
* [HTTP Compression](/docs/VERSION/operations/http-compression.html)
* [Basic Cluster Tuning](/docs/VERSION/operations/basic-cluster-tuning.html)
- * [Single-server Deployment
Examples](/docs/VERSION/operations/single-server.html)
- * [Clustered Deployment
Example](/docs/VERSION/operations/example-cluster.html)
+ * Examples
+ * [Single-server Deployment
Examples](/docs/VERSION/operations/single-server.html)
+ * [Clustered Deployment
Example](/docs/VERSION/operations/example-cluster.html)
+ * [Recommendations](/docs/VERSION/operations/recommendations.html)
+ * [Performance FAQ](/docs/VERSION/operations/performance-faq.html)
+ * [API Reference](/docs/VERSION/operations/api-reference.html)
+ * [Coordinator](/docs/VERSION/operations/api-reference.html#coordinator)
+ * [Overlord](/docs/VERSION/operations/api-reference.html#overlord)
+ *
[MiddleManager](/docs/VERSION/operations/api-reference.html#middlemanager)
+ * [Peon](/docs/VERSION/operations/api-reference.html#peon)
+ * [Broker](/docs/VERSION/operations/api-reference.html#broker)
+ * [Historical](/docs/VERSION/operations/api-reference.html#historical)
+ * Tools
+ * [Dump Segment Tool](/docs/VERSION/operations/dump-segment.html)
+ * [Insert Segment Tool](/docs/VERSION/operations/insert-segment-to-db.html)
+ * [Pull Dependencies Tool](/docs/VERSION/operations/pull-deps.html)
+ * Security
+ * [TLS Support](/docs/VERSION/operations/tls-support.html)
+ * [Password Provider](/docs/VERSION/operations/password-provider.html)
## Configuration
* [Configuration Reference](/docs/VERSION/configuration/index.html)
* [Recommended Configuration File
Organization](/docs/VERSION/configuration/index.html#recommended-configuration-file-organization)
* [JVM Configuration Best
Practices](/docs/VERSION/configuration/index.html#jvm-configuration-best-practices)
* [Common
Configuration](/docs/VERSION/configuration/index.html#common-configurations)
- * [Coordinator](/docs/VERSION/configuration/index.html#coordinator)
- * [Overlord](/docs/VERSION/configuration/index.html#overlord)
- * [MiddleManager &
Peons](/docs/VERSION/configuration/index.html#middle-manager-and-peons)
- * [Broker](/docs/VERSION/configuration/index.html#broker)
- * [Historical](/docs/VERSION/configuration/index.html#historical)
+ * Processes
+ * [Coordinator](/docs/VERSION/configuration/index.html#coordinator)
+ * [Overlord](/docs/VERSION/configuration/index.html#overlord)
+ * [MiddleManager &
Peons](/docs/VERSION/configuration/index.html#middle-manager-and-peons)
+ * [Historical](/docs/VERSION/configuration/index.html#historical)
+ * [Broker](/docs/VERSION/configuration/index.html#broker)
* [Caching](/docs/VERSION/configuration/index.html#cache-configuration)
* [General Query
Configuration](/docs/VERSION/configuration/index.html#general-query-configuration)
* [Configuring Logging](/docs/VERSION/configuration/logging.html)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]