更新情報
-
2024年4月8日
一部制限の緩和と「製品としての対策」の予定について情報を更新
平素はSmartDBを活用いただきありがとうございます。
性能に影響する主要な数値情報を公開します。
内容をご確認になり、確認可能な範囲で定義を見直し、回避をご検討ください。
また新たに業務アプリケーションを開発する際は、ご留意の上、実施をお願いします。
背景
昨今、SmartDBでアプリケーション開発をするユーザや実現する業務領域の広がりとともに、実現する業務の複雑さも増す傾向にあります。業務の実現に注力したため、あまりにも定義が複雑となり、後に性能問題に発展するケースや、経年によるデータ量の蓄積により性能問題に発展するケースもあります。
また、開発前に「予め考慮すべき項目を知りたい」と、定義や文書量などが運用に与える影響についてお問い合わせをいただくケースも増えてきました。
こういった背景から、従来はガイドラインという形で利用者に判断を委ねていましたが、サービス運用の観点から、今後は「制限」という形で仕様を見直すことを計画しています。
これに先立ち、性能に影響する主な要素とその数値情報を公開します。
性能に影響する要素と指標値
記載内容の指標値以下となることを目安に設計してください。
なお、記載している項目は特に性能に与える影響が大きいものであり、記載されていないものを際限なく利用しても影響がないということはありませんのでご注意ください。
また、本指標値にはアクセス数の前提がありません。アクセス数に依存せず、性能に影響を与える要素として記載しています。
バインダ定義
バインダ定義の主な要素は、文書の閲覧、登録/編集時の画面表示および保存操作に影響します。
指標値を超えれば超えるほど、性能に与える影響が大きくなります。
- 部品数 ≦ 1,000
※ラベル部品含む。表示処理に影響しフォーム定義の表示性能にも影響する。 - 評価式数 ≦ 100
※再計算対象および取得文書数が多くなることで保存処理性能に影響する。
- lookup/lookups数 ≦ 50 ※アカウント部品のlookup除く
- 参照先文書数 ≦ 5 ※1文書が参照し値取得している文書の数。多段参照の場合は階層数分を文書数とカウントする。
- フィルタ定義数 ≦
100200※主に評価式演算条件などで定義が多いほど保存時に行われる再計算処理に影響する。
本制限はアプリケーションの改修により性能への影響が緩和されたため、上限を見直しました。性能への影響は小さくなりましたが、数が多すぎる場合の管理方法が課題となるため、今後検討していきます。 - フィルタ当たりの条件数 ≦ 5
※部品タイプや演算子によって影響度は変わる。アカウント部品に対するものや、文字列中間一致、含まない/ではない などの条件は特に遅くなる。
プロセス定義
プロセス定義の要素は、プロセス実施時のレスポンスに影響します。
イベントハンドラの書き方により保存処理の回数が増加するため、できるだけ保存回数を少なくするように記載することが望ましく、またその保存処理性能は「バインダ定義」に記載の内容に依存します。
イベントハンドラあたりの<文書代入>タグの数 ≦ 5
※<文書部品代入>を利用する場合は必ず<文書代入>タグを利用してください。
イベントハンドラあたりの<再計算>タグの数 ≦ 1
※再計算タグ1回につき保存処理が行われてしまうため最低限の利用としてください。
本制限はアプリケーションの改修により性能への影響が緩和されたため撤廃しました。
文書数、リスト行数
SmartDBの文書のデータは部品単位で保持しているため、入力/更新する部品数に応じてデータ量が変わってきます。このためデータは 部品数 × 文書数 で考える必要があります。
文書のデータ量が増えるほど文書の検索性能に影響します。文書一覧表示はもちろん、一括操作やジョブ実行などで対象文書を絞り込む処理が行われるため、母数が増えることで処理性能に影響があり、また母数が大きくなるほどサーバリソースが必要になります。(データ量に応じたリソース追加についてはスケールアップオプションとしての公開を計画しています)
文書数は更新対象の部品数や頻度、削除頻度(論理削除だけではなく物理削除まで実行することが望ましい)によって保持データ量が変わります。データ量が大きくなるほど、性能影響があります。
また、フィルタ条件が複雑になるほど性能への影響が大きくなるため、どの条件でも性能保証をする数値ではありません。
-
文書数
入力可能な部品数 × 文書数 ≦ 100,000,000-
例
- 100部品 100万文書
- 200部品 50万文書
- 500部品 20万文書
- 1000部品 10万文書
-
例
-
リスト型部品
部品数 × 行数 × 文書数 ≦ 10,000,000
※複数のリスト型レイアウトブロックがある場合はそれぞれの数を合計する
-
例
- 1ブロック 5部品 20行 10万文書
- 1ブロック 5部品 10行 20万文書
- 1ブロック 10部品 10行 10万文書
- 1ブロック 10部品 50行 2万文書
- 2ブロック 5部品 10行 + 5部品 10行 10万文書
- 2ブロック 5部品 20行 + 10部品 40行 2万文書
-
例
回避策
性能が与える業務影響に応じて以下の観点でバインダ定義の見直しができないかご検討ください。
情報取得のための機能は今後のリリースを予定しています。
- 1バインダに業務を詰め込みすぎていないか(分割できないか)
- 不要な部品やフィルタはないか(開発途中で加えたが不要になったものなど)
- 論理削除された文書が蓄積していないか(定期的に物理削除をしているか)
- イベントハンドラで文書代入タグを利用しているか(文書部品代入タグを利用するなら必須)
製品としての対策
性能影響を緩和するための対策を2023年度の開発計画で予定しています。
機能として制限を導入する具体的な時期については、仕様変更のアナウンスで予め通知します。
また、その際には「現状を計測する仕組み」のリリースも計画しています。
-
対応を計画しているもの(時期未定)
- 管理者向けに性能影響のある定義の見える化と通知の仕組み
- 部品数と文書数の上限緩和と文書アーカイブ機能※
- スケールアップオプション
-
対応中のもの
- 評価式の演算処理の性能改善
-
完了しているもの
- フィルタ条件読込処理の性能改善
- イベントハンドラ実行時の保存処理回数削減と性能改善
- 性能ガイドラインの更新
※文書アーカイブ機能とは、変更しないことを前提として機能制限する文書保管に特化した仕組みを予定しています。
関連情報
下記の関連情報も合わせて参考にしてください。
- 性能ガイドライン :性能に影響する情報をガイドラインとしてまとめています。
- 【仕様変更】ブランチ部品と自動再計算を利用した複数バインダの利用に関する制限の追加 :ダイナミックブランチ機能を利用する上での制限について掲載しています。
SmartDBは今後も進化を続けていくものです。現在の指標値を緩和していくため、製品としての対策を急ぐとともに、安心・安全にご利用いただくための努力を継続してまいります。
以上