You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/about-us/beta-and-experimental-features.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,19 +14,19 @@ Due to the uncertainty of when features are classified as generally available, w
14
14
15
15
The sections below explicitly describe the properties of **Beta** and **Experimental** features:
16
16
17
-
## Beta features {#beta-features}
17
+
## Beta Features {#beta-features}
18
18
19
19
- Under active development to make them generally available (GA)
20
20
- Main known issues can be tracked on GitHub
21
21
- Functionality may change in the future
22
22
- Possibly enabled in ClickHouse Cloud
23
23
- The ClickHouse team supports beta features
24
24
25
-
You can find below the features considered Beta in ClickHouse Cloud and are available for use in your ClickHouse Cloud Services.
25
+
The following features are considered Beta in ClickHouse Cloud and are available for use in ClickHouse Cloud Services, even though they may be currently under a ClickHouse SETTING named ```allow_experimental_*```:
26
26
27
-
Note: please be sure to be using a current version of the ClickHouse [compatibility](/operations/settings/settings#compatibility) setting to be using a recently introduced feature.
27
+
Note: please be sure to be using a current version of the ClickHouse [compatibility](/operations/settings/settings#compatibility) setting to be using a recently introduced feature.
28
28
29
-
## Experimental features {#experimental-features}
29
+
## Experimental Features {#experimental-features}
30
30
31
31
- May never become GA
32
32
- May be removed
@@ -37,11 +37,11 @@ The sections below explicitly describe the properties of **Beta** and **Experime
37
37
- May lack important functionality and documentation
38
38
- Cannot be enabled in the cloud
39
39
40
-
Please note: no additional experimental features are allowed to be enabled in ClickHouse Cloud other than those listed above as Beta.
40
+
Please note: no additional experimental features are allowed to be enabled in ClickHouse Cloud other than those listed above as Beta.
41
41
42
-
<!-- The inner content of the tags below are replaced at build time with a table generated from source
42
+
<!-- The inner content of the tags below are replaced at build time with a table generated from source
## True column-oriented database management system {#true-column-oriented-database-management-system}
12
+
## True Column-Oriented Database Management System {#true-column-oriented-database-management-system}
13
13
14
14
In a real column-oriented DBMS, no extra data is stored with the values. This means that constant-length values must be supported to avoid storing their length "number" next to the values. For example, a billion UInt8-type values should consume around 1 GB uncompressed, or this strongly affects the CPU use. It is essential to store data compactly (without any "garbage") even when uncompressed since the speed of decompression (CPU usage) depends mainly on the volume of uncompressed data.
15
15
16
16
This is in contrast to systems that can store values of different columns separately, but that cannot effectively process analytical queries due to their optimization for other scenarios, such as HBase, Bigtable, Cassandra, and Hypertable. You would get throughput around a hundred thousand rows per second in these systems, but not hundreds of millions of rows per second.
17
17
18
18
Finally, ClickHouse is a database management system, not a single database. It allows creating tables and databases in runtime, loading data, and running queries without reconfiguring and restarting the server.
19
19
20
-
## Data compression {#data-compression}
20
+
## Data Compression {#data-compression}
21
21
22
22
Some column-oriented DBMSs do not use data compression. However, data compression plays a key role in achieving excellent performance.
23
23
24
24
In addition to efficient general-purpose compression codecs with different trade-offs between disk space and CPU consumption, ClickHouse provides [specialized codecs](/sql-reference/statements/create/table.md#specialized-codecs) for specific kinds of data, which allow ClickHouse to compete with and outperform more niche databases, like time-series ones.
25
25
26
-
## Disk storage of data {#disk-storage-of-data}
26
+
## Disk Storage of Data {#disk-storage-of-data}
27
27
28
28
Keeping data physically sorted by primary key makes it possible to extract data based on specific values or value ranges with low latency in less than a few dozen milliseconds. Some column-oriented DBMSs, such as SAP HANA and Google PowerDrill, can only work in RAM. This approach requires allocation of a larger hardware budget than necessary for real-time analysis.
29
29
30
30
ClickHouse is designed to work on regular hard drives, which means the cost per GB of data storage is low, but SSD and additional RAM are also fully used if available.
31
31
32
-
## Parallel processing on multiple cores {#parallel-processing-on-multiple-cores}
32
+
## Parallel Processing on Multiple Cores {#parallel-processing-on-multiple-cores}
33
33
34
34
Large queries are parallelized naturally, taking all the necessary resources available on the current server.
35
35
36
-
## Distributed processing on multiple servers {#distributed-processing-on-multiple-servers}
36
+
## Distributed Processing on Multiple Servers {#distributed-processing-on-multiple-servers}
37
37
38
38
Almost none of the columnar DBMSs mentioned above have support for distributed query processing.
39
39
40
40
In ClickHouse, data can reside on different shards. Each shard can be a group of replicas used for fault tolerance. All shards are used to run a query in parallel, transparently for the user.
41
41
42
-
## SQL support {#sql-support}
42
+
## SQL Support {#sql-support}
43
43
44
44
ClickHouse supports [SQL language](/sql-reference/) that is mostly compatible with the ANSI SQL standard.
45
45
46
46
Supported queries include [GROUP BY](../sql-reference/statements/select/group-by.md), [ORDER BY](../sql-reference/statements/select/order-by.md), subqueries in [FROM](../sql-reference/statements/select/from.md), [JOIN](../sql-reference/statements/select/join.md) clause, [IN](../sql-reference/operators/in.md) operator, [window functions](../sql-reference/window-functions/index.md) and scalar subqueries.
47
47
48
48
Correlated (dependent) subqueries are not supported at the time of writing but might become available in the future.
49
49
50
-
## Vector computation engine {#vector-engine}
50
+
## Vector Computation Engine {#vector-engine}
51
51
52
52
Data is not only stored by columns but is processed by vectors (parts of columns), which allows achieving high CPU efficiency.
53
53
54
-
## Real-time data inserts {#real-time-data-updates}
54
+
## Real-Time Data Inserts {#real-time-data-updates}
55
55
56
56
ClickHouse supports tables with a primary key. To quickly perform queries on the range of the primary key, the data is sorted incrementally using the merge tree. Due to this, data can continually be added to the table. No locks are taken when new data is ingested.
57
57
58
-
## Primary indexes {#primary-index}
58
+
## Primary Indexes {#primary-index}
59
59
60
60
Having data physically sorted by primary key makes it possible to extract data based on specific values or value ranges with low latency in less than a few dozen milliseconds.
61
61
62
-
## Secondary indexes {#secondary-indexes}
62
+
## Secondary Indexes {#secondary-indexes}
63
63
64
64
Unlike other database management systems, secondary indexes in ClickHouse do not point to specific rows or row ranges. Instead, they allow the database to know in advance that all rows in some data parts would not match the query filtering conditions and do not read them at all, thus they are called [data skipping indexes](../engines/table-engines/mergetree-family/mergetree.md#table_engine-mergetree-data_skipping-indexes).
65
65
66
-
## Suitable for online queries {#suitable-for-online-queries}
66
+
## Suitable for Online Queries {#suitable-for-online-queries}
67
67
68
68
Most OLAP database management systems do not aim for online queries with sub-second latencies. In alternative systems, report building time of tens of seconds or even minutes is often considered acceptable. Sometimes it takes even more time, which forces systems to prepare reports offline (in advance or by responding with "come back later").
69
69
70
70
In ClickHouse "low latency" means that queries can be processed without delay and without trying to prepare an answer in advance, right at the same moment as the user interface page is loading. In other words, online.
71
71
72
-
## Support for approximated calculations {#support-for-approximated-calculations}
72
+
## Support for Approximated Calculations {#support-for-approximated-calculations}
73
73
74
74
ClickHouse provides various ways to trade accuracy for performance:
75
75
76
-
1. Aggregate functions for approximated calculation of the number of distinct values, medians, and quantiles.
77
-
2. Running a query based on a part ([SAMPLE](../sql-reference/statements/select/sample.md)) of data and getting an approximated result. In this case, proportionally less data is retrieved from the disk.
78
-
3. Running an aggregation for a limited number of random keys, instead of for all keys. Under certain conditions for key distribution in the data, this provides a reasonably accurate result while using fewer resources.
76
+
1.Aggregate functions for approximated calculation of the number of distinct values, medians, and quantiles.
77
+
2.Running a query based on a part ([SAMPLE](../sql-reference/statements/select/sample.md)) of data and getting an approximated result. In this case, proportionally less data is retrieved from the disk.
78
+
3.Running an aggregation for a limited number of random keys, instead of for all keys. Under certain conditions for key distribution in the data, this provides a reasonably accurate result while using fewer resources.
ClickHouse adaptively chooses how to [JOIN](../sql-reference/statements/select/join.md) multiple tables, by preferring hash-join algorithm and falling back to the merge-join algorithm if there's more than one large table.
83
83
84
-
## Data replication and data integrity support {#data-replication-and-data-integrity-support}
84
+
## Data Replication and Data Integrity Support {#data-replication-and-data-integrity-support}
85
85
86
86
ClickHouse uses asynchronous multi-master replication. After being written to any available replica, all the remaining replicas retrieve their copy in the background. The system maintains identical data on different replicas. Recovery after most failures is performed automatically, or semi-automatically in complex cases.
87
87
@@ -91,8 +91,8 @@ For more information, see the section [Data replication](../engines/table-engine
91
91
92
92
ClickHouse implements user account management using SQL queries and allows for [role-based access control configuration](/guides/sre/user-management/index.md) similar to what can be found in ANSI SQL standard and popular relational database management systems.
93
93
94
-
## Features that can be considered disadvantages {#clickhouse-features-that-can-be-considered-disadvantages}
94
+
## Features that Can Be Considered Disadvantages {#clickhouse-features-that-can-be-considered-disadvantages}
95
95
96
-
1. No full-fledged transactions.
97
-
2. Lack of ability to modify or delete already inserted data with a high rate and low latency. There are batch deletes and updates available to clean up or modify data, for example, to comply with [GDPR](https://gdpr-info.eu).
98
-
3. The sparse index makes ClickHouse not so efficient for point queries retrieving single rows by their keys.
96
+
1.No full-fledged transactions.
97
+
2.Lack of ability to modify or delete already inserted data with a high rate and low latency. There are batch deletes and updates available to clean up or modify data, for example, to comply with [GDPR](https://gdpr-info.eu).
98
+
3.The sparse index makes ClickHouse not so efficient for point queries retrieving single rows by their keys.
ClickHouse was initially developed to power [Yandex.Metrica](https://metrica.yandex.com/), [the second largest web analytics platform in the world](http://w3techs.com/technologies/overview/traffic_analysis/all), and continues to be its core component. With more than 13 trillion records in the database and more than 20 billion events daily, ClickHouse allows generating custom reports on the fly directly from non-aggregated data. This article briefly covers the goals of ClickHouse in the early stages of its development.
13
13
14
14
Yandex.Metrica builds customized reports on the fly based on hits and sessions, with arbitrary segments defined by the user. Doing so often requires building complex aggregates, such as the number of unique users, with new data for building reports arriving in real-time.
15
15
16
16
As of April 2014, Yandex.Metrica was tracking about 12 billion events (page views and clicks) daily. All these events needed to be stored, in order to build custom reports. A single query may have required scanning millions of rows within a few hundred milliseconds, or hundreds of millions of rows in just a few seconds.
17
17
18
-
## Usage in Yandex.Metrica and other Yandex services {#usage-in-yandex-metrica-and-other-yandex-services}
18
+
## Usage in Yandex.Metrica and Other Yandex Services {#usage-in-yandex-metrica-and-other-yandex-services}
19
19
20
20
ClickHouse serves multiple purposes in Yandex.Metrica.
21
21
Its main task is to build reports in online mode using non-aggregated data. It uses a cluster of 374 servers, which store over 20.3 trillion rows in the database. The volume of compressed data is about 2 PB, without accounting for duplicates and replicas. The volume of uncompressed data (in TSV format) would be approximately 17 PB.
@@ -28,9 +28,9 @@ ClickHouse also plays a key role in the following processes:
28
28
- Running queries for debugging the Yandex.Metrica engine.
29
29
- Analyzing logs from the API and the user interface.
30
30
31
-
Nowadays, there are a multiple dozen ClickHouse installations in other Yandex services and departments: search verticals, e-commerce, advertisement, business analytics, mobile development, personal services, and others.
31
+
Nowadays, there are a multiple dozen ClickHouse installations in other Yandex services and departments: search verticals, e-commerce, advertisement, business analytics, mobile development, personal services, and others.
32
32
33
-
## Aggregated and non-aggregated data {#aggregated-and-non-aggregated-data}
33
+
## Aggregated and Non-aggregated Data {#aggregated-and-non-aggregated-data}
34
34
35
35
There is a widespread opinion that to calculate statistics effectively, you must aggregate data since this reduces the volume of data.
36
36
@@ -45,12 +45,12 @@ However data aggregation comes with a lot of limitations:
45
45
- Users do not view all the reports we generate for them. A large portion of those calculations are useless.
46
46
- The logical integrity of the data may be violated for various aggregations.
47
47
48
-
If we do not aggregate anything and work with non-aggregated data, this might reduce the volume of calculations.
48
+
If we do not aggregate anything and work with non-aggregated data, this might reduce the volume of calculations.
49
49
50
-
However, with aggregation, a significant part of the work is taken offline and completed relatively calmly. In contrast, online calculations require calculating as fast as possible, since the user is waiting for the result.
50
+
However, with aggregation, a significant part of the work is taken offline and completed relatively calmly. In contrast, online calculations require calculating as fast as possible, since the user is waiting for the result.
51
51
52
-
Yandex.Metrica has a specialized system for aggregating data called Metrage, which was used for the majority of reports.
53
-
Starting in 2009, Yandex.Metrica also used a specialized OLAP database for non-aggregated data called OLAPServer, which was previously used for the report builder.
54
-
OLAPServer worked well for non-aggregated data, but it had many restrictions that did not allow it to be used for all reports as desired. These included a lack of support for data types (numbers only), and the inability to incrementally update data in real-time (it could only be done by rewriting data daily). OLAPServer is not a DBMS, but a specialized DB.
52
+
Yandex.Metrica has a specialized system for aggregating data called Metrage, which was used for the majority of reports.
53
+
Starting in 2009, Yandex.Metrica also used a specialized OLAP database for non-aggregated data called OLAPServer, which was previously used for the report builder.
54
+
OLAPServer worked well for non-aggregated data, but it had many restrictions that did not allow it to be used for all reports as desired. These included a lack of support for data types (numbers only), and the inability to incrementally update data in real-time (it could only be done by rewriting data daily). OLAPServer is not a DBMS, but a specialized DB.
55
55
56
-
The initial goal for ClickHouse was to remove the limitations of OLAPServer and solve the problem of working with non-aggregated data for all reports, but over the years, it has grown into a general-purpose database management system suitable for a wide range of analytical tasks.
56
+
The initial goal for ClickHouse was to remove the limitations of OLAPServer and solve the problem of working with non-aggregated data for all reports, but over the years, it has grown into a general-purpose database management system suitable for a wide range of analytical tasks.
0 commit comments