Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
a7f016f1
C
ClickHouse
项目概览
2dot5
/
ClickHouse
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
ClickHouse
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a7f016f1
编写于
11月 14, 2019
作者:
2
243f6a8885a308d313198a2e037
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: better human-translate on Japanese ja/index.md
上级
85a7cb8c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
26 deletion
+26
-26
docs/ja/index.md
docs/ja/index.md
+26
-26
未找到文件。
docs/ja/index.md
浏览文件 @
a7f016f1
...
...
@@ -13,7 +13,7 @@ ClickHouseは、クエリのオンライン分析処理(OLAP)用の列指向
つまり、行に関連するすべての値は物理的に隣り合わせに格納されます。
行指向のDBMSの例
は、MySQL、Postgres、およびMS SQL Serverです。
行指向のDBMSの例
:MySQL, Postgres および MS SQL Server
{: .grey }
列指向のDBMSでは、データは次のように保存されます:
...
...
@@ -29,35 +29,35 @@ ClickHouseは、クエリのオンライン分析処理(OLAP)用の列指向
これらの例は、データが配置される順序のみを示しています。
異なる列の値は別々に保存され、同じ列のデータは一緒に保存されます。
列指向DBMSの例
: Vertica, Paraccel (Actian Matrix and Amazon Redshift), Sybase IQ, Exasol, Infobright, InfiniDB, MonetDB (VectorWise and Actian Vector), LucidDB, SAP HANA, Google Dremel, Google PowerDrill, Druid, および kdb+.
列指向DBMSの例
:Vertica, Paraccel (Actian Matrix and Amazon Redshift), Sybase IQ, Exasol, Infobright, InfiniDB, MonetDB (VectorWise and Actian Vector), LucidDB, SAP HANA, Google Dremel, Google PowerDrill, Druid および kdb+
{: .grey }
データを格納するためのさまざまな順序は、さまざまなシナリオにより適してい
ます。
データアクセスシナリオとは、クエリの実行内容、頻度、割合を指します。クエリ
の各タイプ(行、列、バイト)で読み取られるデータの量。データの読み取りと更新の関係。データの作業
サイズとローカルでの使用方法。トランザクションが使用されるかどうか、およびそれらがどの程度分離されているか。データ複製と論理的整合性の要件。クエリの種類ごとの遅延とスループットの要件など。
異なったデータ格納の順序は、異なったシナリオにより適し
ます。
データアクセスシナリオとは、クエリの実行内容、頻度、割合を指します。クエリ
で読み取られるの各種データの量(行、列、バイト)。データの読み取りと更新の関係。作業データの
サイズとローカルでの使用方法。トランザクションが使用されるかどうか、およびそれらがどの程度分離されているか。データ複製と論理的整合性の要件。クエリの種類ごとの遅延とスループットの要件など。
システムの負荷が高いほど、使用シナリオの要件に一致するようにセットアップされたシステムをカスタマイズすることがより重要になり、このカスタマイズはより細かくなります。大
幅に
異なるシナリオに等しく適したシステムはありません。システムがさまざまなシナリオに適応可能である場合、高負荷下では、システムはすべてのシナリオを同等に不十分に処理するか、1つまたはいくつかの可能なシナリオでうまく機能します。
システムの負荷が高いほど、使用シナリオの要件に一致するようにセットアップされたシステムをカスタマイズすることがより重要になり、このカスタマイズはより細かくなります。大
きく
異なるシナリオに等しく適したシステムはありません。システムがさまざまなシナリオに適応可能である場合、高負荷下では、システムはすべてのシナリオを同等に不十分に処理するか、1つまたはいくつかの可能なシナリオでうまく機能します。
## OLAPシナリオの主要なプロパティ
-
要求の大部分は読み取りアクセス用です
。
-
データは、単一行ではなく、かなり大きなバッチ(> 1000行)で更新されます。または、まったく更新され
ません
。
-
データはDBに追加され
ますが、変更されません
。
-
読み取りの場合、非常に多くの行がDBから抽出され
ますが、列の小さなサブセットのみです
。
-
テーブルは「幅が広
い」ため、多数の列が含まれています
。
-
クエリは比較的まれ
です(通常、サーバーあたり数百のクエリまたは1秒あたりのクエリ数が少ない
)。
-
単純なクエリでは、約50ミリ秒の遅延が
許可されます
。
-
列の値はかなり小さく、数値
と短い文字列(たとえば、URLごとに60バイト)です
。
-
単一のクエリを処理する場合、高いスループットが必要
です(サーバーあたり1秒あたり
最大数十億行)。
-
トランザクションは必要
ありません
。
-
リクエストの大部分は読み取りアクセス用である
。
-
データは、単一行ではなく、かなり大きなバッチ(> 1000行)で更新されます。または、まったく更新され
ない
。
-
データはDBに追加され
るが、変更されない
。
-
読み取りの場合、非常に多くの行がDBから抽出され
るが、一部の列のみ
。
-
テーブルは「幅が広
く」、多数の列が含まれる
。
-
クエリは比較的まれ
(通常、サーバーあたり毎秒数百あるいはそれ以下の数のクエリ
)。
-
単純なクエリでは、約50ミリ秒の遅延が
容認される
。
-
列の値はかなり小さく、数値
や短い文字列(たとえば、URLごとに60バイト)
。
-
単一のクエリを処理する場合、高いスループットが必要
(サーバーあたり毎秒
最大数十億行)。
-
トランザクションは必要
ない
。
-
データの一貫性の要件が低い。
-
クエリごとに1つの大きなテーブルがあ
ります。 1つを除くすべてのテーブルは小さいです
。
-
クエリ結果は、ソースデータよりも大幅に小さくな
ります。つまり、データはフィルター処理または集計されるため、結果は単一サーバーのRAMに収まります
。
-
クエリごとに1つの大きなテーブルがあ
る。 1つを除くすべてのテーブルは小さい
。
-
クエリ結果は、ソースデータよりも大幅に小さくな
る。つまり、データはフィルター処理または集計されるため、結果は単一サーバーのRAMに収まる
。
OLAPシナリオは、他の一般的なシナリオ(OLTPやKey-Valueアクセスなど)とは非常に異なることが容易にわかります。 したがって、まともなパフォーマンスを得るには、OLTPまたはKey-Value DBを使用して分析クエリを処理しようとするのは
意味がありません
。 たとえば、分析にMongoDBまたはRedisを使用しようとすると、OLAPデータベースに比べてパフォーマンスが非常に低下します。
OLAPシナリオは、他の一般的なシナリオ(OLTPやKey-Valueアクセスなど)とは非常に異なることが容易にわかります。 したがって、まともなパフォーマンスを得るには、OLTPまたはKey-Value DBを使用して分析クエリを処理しようとするのは
無意味です
。 たとえば、分析にMongoDBまたはRedisを使用しようとすると、OLAPデータベースに比べてパフォーマンスが非常に低下します。
## OLAPシナリオで列指向データベースがよりよく機能する理由
列指向データベースは、OLAPシナリオにより適しています。ほとんどのクエリの処理が少なくとも100倍高速です。 理由を以下に詳しく説明しますが、
事実
は視覚的に簡単に説明できます:
列指向データベースは、OLAPシナリオにより適しています。ほとんどのクエリの処理が少なくとも100倍高速です。 理由を以下に詳しく説明しますが、
その根拠
は視覚的に簡単に説明できます:
**行指向DBMS**
...
...
@@ -67,15 +67,15 @@ OLAPシナリオは、他の一般的なシナリオ(OLTPやKey-Valueアクセ
![
Column-oriented
](
images/column_oriented.gif#
)
違い
を見ます
?
違い
がわかりましたか
?
### Input/output
1.
分析クエリでは、少数のテーブル列のみを読み取る必要があります。列指向のデータベースでは、必要なデータのみを読み取ることができます。たとえば、100のうち5つの列が必要な場合、I
/
Oが20倍削減されることが期待できます。
2.
データはパケットで読み取られるため、圧縮が容易です。列のデータも圧縮が簡単です。これにより、I
/
Oボリュームがさらに削減されます。
3.
I
/
Oの削減により、より多くのデータがシステムキャッシュに収まります。
1.
分析クエリでは、少数のテーブル列のみを読み取る必要があります。列指向のデータベースでは、必要なデータのみを読み取ることができます。たとえば、100のうち5つの列が必要な場合、I
/
Oが20倍削減されることが期待できます。
2.
データはパケットで読み取られるため、圧縮が容易です。列のデータも圧縮が簡単です。これにより、I
/
Oボリュームがさらに削減されます。
3.
I
/
Oの削減により、より多くのデータがシステムキャッシュに収まります。
たとえば、「各広告プラットフォームのレコード数をカウントする」クエリでは、1つの「広告プラットフォームID」列を読み取る必要がありますが、これは
1バイトの非圧縮を占有します。トラフィックのほとんどが広告プラットフォームからのものではない場合、この列の少なくとも10倍の圧縮が期待できます。クイック圧縮アルゴリズムを使用すると、1秒あたり少なくとも数ギガバイトの非圧縮データの速度でデータを圧縮解除できます。つまり、このクエリは、単一のサーバーで1秒あたり約数10億行の速度で処理できます。この速度は実際には
実際に達成されます。
たとえば、「各広告プラットフォームのレコード数をカウントする」クエリでは、1つの「広告プラットフォームID」列を読み取る必要がありますが、これは
非圧縮では1バイトの領域を要します。トラフィックのほとんどが広告プラットフォームからのものではない場合、この列は少なくとも10倍の圧縮が期待できます。高速な圧縮アルゴリズムを使用すれば、1秒あたり少なくとも非圧縮データに換算して数ギガバイトの速度でデータを展開できます。つまり、このクエリは、単一のサーバーで1秒あたり約数十億行の速度で処理できます。この速度はまさに
実際に達成されます。
<details
markdown=
"1"
><summary>
Example
</summary>
```
...
...
@@ -126,14 +126,14 @@ LIMIT 20
### CPU
クエリを実行するには
多数の行を処理する必要があるため、個別の行ではなくベクター全体のすべての操作をディスパッチするか、ディスパッチコストがほとんどないようにクエリエンジンを実装すると役立ちます。 適切なディスクサブシステムでこれを行わないと、クエリインタープリターが必然的にCPUを停止
させます。
クエリを実行するには
大量の行を処理する必要があるため、個別の行ではなくベクター全体のすべての操作をディスパッチするか、ディスパッチコストがほとんどないようにクエリエンジンを実装すると効率的です。 適切なディスクサブシステムでこれを行わないと、クエリインタープリターが必然的にCPUを失速
させます。
データを列に格納し、可能な場合は列ごとに処理することは理にかなっています。
これを行うには2つの方法があります:
1.
ベクトルエンジン。 すべての操作は、個別の値ではなく、ベクトルに対して記述されます。 これは、オペレーションを頻繁に呼び出す必要がなく、ディスパッチコストが無視できることを意味します。 操作コードには、最適化された内部サイクルが含まれています。
2.
コード生成。 クエリ用に生成されたコードには、すべての間接的な呼び出しが含まれています。
2.
コード生成。 クエリ用に生成されたコードには、すべての間接的な呼び出しが含まれています。
これは、単純なクエリを実行する場合には意味がないため、「通常の」データベースでは実行されません。 ただし、例外があります。 たとえば、MemSQLはコード生成を使用して、SQLクエリを処理する際の遅延を減らします。 (比較のために、分析DBMSではレイテンシではなくスループットの最適化が必要です。)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录