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

remote, remoteSecure テーブル関数

テーブル関数 remote は、リモートサーバーに即座にアクセスすることを可能にします。つまり、Distributed テーブルを作成することなくリモートサーバーに接続できます。テーブル関数 remoteSecureremote と同じですが、安全な接続を介して動作します。

両方の関数は 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 のみが指定された場合、dbtable はデフォルトで 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 を使用しても渡せます。

返される値

リモートサーバーに位置するテーブル。

使用法

テーブル関数 remoteremoteSecure は各リクエストごとに接続を再確立するため、代わりに Distributed テーブルを使用することを推奨します。また、ホスト名が設定されている場合、名前が解決され、さまざまなレプリカと作業するときにエラーがカウントされません。多くのクエリを処理する場合は、常に事前に Distributed テーブルを作成し、テーブル関数 remote を使用しないでください。

remote テーブル関数は次のような場合に便利です。

  • 1回限りのデータマイグレーション
  • データの比較、デバッグ、テストのための特定のサーバーへのアクセス、つまり、アドホック接続。
  • さまざまな ClickHouse クラスター間のクエリ(研究目的)。
  • 手動で行われる稀な分散リクエスト。
  • サーバーのセットが毎回再定義される分散リクエスト。

アドレス

複数のアドレスはカンマで区切ることができます。この場合、ClickHouse は分散処理を使用し、すべての指定されたアドレスにクエリを送信します(異なるデータを持つシャードのように)。例:

リモートサーバーからデータを選択

または named collections を使用して:

リモートサーバーのテーブルにデータを挿入

テーブルのシステム間マイグレーション

この例では、サンプルデータセットから1つのテーブルを使用します。データベースは imdb で、テーブルは actors です。

元の ClickHouse システムで

  • ソースデータベースおよびテーブル名(imdb.actors)を確認します。

  • ソースから CREATE TABLE ステートメントを取得します:

応答

目的地の ClickHouse システムで

  • 目的地のデータベースを作成します:

  • ソースから取得した CREATE TABLE ステートメントを使用して目的地を作成します:

ソース展開に戻る

リモートシステムで作成した新しいデータベースとテーブルに挿入します。ホスト、ポート、ユーザー名、パスワード、目的地のデータベース、および目的地のテーブルが必要です。

グロビング

波括弧 { } 内のパターンは、シャードのセットを生成し、レプリカを指定するために使用されます。複数の対の波括弧がある場合、対応するセットの直積が生成されます。

以下のパターンタイプがサポートされています。

  • {a,b,c} - 代替文字列 ab または c のいずれかを表します。このパターンは、最初のシャードアドレスでは a に置き換えられ、2番目のシャードアドレスでは b に置き換えられ、以下同様です。例えば、example0{1,2}-1example01-1example02-1 のアドレスを生成します。
  • {N..M} - 数値の範囲。このパターンは、N から (含む) M までのインデックスが増加するシャードアドレスを生成します。例えば、example0{1..2}-1example01-1 および example02-1 を生成します。
  • {0n..0m} - 先頭ゼロを持つ数値の範囲。このパターンはインデックスの先頭ゼロを保持します。例えば、example{01..03}-1example01-1example02-1 および example03-1 を生成します。
  • {a|b} - | で区切られた任意の数の変種。このパターンはレプリカを指定します。例えば、example01-{1|2} はレプリカ example01-1example01-2 を生成します。

クエリは最初の正常なレプリカに送信されます。ただし、remote の場合、レプリカは現在設定されている load_balancing 設定の順序で繰り返されます。 生成されるアドレスの数は table_function_remote_max_addresses 設定によって制限されています。