本ページでは、 Realtime Compute に、リレーショナルデータベースサービス (RDS) または Distributed Relational Database Service (DRDS) の結果テーブルを作成する方法について説明します。 また、RDS または DRDS フィールドタイプと Realtime Compute フィールドタイプ間のマッピングについても説明します。

RDS

ApsaraDB for RDS は、オートスケーリング機能をサポートしている、安定性と信頼性のあるオンラインデータベースサービスです。 RDS は、Apsara 分散ファイルシステムと高性能ストレージに基づいて、MySQL、SQL Server、PostgreSQL、Postgres Plus Advanced Server (Oracleとの高度な互換性を持つ PPAS) などのさまざまなエンジンをサポートしています。 データベースの O&M 問題を解決するために、耐障害性、データバックアップ、データリカバリ、モニタリング、データ移行などの多様な要件に対応する包括的なソリューションセットを提供します。

RDS および DRDS プラグインは同じ WITH パラメーターを使用します。 次の WITH パラメーターの説明は、両方のプラグインに共通です。 RDS または DRDS 結果テーブルを使用する場合は、テーブルが RDS また はDRDS に実在することを確認してください。

DDL の定義

Realtime Compute は、結果テーブルとして RDS または DRDS テーブルの作成をサポートしています。 現在、MySQL テーブルのみがサポートされています。 サンプルコードは次のとおりです。

create table rds_output(
 id int,
 len int,
 content VARCHAR,
 primary key(id,len)
) with (
 type='rds',
 url='yourDatabaseURL',
 tableName='yourDatabaseTable',
 userName='yourDatabaseUserName',
 password='yourDatabasePassword'
);
  • Realtime Compute では、RDS または DRDS 結果テーブルにデータを書き込むことができます。 書き込むためには、Realtime Compute が結果データの各行に基づいて SQL ステートメントを連結し、宛先データベースに対して SQL ステートメントを実行します。 Realtime Compute が一度に複数のデータレコードを書き込めるようにしたい場合は、 ? rewriteBatchedStatements = true を URL の最後に加えます。 加えないと性能が低下します。
  • RDS for MySQL は自動インクリメントの主キーをサポートしています。 Realtime Compute に、データの書き込み中の自動インクリメントの主キーをサポートさせる場合は、DDL ステートメントの自動インクリメントフィールドを宣言しないようにします。 たとえば、ID は自動インクリメントフィールドです。 このフィールドが Realtime Compute DDL で宣言されていない場合、データの行がデータベースに書き込まれると、データベースは ID フィールドを自動的に追加します。
  • RDS の接続には、データストレージの登録方法の使用を推奨します。 詳細については、「ApsaraDB for RDS リソースの登録」をご参照ください。

WITH パラメーター

名称 説明 注釈
url データベースの接続アドレス。 アドレスについての詳細は、「」をご参照ください。
tableName テーブル名。 なし
userName ログインユーザー名。 なし
password ログインパスワード。 なし
maxRetryTimes 挿入再試行の最大回数。 オプション。 デフォルト値: 3。
batchSize 一度に書き込めるレコードの数。 オプション。 デフォルト値: 50。
bufferSize 重複排除後のバッファーサイズ。 このパラメーターは、主キーが指定されている場合にのみ有効です。 オプション。 デフォルト値: 1 この値は、入力データレコードが 1 つになると出力が開始されることを示します。 V1.4.1 では、デフォルト値が 1000 に変更されています。
flushIntervalMs 書き込みのタイムアウト期間 単位: ミリ秒。 オプション。 デフォルト値 : 5000 この値は、5000 ミリ秒(5 秒) 以内にデータが書き込まれなかった場合、バッファーされたすべてのデータが書き込まれることを示します。
excludeUpdateColumns Realtime Compute が同じキー値でデータレコードを更新するときに除外される列。 オプション。 このパラメーターはデフォルトで無記入となります。 主キーフィールドはデフォルトで除外されます。
ignoreDelete 削除操作を無視するかどうか。 デフォルト値: false 。
partitionBy Realtime Compute は、シンクオペレーターにデータを書き込む前に、パラメーター値に基づいてハッシュ演算を実行します。 その後、データは対応するハッシュ演算子に流れます。 オプション。 このパラメーターはデフォルトで無記入となります。

フィールドタイプマッピング

RDS フィールドタイプ Realtime Compute フィールドタイプ
TEXT VARCHAR
BYTE VARCHAR
INTEGER INT
LONG BIGINT
DOUBLE DOUBLE
DATE VARCHAR
DATETIME VARCHAR
TIMESTAMP VARCHAR
TIME VARCHAR
YEAR VARCHAR
FLOAT FLOAT
DECIMAL DECIMAL
CHAR VARCHAR

JDBC 接続パラメーター

名称 説明 デフォルト値 必要な最低バージョン
useUnicode Unicode 文字セットを使用するかどうか。 characterEncoding パラメーターが gb2312 または gbk に設定されている場合、このパラメーターは true に設定する必要があります。 false 1.1g
characterEncoding useUnicode が true に設定されている場合に使用される文字エンコード。 たとえば、このパラメーターは gb2312、または gbk に設定できます。 false 1.1g
autoReconnect データベース接続が予期せず中断されたときに、自動的に再接続するかどうか。 false 1.1
autoReconnectForPools データベース接続プールに適用可能な再接続ポリシーを使用するかどうか。 false 3.1.3
failOverReadOnly データベースが自動的に再接続された後に、接続を読み取り専用に設定するかどうか。 true 3.0.12
maxReconnects autoReconnect が true に設定されている場合に可能な再接続再試行の最大回数。 3 1.1
initialTimeout autoReconnect が true に設定されている場合の再接続再試行の間隔。 単位: 秒。 2 1.1
connectTimeout データベースサーバーとのソケット接続を確立するためのタイムアウト期間。 単位: ミリ秒。 値が 0 の場合はタイムアウトがないことを示します。これは JDK V1.4 以降に適用されます。 0 3.0.1
socketTimeout ソケット操作 (読み取りまたは書き込み) のタイムアウト期間。 単位: ミリ秒。 値が 0 の場合はタイムアウトがないことを示します。 0 3.0.1

よくある質問

  • Q: Realtime Compute の結果データが RDS テーブルに書き込まれると、新しいレコードが生成されますか、それとも主キーによってデータが更新されますか。

    A: 主キーが DDL で定義されている場合、 insert into on duplicate key update ステートメントは、レコードを更新します。 つまり、データレコードに関しては、主キーがテーブルに存在しない場合にデータレコードがテーブルに挿入されます。 主キーが存在する場合、データレコードが更新されます。 主キーが DDL で宣言されていない場合、 insert into ステートメントは、データレコードをテーブルに追加します。

  • Q: RDS テーブルの固有インデックスを使用して GROUP BY 操作を実行するときに注意することはありますか。

    A: RDS テーブルには自動インクリメント主キーが 1 つしかありません。この主キーは、Realtime Compute ジョブで主キーとして宣言できません。 RDS テーブルの固有インデックスを使用して GROUP BY を実行する場合は、ジョブの主キーに対してこれらの固有インデックスを宣言します。