[Donationsのために書く]の一部として寄付を受け取りましたプログラム。[Yandex]によって作成された、オープンソースの列指向の分析データベースです。ビッグデータのユースケース。ClickHouseのリアルタイムクエリ処理のサポートにより、1秒未満の分析結果を必要とするアプリケーションに適しています。ClickHouseのクエリ言語はSQLの方言であり、強力な宣言型クエリ機能を可能にすると同時に、エンドユーザーに親しみやすさと小さな学習曲線を提供します。_Column-oriented_データベースは、行ではなく列でグループ化されたブロックにレコードを保存します。クエリにない列のデータを読み込まないことにより、列指向データベースはクエリの完了中にデータを読み取る時間を短縮します。その結果、これらのデータベースは、OLAPなどの特定のワークロードに対して、従来の行ベースのシステムよりもはるかに高速に結果を計算して返すことができます。オンライン分析処理(OLAP)システムでは、大量のデータを整理し、複雑なクエリを実行できます。ペタバイトのデータを管理し、クエリ結果を迅速に返すことができます。このように、OLAPはデータサイエンスやビジネス分析などの分野での作業に役立ちます。このチュートリアルでは、ClickHouseデータベースサーバーとクライアントをマシンにインストールします。通常のタスクにDBMSを使用し、オプションで別のサーバーからリモートアクセスを有効にして、別のマシンからデータベースに接続できるようにします。次に、サンプルのWebサイト訪問データをモデリングおよびクエリして、ClickHouseをテストします。18.04サーバーは、非rootユーザーとファイアウォールのセットアップを有効にしました。初期サーバー設定https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04[tutorial]に従ってユーザーを作成し、ファイアウォールを設定できます。初期サーバー設定https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04[tutorial]に従うことができます。+`を使用してClickHouseサーバーとクライアントプログラムをインストールします。最初に、次を実行してサーバーにSSH接続します。@Yandexは、ClickHouseの最新バージョンを含むAPTリポジトリを管理しています。検証済みのClickHouseパッケージを安全にダウンロードできるように、リポジトリのGPGキーを追加します。E0C56BD4次のような出力が表示されます。1出力は、キーが正常に検証および追加されたことを確認します。次を実行して、APTリポジトリリストにリポジトリを追加します。+`にパイプ処理して、この出力がルート所有ファイルに出力できるようにしました。update`を実行してパッケージを更新します。clickhouse-client`パッケージがインストールできるようになります。以下を使用してインストールします。clickhouse-clientClickHouseサーバーとクライアントを正常にインストールしました。これで、データベースサービスを開始し、それが正しく実行されていることを確認する準備ができました。+`サービスを作成します。+`]は、Linuxがサービスを初期化および管理するためのinitシステムです。このセクションでは、サービスを開始し、正常に実行されていることを確認します。+`サービスを開始します。start前のコマンドは出力を表示しません。サービスが正常に実行されていることを確認するには、次を実行します。status次のような出力が表示されます。--config=/etc/ClickHouse-server/config.xml出力は、サーバーが実行中であることを示しています。CLIプログラムを使用してサーバーに接続できるようになります。ステップ3-データベースとテーブルの作成ClickHouseでは、対話型データベースプロンプトでSQLステートメントを直接実行することにより、データベースを作成および削除できます。ステートメントは、特定の構文に従うコマンドで構成され、必要なデータとともに要求された操作を実行するようデータベースサーバーに指示します。+」構文を使用します。データベースを作成するには、まず次のコマンドを実行してクライアントセッションを開始します。SQLステートメントを実行して次のようなアクションを実行できるクライアントプロンプトにログインします。クエリを実行して、さまざまな条件を使用してオプションでフィルター処理およびグループ化されたデータを取得します。このステップでは、ClickHouseクライアントでデータを挿入する準備ができたら、データベースとテーブルを作成します。このチュートリアルでは、「」という名前のデータベースを作成し、その中に「」という名前のテーブルを作成して、ウェブサイトへのアクセス時間を追跡します。`++`データベースを作成します。;データベースが作成されたことを示す次の出力が表示されます。sec.ClickHouseテーブルは、他のリレーショナルデータベースのテーブルに似ています。構造化された形式で関連データのコレクションを保持します。タイプとともに列を指定し、データの行を追加し、テーブルに対してさまざまな種類のクエリを実行できます。ClickHouseでテーブルを作成するための構文は、次の構造例に従います。+`の値は、任意の有効なASCII識別子にすることができます。ClickHouseは、幅広い列タイプをサポートしています。人気のあるものは次のとおりです。+:0から18446744073709551615の範囲の整数値を保存するために使用されます。+:2039.23、10.5などの浮動小数点数を格納するために使用されます。String:可変長文字の保存に使用されます。任意の長さを格納できるため、最大長属性は必要ありません。+`形式に従う日付を保存するために使用されます。列の定義後、テーブルに使用されるエンジンを指定します。ClickHouseでは、_Engines_が基になるデータの物理構造、テーブルのクエリ機能、同時アクセスモード、インデックスのサポートを決定します。さまざまなエンジン要件は、さまざまなアプリケーション要件に適しています。テーブル作成の概要ができたので、テーブルを作成します。変更するデータベースを確認することから始めます。`+`データベースに切り替えたことを示す次の出力が表示されます。sec.このガイドの残りの部分では、このデータベースのコンテキスト内でステートメントを実行することを想定しています。`++`テーブルを作成します。;コマンドの機能の内訳は次のとおりです。`++`という名前のテーブルを作成します。他のRDBMSシステムと同様に、ClickHouseの主キー列は行を一意に識別します。各行には、この列の一意の値が必要です。+:各訪問の期間を秒単位で保存するために使用されるフロート列。+`カラムには、12.50などの10進数値を格納できます。example.com`のような、アクセスしたURLを保存する文字列列。+:訪問が発生した日時を追跡する日付と時刻の列。エンジンのhttps://clickhouse.yandex/docs/en/operations/table_engines/mergetree/[MergeTreeファミリー]は、大規模なリアルタイム挿入、全体的な堅牢性、およびクエリサポートの最適化されたサポートにより、実稼働データベースに推奨されます。MergeTreeエンジンは、主キーによる行の並べ替え、行のパーティション分割、データの複製とサンプリングをサポートしています。family]のエンジンを使用して最適化できます。そのユースケースのために。列の定義後、他のテーブルレベルのオプションを定義します。+`カラムでソートされた値を保存します。主キーは行を一意に識別し、単一行への効率的なアクセスと行の効率的なコロケーションに使用されます。createステートメントを実行すると、次の出力が表示されます。sec.このセクションでは、Webサイト訪問データを追跡するためのデータベースとテーブルを作成しました。次のステップでは、データをテーブルに挿入し、既存のデータを更新して、そのデータを削除します。`++`テーブルを使用してデータを挿入、更新、削除します。次のコマンドは、ClickHouseテーブルに行を挿入するための構文の例です。);次に、次の各ステートメントを実行して、ウェブサイト訪問データのサンプルの数行を「++」テーブルに挿入します。();挿入ステートメントごとに次の出力が繰り返されます。sec.各行の出力は、それが「++」テーブルに正常に挿入されたことを示しています。次に、「+」テーブルに列を追加します。+`構文をサポートします。テーブルに列を追加するための基本的な構文は次のとおりです。;次のステートメントを実行して、Webサイトへの訪問の場所を保存する「++」という名前の列を追加します。;次のような出力が表示されます。sec.出力は、「++」列が正常に追加されたことを示しています。バージョン19.3.6の時点では、ClickHouseは実装の制約のため、データの個々の行の更新と削除をサポートしていません。ClickHouseは一括更新と一括削除をサポートしており、これらの操作の標準ではない使用法を強調するための明確なSQL構文を備えています。次の構文は、行を一括更新する例です。in」列を更新します。データベースプロンプトに入力して実行します。;一括更新ステートメントの出力は次のとおりです。sec.出力は、更新クエリが正常に完了したことを示しています。+`は、クエリが行を返さなかったことを示します。これは、更新クエリと削除クエリの場合に当てはまります。行を一括削除するための構文例は、行の更新に似ており、次の構造を持っています。+」が5未満のすべての行を削除します。;一括削除ステートメントの出力は次のようになります。sec.出力は、5秒未満の期間で行を削除したことを確認します。テーブルから列を削除するには、構文は次の構造例に従います。+」出力は次のようになります。sec.`++`テーブルに行と列を正常に挿入、更新、削除したので、次のステップでデータのクエリに進みます。ステップ5-データのクエリClickHouseのクエリ言語は、分析ワークロードに適した拡張機能を備えたSQLのカスタム方言です。`++`テーブルからデータと結果を取得します。選択クエリを使用すると、指定した条件でフィルタリングされたデータの行と列を、取得する行数などのオプションとともに取得できます。`構文を使用して、データの行と列を選択できます。+`クエリの基本的な構文は次のとおりです。of」の値を取得します。2;次の出力が表示されます。sec.出力は、指定した条件に一致する2つの行を返しました。値を選択したので、集計クエリの実行に移ることができます。集計クエリは、一連の値を操作し、単一の出力値を返すクエリです。分析データベースでは、これらのクエリは頻繁に実行され、データベースによって適切に最適化されます。ClickHouseでサポートされているいくつかの集約関数は次のとおりです。+:指定された条件に一致する行の数を返します。+:選択した列の値の合計を返します。+:選択した列の値の平均を返します。ClickHouse固有の集計関数には次のものがあります。+:一致した個別の行のおおよその数を返します。+:近似アルゴリズムを使用して、特定の列の最も頻繁な値の配列を返します。;次のような出力が表示されます。sec.次に、以下を実行して上位2つのURLを計算します。;次のような出力が表示されます。sec.「++」テーブルのクエリが正常に完了したので、次のステップでテーブルとデータベースを削除します。ステップ6-テーブルとデータベースの削除このセクションでは、「」テーブルと「」データベースを削除します。テーブルを削除するための構文は、この例に従います。;`++`テーブルを削除するには、次のステートメントを実行します。;テーブルが正常に削除されたことを宣言する次の出力が表示されます。`構文を使用してデータベースを削除できます。`+`データベースを削除するには、次のステートメントを実行します。;結果の出力は、データベースが正常に削除されたことを示しています。sec.この手順でテーブルとデータベースを削除しました。ClickHouseインスタンスでデータベース、テーブル、データを作成、更新、削除したので、次のセクションでデータベースサーバーへのリモートアクセスを有効にします。手順7-ファイアウォールルールの設定(オプション)同じサーバーで実行されているアプリケーションでClickHouseをローカルでのみ使用する場合、またはサーバーでファイアウォールを有効にしていない場合は、このセクションを完了する必要はありません。代わりに、ClickHouseデータベースサーバーにリモートで接続する場合は、この手順に従う必要があります。現在、サーバーでは、すべてのポートにアクセスするパブリックIPアドレスを無効にするファイアウォールが有効になっています。リモートアクセスを許可するには、次の2つの手順を完了します。ClickHouseの構成を変更し、すべてのインターフェイスでリッスンできるようにします。ClickHouseサーバーが実行するHTTPポートであるポート「8123」への着信接続を許可するファイアウォールルールを追加します。+」と入力して終了します。以下を実行して構成ファイルを編集します。+`を含む行のコメントを解除します。新しい構成を適用するには、次を実行してサービスを再起動します。restartこのコマンドからの出力は表示されません。」からの接続の場合はポート「+9000」でリッスンします。次のコマンドを使用して、2番目のサーバーのIPアドレスの両方のポートへのアクセスを許可します。9000両方のポートへのアクセスを有効にしたことを示す両方のコマンドの次の出力が表示されます。addedClickHouseは、追加したIPからアクセスできるようになります。必要に応じて、ローカルマシンのアドレスなどのIPを自由に追加してください。+`がインストールされていることを確認します。2番目のサーバーにログインしたので、次を実行してクライアントセッションを開始します。--hostサーバーに正常に接続されたことを示す次の出力が表示されます。54415.:)この手順では、ファイアウォールルールを調整して、ClickHouseデータベースサーバーへのリモートアクセスを有効にしました。結論サーバーにClickHouseデータベースインスタンスを正常にセットアップし、データベースとテーブルを作成し、データを追加し、クエリを実行し、データベースを削除しました。ClickHouseのドキュメント内で、他のオープンソースおよび商用の分析データベースに対するhttps://ClickHouse.yandex/benchmark.html[benchmarks]および一般的なリファレンスhttps://ClickHouse.yandex/docs/en/[documents]を読むことができます。ClickHouseには、異なるhttps://www.digitaloceanにデータを保存することでパフォーマンスを改善し、データ損失から保護するために、複数のサーバーにわたる分散クエリ処理が含まれます。