新しいDataStore V2 APIへの移行について
sakura.ioのサービス開始時から提供していたデータストア機能がバージョンアップし、「DataStore API」はリニューアルして「DataStore V2 API」となります。旧バージョンのDataStore APIは段階的に廃止されるので、利用されている方はお手数ですがソフトウェアの書き換えを行って頂く必要があります。料金形態・API仕様にも大きな変更がありますので、この記事で紹介させていただきます。
変更の概要
新しい「DataStore V2 API」は、以下の部分を主に変更しています。
- JSON一括ダウンロード
- CSVダウンロード機能
- メッセージ閲覧対象
- API変更
- クエリ速度改善
- 料金
JSON一括ダウンロード機能の追加
ブラウザ・curlコマンド等で以下のようなURLにアクセスすると、ZIPファイルがダウンロード出来ます。ZIPファイルを解凍すると1つのテキストファイルが保存されており、1行につき1つのJSONメッセージが記述されていることが確認できます。
https://api.sakura.io/datastore/v2/messages-bulk?limit=100&encoding=FILE_ZIP&token=********-****-****-****-************
(トークン部分を自身のものに置き換えてアクセスを行ってください)
この機能の追加により、低頻度なバッチ処理・バックアップ用途にご利用いただきやすくなりました。
ZIPの他に、gzipなどでの取得も可能です。詳しくは、こちらのAPIリファレンスをご覧ください。 DataStore V2 APIリファレンス
CSVダウンロード機能
「DataStore V2 API」では、コントロールパネル上でCSVをダウンロードする機能が追加されました。JSON等のメッセージを扱うのが難しかったExcel等のソフトでも読み込みしやすくなりました。
サービス連携設定を追加した後に、サービス連携設定の詳細画面に移動し、ボタンをクリックすることで本機能が利用可能です。対象のモジュール・期間・件数・チャンネル番号等を指定してダウンロードが可能となっています。速度は環境や負荷状況に大きく依存しますが、10万件あたり10~20秒程度で取得が可能であることを確認しています。
なお、この機能は古いWebブラウザ(Internet Explorer等)では利用できませんのでご了承ください。
メッセージ閲覧対象の変更
旧機能の「DataStore API」は、新しく有償プランを契約した時点で、過去のメッセージも全て閲覧が可能でした。また、モジュールの譲渡・モジュールの所属プロジェクトの変更を行うと、過去のメッセージも全て新しい所有者・プロジェクトに移動していました。
新機能の「DataStore V2 API」では、プランの契約を行った時点からメッセージの保存が始まるように変更されました。また、モジュールの譲渡・モジュールの所属プロジェクトの変更を行ってもそれまでのメッセージは移動せず、メッセージがsakura.ioに届いた時点での参加プロジェクトに保存されます。
この変更によって、製造のフェーズによってモジュールの所有者が変わるようなケースでの使い勝手が良くなりました。例えば、製品の製造・テスト・エンドユーザで会員ID/所属プロジェクトが異なるような場合は、それぞれ過去のメッセージが見えることが無くより直感的になりました。
新しい仕様では、プロジェクトを削除すると過去のメッセージも削除され閲覧できなくなりますので十分にご注意ください。
APIの変更
利用状況・理解しやすさ等を考え、以下のように複数の仕様が変更されています。
パラメータの変更
新機能の「DataStore V2 API」では、今までと同様にメッセージの単位で取得する /messages
チャンネルの単位で取得する /channels
の2つのAPIを用意しています。ですが、パラメータの意味・指定する値が変更されています。
機能概要 | 対象API | V1パラメータ名 | V2パラメータ名 | 変更点 |
---|---|---|---|---|
認証・プロジェクトの選択 | 全て | token | token | 変更なし |
対象モジュールの指定 | 全て | module | module | V2では1つのみ指定可能。指定しなかった場合はプロジェクト内の全てのモジュールを対象に。 |
対象のメッセージの種別の指定 | /messages | type | – | V2では廃止。 |
対象のチャンネル番号の指定 | /channels | channel | – | V2では1つのみ指定可能。 |
1リクエストで取得する最大数 | 全て | size | limit | 名称変更。 |
メッセージのソート順の指定 | 全て | order | order | V2では大文字の ASC DESC のみ指定可能。 |
取得メッセージの開始日時の指定 | 全て | after | after | V2では厳密なRFC3339形式 2020-03-02T12:00:00.000+09:00 のみ受付。 |
取得メッセージの終了日時の指定 | 全て | before | before | V2では厳密なRFC3339形式 2020-03-02T12:00:00.000+09:00 のみ受付。 |
複数回に分けたリクエストに利用 | /messages,/channels | cursor | cursor | 変更なし |
レスポンスの変更
旧機能「DataStore API」で提供されていた meta.count
meta.match
フィールドは廃止されました。新機能「DataStore V2 API」では、新たに meta.has_next
フィールドを追加しました。カーソルを使用して再帰的に取得する際、全てのメッセージの取得が完了したことは meta.has_next
のBoolean値が false
で有ることを検証してください。
クエリ速度の改善
旧機能の「DataStore API」は、内部システムの都合で若干クエリ速度に時間がかかっていました。大量にメッセージを取得する際は、大きなボトルネックになることが有りました。新機能の「DataStore V2 API」では、機能を絞ってサービスを提供する事で大幅にクエリ時間が短くなりました。
– | 旧 DataStore API | 新 DataStore V2 API |
---|---|---|
1回あたりの処理時間 | 745.15ms | 312.60ms |
※最新1件のメッセージ取得を繰り返して20回行った際の平均レスポンス時間です。他のお客様からのアクセス状況・内部システムの負荷・お客様のネットワーク環境等、様々な要因でばらつきがありますので参考値としてお考えください。
料金の変更
旧機能「DataStore API」では、閲覧期間に応じて「フリー」「ライト」「スタンダード」が提供されていました。新機能「DataStore V2 API」ではよりきめ細かく閲覧期間の設定が可能になりました。
なお、DataStore V2 APIは2020年8月11日までβ版として提供します。期間中は上記のプランを全て無償で提供します。
メッセージはプロジェクトごとのメッセージ保存上限数に達するか、保存期間を経過すると旧いメッセージから順次削除される可能性があります。
移行スケジュール
本日から新機能「DataStore V2 API」はβ提供として無償でご利用いただけます。旧機能「DataStore API」はサービス終了まで無償利用が可能となります。
日付 | 項目 |
---|---|
2020年5月12日 | 旧機能DataStore APIの無償化・新機能DataStore V2 APIの無償提供開始 |
2020年8月11日 | 新機能DataStore V2 APIの課金開始 |
2022年5月30日 | 旧機能DataStore APIの提供を終了 |
最後に
今回は新しい機能の紹介をさせていただきました。
今後も既存機能の改善などを行っていく予定です。
今後とも、sakura.io をよろしくお願いします。