SPIRAL ver.2 APIでは、複数のレコードを操作する方法として「bulk」と「batch」の2つの方式が提供されています。これらの違いを理解することで、適切なAPIを選択し、効率的なデータ処理を実現できます。
bulkとbatchの基本的な違い
bulk API: 同期処理で即時実行される一括操作
batch API: 非同期処理で依頼を作成し、バックグラウンドで実行される一括操作
batch API: 非同期処理で依頼を作成し、バックグラウンドで実行される一括操作
両方のAPIは複数レコードを一度に操作するという目的は同じですが、処理方法と適用ケースが異なります。
処理方式の違い
特性 | bulk API | batch API |
---|---|---|
処理方式 | 同期処理(リクエスト中に完了) | 非同期処理(バックグラウンドで実行) |
レスポンス | 処理結果を即時返却 | 依頼IDを即時返却、結果は別途取得 |
処理件数 | 最大1,000件 | 大量データ(ファイルサイズ上限あり) |
データ形式 | JSONオブジェクト | CSVまたはTSVファイル |
エラー処理 | 即時エラー通知 | ステータス確認で結果取得 |
bulk APIの特徴と使用例
主な特徴
- 最大1,000件のレコードを一括で操作可能
- JSONフォーマットでデータを送信
- リクエスト完了時に処理結果が即時返却される
- パスワード型フィールド、ファイル型フィールド、ユーザフィールドは対象外
- 処理が完了するまでクライアントは待機状態
APIリクエスト例
コピー{ "records": [ { "(textField)": "text", "(emailField)": "spiral@example.com", "(phoneField)": "+81 80-1111-2222", "(integerField)": "100", "(dateField)": "2020-04-30" }, { "(textField)": "別のテキスト", "(emailField)": "info@example.com", "(phoneField)": "+81 90-3333-4444", "(integerField)": "200", "(dateField)": "2020-05-15" } ] }
レスポンス例
コピー{ "ids": ["1", "2"] }
適したユースケース
- 少量〜中量のデータ処理(数十〜数百件)
- 即時処理結果が必要な場合
- プログラムからの自動処理
- APIを直接呼び出すクライアントアプリケーション
batch APIの特徴と使用例
主な特徴
- 大量データの一括処理に対応(ファイルサイズ上限あり)
- CSVまたはTSVファイルでデータを送信(multipart/form-data形式)
- 非同期処理で依頼IDが即時返却され、処理はバックグラウンドで実行
- 処理状況や結果は別APIで確認可能
- エラー発生時の処理方法を指定可能(rollbackまたはignore)
処理フロー
- CSVまたはTSVファイルを準備(1行目にフィールドの識別名)
- 一括処理依頼を作成(multipart/form-dataでファイルをアップロード)
- 依頼IDを受け取る
- 依頼状況確認APIで処理状況を確認
- 処理完了後、結果を確認
CSVファイル例
コピーname,email,phone,gender,age,birthday,mailGroup,registration,lastAccess 山田 太郎,taro.yamada@example.com,+81 90-1234-5678,1,30,01-01,"1,2",2020-01-01,2020-01-01T00:00:00Z 田中 次郎,jiro.tanaka@example.com,090-1234-5678,1,25,1-1,3,2020-1-1,2020-01-01T12:00:00+09:00 鈴木 花子,hanako.suzuki@example.com,9012345678,2,20,12-20,,2020-12-20,2020-12-30T12:00:00Z
レスポンス例(依頼作成時)
コピー{ "id": "100", "operatedFrom": "ui", "status": "waiting", "errors": [], "onError": "rollback", "fileName": "content.csv", "fileSize": 104857600, "numberRows": 100, "numberRowsSuccessful": 0, "numberRowsFailed": 0, "rowsFailed": "", "createdAt": "2019-08-24T14:15:22Z", "finishedAt": null }
適したユースケース
- 大量データの処理(数百〜数万件)
- 処理に時間がかかる可能性がある場合
- バックグラウンド処理が望ましい場合
- CSVやTSVからのデータインポート
- ユーザーインターフェースからの操作
どちらを選ぶべきか?
bulk APIを選ぶ場合
以下の条件に当てはまる場合は、bulk APIが適しています:
- 処理するレコード数が1,000件以下
- 処理結果をすぐに取得したい
- JSONフォーマットでデータを扱いたい
- プログラムから直接APIを呼び出す
- シンプルな実装で済ませたい
batch APIを選ぶ場合
以下の条件に当てはまる場合は、batch APIが適しています:
- 処理するレコード数が多い(1,000件超)
- 処理に時間がかかっても問題ない
- CSVやTSVファイルからデータをインポートしたい
- ユーザーインターフェースからの操作
- エラー発生時の処理方法を細かく制御したい
注意点
共通の制限事項:
- パスワード型フィールド、ファイル型フィールド、ユーザフィールドは両方のAPIで対象外
- 適切なアプリロールと権限が必要
- ファイルは UTF-8 エンコードが必須
- ファイルサイズは100MB以下
大量データを処理する場合は、batch APIを使用することで、クライアント側の待機時間を短縮し、サーバー負荷を分散させることができます。一方、即時処理が必要な少量データの場合は、bulk APIがシンプルで効率的です。
APIの選択は、データ量、処理タイミング、実装の複雑さなどを考慮して行いましょう。適切なAPIを選択することで、効率的なデータ処理が可能になります。