> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-3a82795f.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 実行可能プール Dictionary ソース

> ClickHouse で Dictionary ソースとして実行可能プールを設定します。

実行可能プールでは、プロセスプールからデータを読み込めます。
このソースは、ソースからすべてのデータを読み込む必要がある Dictionary レイアウトでは使用できません。

実行可能プールは、Dictionary が次のいずれかのレイアウトで[保存される](/ja/reference/statements/create/dictionary/layouts/overview#storing-dictionaries-in-memory)場合に使用できます。

* `cache`
* `complex_key_cache`
* `ssd_cache`
* `complex_key_ssd_cache`
* `direct`
* `complex_key_direct`

実行可能プールは、指定したコマンドでプロセスプールを起動し、各プロセスが終了するまで実行し続けます。プログラムは、利用可能な間は STDIN からデータを読み取り、結果を STDOUT に出力する必要があります。また、STDIN 上の次のデータブロックを待機することもできます。ClickHouse は、1 つのデータブロックを処理したあとも STDIN を閉じず、必要に応じて別の chunk のデータをパイプで渡します。実行可能スクリプトは、このデータ処理方式に対応している必要があります。つまり、STDIN をポーリングし、STDOUT にデータを早めにフラッシュできるようにしておく必要があります。

設定例:

<Tabs>
  <Tab title="DDL">
    ```sql theme={null}
    SOURCE(EXECUTABLE_POOL(
        command 'while read key; do printf "$key\tData for key $key\n"; done'
        format 'TabSeparated'
        pool_size 10
        max_command_execution_time 10
        implicit_key false
    ))
    ```
  </Tab>

  <Tab title="設定ファイル">
    ```xml theme={null}
    <source>
        <executable_pool>
            <command><command>while read key; do printf "$key\tData for key $key\n"; done</command</command>
            <format>TabSeparated</format>
            <pool_size>10</pool_size>
            <max_command_execution_time>10<max_command_execution_time>
            <implicit_key>false</implicit_key>
        </executable_pool>
    </source>
    ```
  </Tab>
</Tabs>

設定フィールド:

| 設定                            | 説明                                                                                                                                                                                                                                                                                                          |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `command`                     | 実行可能ファイルの絶対パス、またはファイル名 (プログラムのディレクトリが `PATH` に含まれている場合) 。                                                                                                                                                                                                                                                   |
| `format`                      | ファイルのフォーマットです。[フォーマット](/ja/reference/formats) に記載されているすべてのフォーマットがサポートされます。                                                                                                                                                                                                                                  |
| `pool_size`                   | プールサイズです。`pool_size` に `0` を指定すると、プールサイズの制限はありません。デフォルト値は `16` です。                                                                                                                                                                                                                                          |
| `command_termination_timeout` | 実行可能スクリプトには、メインの read-write ループが含まれている必要があります。Dictionary が破棄されるとパイプが閉じられ、実行可能ファイルは `command_termination_timeout` 秒以内に終了する必要があります。終了しない場合、ClickHouse は子プロセスに SIGTERM シグナルを送信します。秒単位で指定します。デフォルト値は `10` です。省略可能です。                                                                                            |
| `max_command_execution_time`  | データブロックを処理する際の、実行可能スクリプトコマンドの最大実行時間です。秒単位で指定します。デフォルト値は `10` です。省略可能です。                                                                                                                                                                                                                                     |
| `command_read_timeout`        | コマンドの stdout からデータを読み取る際のタイムアウト (ミリ秒) です。デフォルト値は `10000` です。省略可能です。                                                                                                                                                                                                                                         |
| `command_write_timeout`       | コマンドの stdin にデータを書き込む際のタイムアウト (ミリ秒) です。デフォルト値は `10000` です。省略可能です。                                                                                                                                                                                                                                           |
| `implicit_key`                | 実行可能ソースファイルは値のみを返すことができ、要求されたキーとの対応は、結果内の行の順序によって暗黙的に決まります。デフォルト値は `false` です。省略可能です。                                                                                                                                                                                                                       |
| `execute_direct`              | `execute_direct` = `1` の場合、`command` は [user\_scripts\_path](/ja/reference/settings/server-settings/settings#user_scripts_path) で指定された user\_scripts フォルダ内から検索されます。追加のスクリプト引数は空白区切りで指定できます。例: `script_name arg1 arg2`。`execute_direct` = `0` の場合、`command` は `bin/sh -c` の引数として渡されます。デフォルト値は `1` です。省略可能です。 |
| `send_chunk_header`           | プロセスに chunk のデータを送信する前に、行数を送るかどうかを制御します。デフォルト値は `false` です。省略可能です。                                                                                                                                                                                                                                          |

この Dictionary ソースは、XML 設定でのみ構成できます。DDL による executable ソースを使った Dictionary の作成は無効化されています。そうしないと、DB ユーザーが ClickHouse ノード上で任意のバイナリを実行できてしまうためです。
