メインコンテンツまでスキップ
メインコンテンツまでスキップ

名前付きコレクション

Not supported in ClickHouse Cloud

名前付きコレクションは、外部ソースとの統合を構成するために使用されるキー-バリューペアのコレクションを保存する方法を提供します。名前付きコレクションは、ディクショナリ、テーブル、テーブル関数、オブジェクトストレージで使用することができます。

名前付きコレクションはDDLまたは設定ファイルで構成され、ClickHouseが起動するときに適用されます。これにより、オブジェクトの作成と管理者アクセス権のないユーザーからの資格情報の隠蔽が簡略化されます。

名前付きコレクションのキーは、対応する関数、テーブルエンジン、データベースなどのパラメータ名に一致する必要があります。以下の例では、各タイプのパラメータリストをリンクしています。

名前付きコレクションに設定されたパラメータは、SQLでオーバーライドすることができ、以下の例で示されています。この機能は、[NOT] OVERRIDABLEキーワードおよびXML属性、または設定オプション allow_named_collection_override_by_defaultを使用して制限することができます。

危険

オーバーライドが許可されている場合、管理者アクセス権のないユーザーが隠そうとしている資格情報を特定できる可能性があります。 その目的で名前付きコレクションを使用している場合は、allow_named_collection_override_by_default(デフォルトで有効)を無効にする必要があります。

システムデータベースに名前付きコレクションを保存する

DDLの例

上記の例では:

  • key_1 は常にオーバーライド可能です。
  • key_2 は決してオーバーライドできません。
  • url は、allow_named_collection_override_by_defaultの値に応じてオーバーライド可能または不可能です。

DDLでの名前付きコレクションを作成するための権限

DDLで名前付きコレクションを管理するには、ユーザーは named_control_collection 権限を持っている必要があります。これは、/etc/clickhouse-server/users.d/にファイルを追加することで割り当てることができます。以下の例では、ユーザー defaultaccess_managementnamed_collection_control の両方の権限が与えられています:

ヒント

上記の例では、password_sha256_hex の値はパスワードのSHA256ハッシュの16進数表現です。このユーザー default の設定には、デフォルト設定で平文の password が設定されているため、replace=true 属性があり、ユーザーに対して平文とsha256 hexの両方のパスワードを設定することはできません。

名前付きコレクションのストレージ

名前付きコレクションは、ローカルディスクまたはZooKeeper/Keeperに保存することができます。デフォルトでは、ローカルストレージが使用されます。また、ディスク暗号化で使用されるのと同じアルゴリズムを使って暗号化された状態で保存することができ、デフォルトでは aes_128_ctr が使用されます。

名前付きコレクションストレージを構成するには、type を指定する必要があります。これは local または keeper/zookeeperのいずれかです。暗号化されたストレージの場合、local_encrypted または keeper_encrypted/zookeeper_encrypted を使用できます。

ZooKeeper/Keeperを使用するには、設定ファイルの named_collections_storage セクションに、名前付きコレクションが保存されるパス(ZooKeeper/Keeper内のパス)を設定する必要があります。以下の例では、暗号化とZooKeeper/Keeperを使用しています:

オプションの設定パラメータ update_timeout_ms はデフォルトで 5000 です。

設定ファイルに名前付きコレクションを保存する

XMLの例

上記の例では:

  • key_1 は常にオーバーライド可能です。
  • key_2 は決してオーバーライドできません。
  • url は、allow_named_collection_override_by_defaultの値に応じてオーバーライド可能または不可能です。

名前付きコレクションの修正

DDLクエリで作成された名前付きコレクションは、DDLで変更または削除できます。XMLファイルで作成された名前付きコレクションは、対応するXMLを編集または削除することで管理できます。

DDL名前付きコレクションを変更する

コレクション collection2のキー key1key3 を変更または追加します(これは、それらのキーの overridable フラグの値を変更しません):

キー key1 を変更または追加し、常にオーバーライド可能にします:

キー key2collection2 から削除します:

コレクション collection2 のキー key1 を変更または追加し、キー key3 を削除します:

キーを overridable フラグのデフォルト設定に強制するには、キーを削除して再追加する必要があります。

DDL名前付きコレクション collection2 を削除する

S3にアクセスするための名前付きコレクション

パラメータの説明については、s3 テーブル関数を参照してください。

DDLの例

XMLの例

s3()関数とS3テーブルの名前付きコレクションの例

以下の2つの例は、同じ名前付きコレクション s3_mydata を使用します:

s3()関数

ヒント

上記のs3()関数への最初の引数はコレクション名 s3_mydata です。名前付きコレクションがなければ、アクセスキーID、シークレット、フォーマット、URLはすべて s3() 関数への各呼び出しで渡されます。

S3テーブル

MySQLデータベースにアクセスするための名前付きコレクション

パラメータの説明については、mysql を参照してください。

DDLの例

XMLの例

mysql()関数、MySQLテーブル、MySQLデータベース、およびディクショナリの名前付きコレクションの例

以下の4つの例は、同じ名前付きコレクション mymysql を使用します:

mysql()関数

注記

名前付きコレクションは table パラメータを指定していないため、関数呼び出しで table = 'test' として指定されています。

MySQLテーブル

注記

DDLは connection_pool_size に対する名前付きコレクション設定をオーバーライドします。

MySQLデータベース

MySQLディクショナリ

PostgreSQLデータベースにアクセスするための名前付きコレクション

パラメータの説明については、postgresql を参照してください。さらに、以下のエイリアスがあります:

  • usernameuser のためのエイリアス
  • dbdatabase のためのエイリアス

パラメータ addresses_expr は、host:port の代わりにコレクションの中で使用されます。このパラメータはオプショナルです。なぜなら、他にもオプショナルなパラメータ:hosthostnameportがあるからです。以下の擬似コードは優先順位を説明します:

作成の例:

設定の例:

PostgreSQL関数での名前付きコレクションの使用例

PostgreSQLエンジンを持つデータベースでの名前付きコレクションの使用例

注記

PostgreSQLはテーブル作成時に名前付きコレクションからデータをコピーします。コレクションの変更は既存のテーブルには影響を与えません。

PostgreSQLエンジンを持つデータベースでの名前付きコレクションの使用例

PostgreSQLソースを持つディクショナリでの名前付きコレクションの使用例

リモートClickHouseデータベースにアクセスするための名前付きコレクション

パラメータの説明については、remote を参照してください。

設定の例:

secureremoteSecure 接続には必要ありませんが、ディクショナリでは使用できます。

remote/remoteSecure関数での名前付きコレクションの使用例

ClickHouseソースを持つディクショナリでの名前付きコレクションの使用例

Kafkaにアクセスするための名前付きコレクション

パラメータの説明については、Kafka を参照してください。

DDLの例

XMLの例

Kafkaテーブルでの名前付きコレクションの使用例

以下の2つの例は、同じ名前付きコレクション my_kafka_cluster を使用します:

バックアップ用の名前付きコレクション

パラメータの説明については、バックアップと復元 を参照してください。

DDLの例

XMLの例