Bulk queries が 最大 4 倍速に
原題: Bulk queries now execute up to 4X faster
- Admin API
- GraphQL
- Bulk Operations
- 性能改善
- 改善
- Shopify CLI
- Mutation
- Data Export
図解 : Bulk queries が最大 4 倍速に(Shopify Admin GraphQL API) Admin GraphQL API / 性能改善 Bulk queries が 最大 4 倍速に Shopify からの大量データのエクスポートが、Bulk query(一括クエリ)の最適化により最大 4 倍高速化。大規模データセットの取り出しが、より短時間・低コストで回せるようになった。 このページの構成 そもそも何が変わったのか(30秒で理解) Bulk operations とは : 仕組み図解 同期 API との違い 今回+直近のアップデート一覧 自分のストアで効果を測る 技術者が押さえるべき5つのポイント 業務に活かせる3つのユースケース 提案で使える1行サマリ 1 そもそも何が変わったのか Shopify からの 大量データのエクスポートが、最大 4 倍速くなった 。 これは Bulk query(一括クエリ)への最適化によるもので、利用側のコード変更は不要 ── 同じ仕組みがそのまま速くなる、という性能改善のお知らせ。 速くなった 大規模データセットのエクスポートが最大 4 倍速で完了。待ち時間が短縮される。 コード変更不要 Bulk query の最適化なので、既存の一括クエリ実装はそのまま速くなる(記事は性能改善として告知)。 インフラ費も削減 同期 API より処理時間が短く、インフラへの支出を抑えられる ── が記事の主張。 2 Bulk operations とは : 仕組み図解 Bulk operations(一括操作)は、Shopify ストアからデータをインポート/エクスポートする最も効率的な方法。リクエストを投げると Shopify 側が非同期でジョブを処理し、完了後に結果ファイルを受け取る流れ。 同期 API はリクエストごとに少しずつデータを取る方式のため、件数が増えるとページネーションを大量に回す必要がある。Bulk operations は「1 ジョブで丸ごと」取り出す方式で、大規模データほど効率が効く。 3 同期 API との違い 観点 同期的な Admin API 利用 Bulk operations 開発スピード ページネーション等の制御を自前で実装 速い 機能をより速く構築できる 大規模データ処理 件数が増えると時間がかかる 短時間 大規模データをより短時間で処理 インフラ支出 長時間ジョブ/多リクエストでコスト増 低コスト インフラへの支出を抑えられる 今回の高速化 — 最大 4× Bulk query のエクスポートが高速化 ※ 数値は記事が挙げる「最大 4 倍」のみ。具体的な対象クエリ種別・適用条件・計測方法は記事に記載なし。 4 今回+直近のアップデート一覧 記事は今回の高速化に加え、Bulk operations 周りの直近の改善も列挙している。 今回 Bulk queries が最大 4× 高速化 大規模データセットのエクスポートが最大 4 倍速に。 直近 一括操作を管理する新クエリ Bulk operations を管理するための新しいクエリが追加(New queries for managing bulk operations)。 直近 全 mutation 対応 & 最大 5 並列 すべての mutation をサポートし、最大 5 件の bulk operation を同時実行可能。 直近 Shopify CLI が対応 Shopify CLI で bulk operations がサポートされた。 5 自分のストアで効果を測る 記事は、Bulk query / mutation を同期 API 呼び出しと比較できる サンプルアプリ を案内している。導入前の比較検証に使える。 1 サンプルアプリを入手 bulk operations sample app で比較環境を用意。 2 同期 API と比較実行 同じデータ量を Bulk と同期で投げて差を見る。 3 所要時間・コストを判断 自ストアの実データで効果を見て採用判断。 イメージ : 同じエクスポート所要時間(記事の「最大 4×」を図示) 従来 所要時間 100% 最適化後 最短 25% ※ あくまで「最大 4 倍」を時間比で表した概念図。実値はデータ量やクエリ内容に依存し、記事に内訳の記載なし。 6 技術者が押さえるべき5つのポイント 1. 「最大 4×」は query の高速化 今回明記されているのは Bulk query (エクスポート)の高速化。mutation の速度については記載なし。 2. 最大 5 並列が使える 直近の改善で bulk operation を同時 5 本まで実行可能。複数オブジェクトの並行エクスポート設計が組める。 3. 全 mutation がサポート対象 直近の改善で全 mutation が bulk 対応。一括インポート系の処理も bulk に寄せられる。 4. Shopify CLI で扱える CLI が bulk operations に対応。ローカル検証やスクリプト化、CI への組み込みがしやすくなった。 5. 新しい管理用クエリ + サンプルアプリで検証できる bulk operation を管理する新クエリが追加され、ジョブの状態把握がしやすくなった。導入判断は bulk operations sample app で同期 API と比較計測してから行うのが安全。具体的な対象 API バージョン・適用条件・上限値は記事に記載なし ── 公式ドキュメントで確認すること。 7 業務に活かせる3つのユースケース USE CASE 1 大量商品・注文データの夜間エクスポートを高速化 課題 BI/データ基盤連携のため、毎晩 商品・注文・在庫を全件エクスポートしているが、件数増でジョブが長時間化し朝のレポートに間に合わないことがある。 打ち手 同期ページネーション実装から Bulk query へ寄せる(or 既存 Bulk をそのまま)。今回の最適化で同じクエリが最大 4× 速くなる。 効果 エクスポート所要時間が短縮され、バッチウィンドウに余裕が生まれる。記事いわく処理時間とインフラ支出の削減につながる。 技術メモ 導入前に sample app で同期 vs Bulk を実データ比較。対象クエリ種別・上限は公式ドキュメントで確認(記事に詳細記載なし)。 USE CASE 2 複数オブジェクトの並行エクスポートでパイプライン全体を短縮 課題 商品・顧客・注文を順番に 1 本ずつエクスポートしており、合計の待ち時間が長い。 打ち手 直近改善の「最大 5 並列」を活用し、オブジェクトごとに bulk operation を同時起動。各ジョブの状態は新しい管理用クエリで監視。 効果 逐次から並行へ切り替え、データ取得パイプライン全体の wall-clock を短縮。1 本あたりも今回の高速化が効く。 技術メモ 同時実行は最大 5 本まで。超過分はキュー設計が必要。並列数の正確な制約は公式ドキュメントで確認。 USE CASE 3 CLI で bulk 処理を CI / 運用スクリプトに組み込む 課題 移行・初期投入・定期同期のための一括データ操作を、その都度手動 GraphQL で叩いていて再現性・自動化が弱い。 打ち手 Shopify CLI の bulk operations 対応を使い、エクスポート/インポート手順をスクリプト化。全 mutation 対応なので投入系も bulk に統一。 効果 手順がコード化され、CI や運用 runbook に組み込める。属人化の解消と、最適化済み Bulk による高速・低コスト化を同時に得る。 技術メモ CLI の対象コマンド・認証要件は公式ドキュメントを参照。本番投入系 mutation は必ず検証ストアで先に確認する。 8 提案で使える1行サマリ 「Shopify の Bulk query(一括エクスポート)が 最大 4 倍速 に。 全 mutation 対応・最大 5 並列・CLI 対応とあわせ、 大規模データの取り回しを高速・低コスト・自動化しやすく するアップデート。 既存 Bulk 実装はコード変更なしで恩恵、導入判断はサンプルアプリで同期 API と比較してから。」 source : shopify.dev/changelog/bulk-queries-now-execute-faster