すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for ClickHouse:SharedMergeTreeテーブルエンジンファミリー

最終更新日:Oct 17, 2024

このトピックでは、ApsaraDB for ClickHouse Enterprise EditionのSharedMergeTreeテーブルエンジンファミリーについて説明します。

概要

SharedMergeTreeテーブルエンジンファミリーは、ApsaraDB for ClickHouse Enterprise Editionでのみ使用できます。

SharedMergeTreeテーブルエンジンファミリーは、ReplicatedMergeTreeエンジンのクラウドネイティブな代替品であり、Object Storage Service (OSS) の上で動作します。 各特定のMergeTreeエンジンタイプには、SharedMergeTreeエンジンタイプの代替があります。 たとえば、ReplacingSharedMergeTreeはReplacingReplicatedMergeTreeを置き換えます。

SharedMergeTreeテーブルエンジンファミリーは、ApsaraDB for ClickHouse Enterprise Editionのパフォーマンスを向上させます。 ReplicatedMergeTreeベースのエンジンの代わりにSharedMergeTreeテーブルエンジンファミリーを使用するために変更を加える必要はありません。 SharedMergeTreeテーブルエンジンファミリーには、次の利点があります。

  • 挿入スループットの向上

  • バックグラウンドマージのスループットの向上

  • 変異のスループットの向上

  • より高速なスケーリング操作

  • SELECTクエリのより軽量で強力なデータ一貫性

ReplicatedMergeTreeと比較して、SharedMergeTreeはコンピューティングとストレージのより深い分離を提供します。これは大幅な改善です。 次の図は、ReplicatedMergeTreeがコンピューティングとストレージを分離する方法を示しています。image

上の図は、ReplicatedMergeTreeに格納されているデータがオブジェクトストレージにあることを示しています。 ただし、メタデータは引き続き各ClickHouseサーバーに存在します。 これは、レプリケーションごとにすべてのレプリカでメタデータをレプリケートする必要があることを示します。

imageReplicatedMergeTreeとは異なり、SharedMergeTreeは、互いに通信するためにレプリカを必要としない。 代わりに、すべての通信は共有ストレージとClickHouse Keeperを使用して行われます。 SharedMergeTreeは非同期リーダーレスレプリケーションを実装し、調整とメタデータストレージにClickHouse Keeperを使用します。 これは、サービスのスケールアウト時にメタデータをレプリケートする必要がないことを示しています。 これにより、レプリケーション、変更、マージ、およびスケールアウト操作が高速化されます。 SharedMergeTreeでは、各テーブルに数百のレプリカを含めることができます。 これにより、シャードなしの動的スケールアウトが実装されます。 これは、ApsaraDB for ClickHouse Enterprise Editionで分散クエリ実行アプローチを使用して、クエリにより多くのコンピューティングリソースを利用できることも示しています。

システムモニタリング

システムモニタリングに使用されるReplicatedMergeTreeのシステムテーブルのほとんどは、system.replication_queuesystem.replicated_fetchesを除き、SharedMergeTreeに存在します。 これは、データとメタデータの複製が発生しないためです。 ただし、SharedMergeTreeには、2つのテーブルに対応する選択肢があります。

  • system.virtual_parts: このテーブルは、SharedMergeTreeのsystem.replication_queueの代替として機能します。 このテーブルには、マージ、変更、パーティションの削除など、現在のデータ部分と進行中の将来のデータ部分の最新のセットに関する情報が格納されます。

  • system.shared_merge_tree_fetches: このテーブルは、SharedMergeTreeのsystem.replicated_fetchesの代替として機能します。 テーブルには、メモリにロードされているプライマリキーとチェックサムに関する情報が含まれています。

SharedMergeTreeの使用

SharedMergeTreeベースのテーブルエンジンは、ApsaraDB for ClickHouse Enterprise Editionのデフォルトのテーブルエンジンです。 SharedMergeTreeテーブルエンジンファミリーをサポートするクラスターの場合、追加の変更は必要ありません。 以前と同じ方法でテーブルを作成でき、SharedMergeTreeベースのテーブルエンジンが自動的に使用されます。 エンジンは、CREATE TABLEステートメントで指定されたエンジンに対応します。

  • SharedMergeTreeテーブルエンジンを使用して、my_tableという名前のテーブルを作成できます。

    CREATE TABLE my_table(
     key UInt64,
     value String
    )
    ENGINE = MergeTree
    ORDER BY key 
  • ApsaraDB for ClickHouse Enterprise Editionでは、default_table_ENGINEの値がMergeTreeであるため、engineの値をMergeTreeに設定する必要はありません。 次のクエリは、前述のクエリと同じです。

    CREATE TABLE my_table(
     key UInt64,
     value String
    )
    ORDER BY key 
  • ReplacingMergeTree、CollapsingMergeTree、AggregingMergeTree、SummingMergeTree、VersionedCollapsingMergeTree、GraphiteMergeTreeテーブルエンジンを使用すると、対応するSharedMergeTreeベースのテーブルエンジンに自動的に変換されます。

    CREATE TABLE myFirstReplacingMT
    (
        `key` Int64,
        `someCol` String,
        `eventTime` DateTime
    )
    ENGINE = ReplacingMergeTree
    ORDER BY key;
  • SHOW CREATE TABLEステートメントを実行して、対応するCREATE TABLEステートメントをクエリできます。

    SHOW CREATE TABLE myFirstReplacingMT;
    CREATE TABLE default.myFirstReplacingMT 
    ( `key` Int64, `someCol` String, `eventTime` DateTime ) 
    ENGINE = SharedReplacingMergeTree('/clickhouse/tables/{uuid}/{shard}', '{replica}') 
    ORDER BY key 
    SETTINGS index_granularity = 8192

エンジン構成

次のエンジン構成の変更に注意する必要があります。

  • insert_quorum: SharedMergeTreeへのすべての挿入は、クォーラム挿入 (共有ストレージに書き込まれたデータ) です。 したがって、SharedMergeTreeベースのテーブルエンジンを使用する場合、このパラメーターは必要ありません。

  • insert_quorum_parallel: SharedMergeTreeへのすべての挿入は、クォーラム挿入 (共有ストレージに書き込まれたデータ) です。

  • select_sequential_consistency: 定足数の挿入は必要ありません。 追加のリクエストは、SELECTクエリでClickHouse Keeperに送信されます。