名前付きコレクション
名前付きコレクションは、外部ソースとの統合を構成するために使用されるキー-バリューペアのコレクションを保存する方法を提供します。名前付きコレクションは、ディクショナリ、テーブル、テーブル関数、オブジェクトストレージで使用することができます。
名前付きコレクションは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/
にファイルを追加することで割り当てることができます。以下の例では、ユーザー default
に access_management
と named_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
のキー key1
と key3
を変更または追加します(これは、それらのキーの overridable
フラグの値を変更しません):
キー key1
を変更または追加し、常にオーバーライド可能にします:
キー key2
を collection2
から削除します:
コレクション 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 を参照してください。さらに、以下のエイリアスがあります:
username
はuser
のためのエイリアスdb
はdatabase
のためのエイリアス
パラメータ addresses_expr
は、host:port
の代わりにコレクションの中で使用されます。このパラメータはオプショナルです。なぜなら、他にもオプショナルなパラメータ:host
、hostname
、port
があるからです。以下の擬似コードは優先順位を説明します:
作成の例:
設定の例:
PostgreSQL関数での名前付きコレクションの使用例
PostgreSQLエンジンを持つデータベースでの名前付きコレクションの使用例
PostgreSQLはテーブル作成時に名前付きコレクションからデータをコピーします。コレクションの変更は既存のテーブルには影響を与えません。
PostgreSQLエンジンを持つデータベースでの名前付きコレクションの使用例
PostgreSQLソースを持つディクショナリでの名前付きコレクションの使用例
リモートClickHouseデータベースにアクセスするための名前付きコレクション
パラメータの説明については、remote を参照してください。
設定の例:
secure
は remoteSecure
接続には必要ありませんが、ディクショナリでは使用できます。
remote
/remoteSecure
関数での名前付きコレクションの使用例
ClickHouseソースを持つディクショナリでの名前付きコレクションの使用例
Kafkaにアクセスするための名前付きコレクション
パラメータの説明については、Kafka を参照してください。
DDLの例
XMLの例
Kafkaテーブルでの名前付きコレクションの使用例
以下の2つの例は、同じ名前付きコレクション my_kafka_cluster
を使用します:
バックアップ用の名前付きコレクション
パラメータの説明については、バックアップと復元 を参照してください。