データパイプラインがデータベース、ログシステム、またはメッセージキューを MaxCompute に接続する場合、バッチロードによってレイテンシーが発生し、最新のデータがクエリで利用できなくなります。ニアリアルタイムの増分書き込みは、受信した行を分レベルの間隔で Delta テーブルに継続的に書き込むことでこの問題を解決します。これにより、コミットされたデータはフルロードサイクルを待つことなく、すぐにクエリ可能になります。
書き込みモードの選択
| 書き込みモード | レイテンシー | 利用シーン |
|---|---|---|
| ニアリアルタイムの増分書き込み | 分レベル | 継続的なデータストリーム。低レイテンシーとフォールトトレランスが求められる場合。 |
| フルデータ書き込み | 上位 | 定期的なバッチロード。データセット全体が一度に置き換えられる場合。 |
仕組み
MaxCompute は、オープンソースの Flink コネクタプラグインを提供しています。このプラグインは DataWorks の Data Integration や他のデータインポートツールと統合し、ニアリアルタイムの増分書き込みをサポートします。

上の図は、ビジネスデータの処理フローを示しています。
データフローは次のとおりです。
データインポートツールは、MaxCompute Tunnel サービスの SDK クライアントを使用して、分レベルの間隔で Tunnel サーバーにデータを同時に書き込みます。
Tunnel サーバーは、複数のワーカーノードに書き込みを分散させます。ワーカーノードは、各バケットのデータファイルにデータを並行して書き込みます。
インポートツールがコミットインターフェイスを呼び出すと、その時点までに書き込まれたすべてのデータがアトミックに Delta テーブルにコミットされ、すぐにクエリ可能になります。
同時実行制御
write.bucket.num パラメーターを設定して、書き込みの同時実行数を制御します。バケット数を増やすと、書き込みスループットが向上します。バケットがパフォーマンスに与える影響の詳細については、「テーブルデータ形式」をご参照ください。
サポートされる操作
Tunnel SDK の書き込みインターフェイスは、次の操作をサポートしています
| 操作 | 説明 |
|---|---|
| UPSERT | 新しい行を挿入するか、既存の行を更新します |
| DELETE | Delta テーブルから行を削除します |
コミットセマンティクスとフォールトトレランス
コミットインターフェイスを呼び出すたびに、呼び出し前に書き込まれたすべてのデータがアトミックにコミットされます。コミットされたデータは、読み取り/書き込みのスナップショット分離を満たします。
成功した場合:コミットされたデータはすぐにクエリ可能になり、読み取り/書き込みのスナップショット分離を満たします。
失敗した場合:呼び出しが失敗した場合、データの書き込みをリトライできます。データ破損などの回復不能なエラーが原因でない場合、リトライは成功する可能性があり、データを再書き込みする必要はありません。それ以外の場合は、データを再書き込みして再コミットする必要があります。
| 障害タイプ | 回復アクション |
|---|---|
| 回復不能ではない障害 (データ破損が原因ではない場合など) | コミットを直接リトライします。データを再書き込みする必要はありません。 |
| 回復不能な障害 (データ破損や永続的なエラーなど) | データを再書き込みして再コミットします。 |
次のステップ
テーブルデータ形式 — バケットが書き込みパフォーマンスに与える影響について説明します
Flink コネクタ プラグイン — インクリメンタル書き込み用のオープンソースコネクタをセットアップする