remote, remoteSecure テーブル関数
テーブル関数 remote
は、リモートサーバーに即座にアクセスすることを可能にします。つまり、Distributed テーブルを作成することなくリモートサーバーに接続できます。テーブル関数 remoteSecure
は remote
と同じですが、安全な接続を介して動作します。
両方の関数は SELECT
および INSERT
クエリで使用できます。
構文
パラメータ
引数 | 説明 |
---|---|
addresses_expr | リモートサーバーのアドレスまたは複数のリモートサーバーのアドレスを生成する式。形式: host または host:port 。host はサーバー名、または IPv4 または IPv6 アドレスとして指定できます。IPv6 アドレスは角括弧で囲む必要があります。port はリモートサーバー上の TCP ポートです。ポートが省略された場合、テーブル関数 remote ではサーバー設定ファイルの tcp_port(デフォルトは9000)を使用し、テーブル関数 remoteSecure では tcp_port_secure(デフォルトは9440)を使用します。IPv6 アドレスの場合はポートが必須です。 パラメータ addresses_expr のみが指定された場合、db と table はデフォルトで system.one を使用します。種類: String。 |
db | データベース名。種類: String。 |
table | テーブル名。種類: String。 |
user | ユーザー名。指定しない場合は default が使用されます。種類: String。 |
password | ユーザーパスワード。指定しない場合は空のパスワードが使用されます。種類: String。 |
sharding_key | ノード間でデータを分散するためのシャーディングキー。例えば: insert into remote('127.0.0.1:9000,127.0.0.2', db, table, 'default', rand()) 。種類: UInt32。 |
引数は named collections を使用しても渡せます。
返される値
リモートサーバーに位置するテーブル。
使用法
テーブル関数 remote
と remoteSecure
は各リクエストごとに接続を再確立するため、代わりに Distributed
テーブルを使用することを推奨します。また、ホスト名が設定されている場合、名前が解決され、さまざまなレプリカと作業するときにエラーがカウントされません。多くのクエリを処理する場合は、常に事前に Distributed
テーブルを作成し、テーブル関数 remote
を使用しないでください。
remote
テーブル関数は次のような場合に便利です。
- 1回限りのデータマイグレーション
- データの比較、デバッグ、テストのための特定のサーバーへのアクセス、つまり、アドホック接続。
- さまざまな ClickHouse クラスター間のクエリ(研究目的)。
- 手動で行われる稀な分散リクエスト。
- サーバーのセットが毎回再定義される分散リクエスト。
アドレス
複数のアドレスはカンマで区切ることができます。この場合、ClickHouse は分散処理を使用し、すべての指定されたアドレスにクエリを送信します(異なるデータを持つシャードのように)。例:
例
リモートサーバーからデータを選択
または named collections を使用して:
リモートサーバーのテーブルにデータを挿入
テーブルのシステム間マイグレーション
この例では、サンプルデータセットから1つのテーブルを使用します。データベースは imdb
で、テーブルは actors
です。
元の ClickHouse システムで
-
ソースデータベースおよびテーブル名(
imdb.actors
)を確認します。 -
ソースから CREATE TABLE ステートメントを取得します:
応答
目的地の ClickHouse システムで
-
目的地のデータベースを作成します:
-
ソースから取得した CREATE TABLE ステートメントを使用して目的地を作成します:
ソース展開に戻る
リモートシステムで作成した新しいデータベースとテーブルに挿入します。ホスト、ポート、ユーザー名、パスワード、目的地のデータベース、および目的地のテーブルが必要です。
グロビング
波括弧 { }
内のパターンは、シャードのセットを生成し、レプリカを指定するために使用されます。複数の対の波括弧がある場合、対応するセットの直積が生成されます。
以下のパターンタイプがサポートされています。
{a,b,c}
- 代替文字列a
、b
またはc
のいずれかを表します。このパターンは、最初のシャードアドレスではa
に置き換えられ、2番目のシャードアドレスではb
に置き換えられ、以下同様です。例えば、example0{1,2}-1
はexample01-1
とexample02-1
のアドレスを生成します。{N..M}
- 数値の範囲。このパターンは、N
から (含む)M
までのインデックスが増加するシャードアドレスを生成します。例えば、example0{1..2}-1
はexample01-1
およびexample02-1
を生成します。{0n..0m}
- 先頭ゼロを持つ数値の範囲。このパターンはインデックスの先頭ゼロを保持します。例えば、example{01..03}-1
はexample01-1
、example02-1
およびexample03-1
を生成します。{a|b}
-|
で区切られた任意の数の変種。このパターンはレプリカを指定します。例えば、example01-{1|2}
はレプリカexample01-1
とexample01-2
を生成します。
クエリは最初の正常なレプリカに送信されます。ただし、remote
の場合、レプリカは現在設定されている load_balancing 設定の順序で繰り返されます。
生成されるアドレスの数は table_function_remote_max_addresses 設定によって制限されています。