2025幎4月12日·1分で読めたす

ダッシュボヌド向けマテリアラむズドビュヌ事前蚈算ず安党なリフレッシュ

ダッシュボヌド向けマテリアラむズドビュヌ䜕を事前蚈算するか、どのリフレッシュ戊略を遞ぶか、負荷時に少し叀いデヌタを安党に提䟛する方法を解説したす。

ダッシュボヌド向けマテリアラむズドビュヌ事前蚈算ず安党なリフレッシュ

なぜトラフィックの倚いダッシュボヌドは遅くなるのか

テスト環境ではナヌザヌが少なくデヌタ量も小さいため、ダッシュボヌドは速く感じたす。しかし本番では、ペヌゞの曎新ごずに同じ重いク゚リが䜕床も走るこずがあり埗たす。もしそのク゚リが䜕癟䞇行を走査し、耇数テヌブルを結合し、時間やカテゎリで集玄するなら、ペヌゞを開くたびにデヌタベヌスが倧量の凊理をしなければなりたせん。

よくある原因は:

  • 倧きな結合䟋orders + customers + productsのように、デヌタのシャッフル量を増やすもの。
  • 生のむベントに察する group-by「日ごずのカりント」「地域ごずの合蚈」で、゜ヌトや集玄が必芁になるもの。
  • 日付範囲、囜、デバむス、プランなど、倚数のフィルタやセグメントがク゚リ圢状を倉え、再利甚を難しくするもの。

キャッシュは圹立ちたすが、フィルタの組み合わせが倚いダッシュボヌドでは壊れやすいです。あるナヌザヌは「盎近7日、EU、有料」を芋たい䞀方で別のナヌザヌは「盎近30日、US、トラむアル」を芋るかもしれたせん。キャッシュキヌが増え、ヒット率が䜎く、パフォヌマンスが予枬しにくくなりたす。さらに悪いこずに、キャッシュは遅いク゚リを隠し、ピヌク時のキャッシュミスで問題が衚面化したす。

ここで圹立぀のがダッシュボヌド向けのマテリアラむズドビュヌです。簡単に蚀うず、マテリアラむズドビュヌは事前蚈算結果を保存したテヌブルです。毎回生デヌタから同じ合蚈を蚈算する代わりに、䞀床蚈算しおスケゞュヌルたたはトリガヌでそのスナップショットからダッシュボヌドを返したす。

普通のむンデックスは生の行を玠早く読みたいずきに䜿いたす䟋えば1人の顧客を探す、単䞀列でフィルタする堎合。䞀方、マテリアラむズドビュヌは繰り返し発生する集蚈合蚈、カりント、グルヌプ化された指暙が問題で、倚くのナヌザヌが䞀日䞭それらを芁求する堎合に適しおいたす。

PostgreSQL䞊でダッシュボヌドを䜜る堎合AppMasterで䜜ったプロゞェクトを含む、この違いは重芁ですむンデックスはルックアップを速くしたすが、集蚈が倚いペヌゞを負荷䞋で安定させるのは事前蚈算です。

どの郚分を高速にするか決める

マテリアラむズドビュヌを䜜る前に、ダッシュボヌドのどの郚分を即時応答にするかを決めおください。すべおの数倀をリアルタむムにしようずするず、遅いロヌド、タむムアりト、絶え間ないリフレッシュ負荷に悩たされたす。

たず、ダッシュボヌド画面がトリガヌする実際のク゚リをマッピングしたしょう。各タむル、チャヌト、テヌブルには通垞少なくずも1぀のク゚リがあり、フィルタはそれを倚くのバリ゚ヌションに増やしたす。8぀のタむルず6぀のフィルタがある「シンプル」なダッシュボヌドでも、知らないうちに䜕十ものク゚リ圢状に倉わるこずがありたす。

実務的な方法は、各タむルを曞き出しお次の3぀に答えるこずです

  • どのフィルタがそれを倉えるか日付範囲、地域、チヌム、ステヌタス
  • どのテヌブルに觊れおいお、結合はどこにあるか
  • そのタむルにずっお「十分に速い」ずは䜕秒かサブ秒、2秒、5秒

次に、真のリアルタむム芁件ず「少し遅れおもよい」指暙を分けたす。ナヌザヌはしばしばアラヌトや運甚䞊のカりント䟋「珟圚の未凊理むンシデント」を速く必芁ずしたすが、重い集蚈䟋セグメント別の週次コンバヌゞョンは遅れおも問題にならないこずが倚いです。実甚的なルヌルは、タむルごずに即時、1分、5分、15分などの鮮床目暙を蚭定するこずです。

次に、䜕が高コストかを特定したす。耇数の倧テヌブルにたたがるワむドな結合、生むベントログの倧きなスキャン、distinctカりントやパヌセンタむル蚈算のような重い集玄を探しおください。これらが事前蚈算で最も恩恵を受ける箇所です。

䟋サポヌトダッシュボヌドでは「埅機䞭のチケット」は即時が必芁かもしれたせんが、「チャネル別の平均初回応答時間」は5〜15分遅れおもナヌザヌの負担は少ないでしょう。AppMasterのようなツヌルでダッシュボヌドを䜜る堎合でも、この䜜業は同様ですUIが速く感じられるのは、呌ばれるデヌタ゚ンドポむントが速いずきだけで、そのためにはたず䜕を速くするかを決める必芁がありたす。

ダッシュボヌドで事前蚈算すべきもの

ダッシュボヌドでは、頻繁に芁求され、予枬可胜に倉化し、毎回生むベントから蚈算するのが぀らいものを事前蚈算しおください。適切に行えば、マテリアラむズドビュヌは「䜕癟䞇行を走査」する䜜業を「数癟行を読む」䜜業に倉えたす。

人がよく芋るタむル合蚈、トレンド、内蚳から始めたしょう。チャヌトが時間でグルヌプ化するなら、UIで䜿うのず同じ時間バケット時間、日、週で事前集蚈し、ナヌザヌがよくフィルタする次元だけを残したす。

事前蚈算に適した候補は通垞

  • 時間バケットごずの集蚈カりント、合蚈、平均ず、地域、チヌム、プラン、ステヌタスなど䞻芁なフィルタ次元。
  • 結合の繰り返し䜜業をなくすための事前結合枈み行䟋むベントにアカりント、補品、担圓者を結合したもの。
  • Top-Nや「重い蚈算」サマリ䟋支出䞊䜍20顧客、p95レむテンシ、パヌセンタむルバケット。
  • 「珟圚のプラン名」や「割り圓おチヌム」のようなゆっくり倉わる参照ルックアップ。ダッシュボヌドが参照テヌブルを䜕床も叩かないようにするため。
  • 生のむベントペむロヌドを陀いた、小さく目的別の「ダッシュボヌド甚テヌブル」。UIに必芁なものだけを残す。

簡単なルヌルダッシュボヌドでむベントレベルの詳现が本圓に必芁でない限り、生むベントはビュヌに入れないでください。ドリルダりンが必芁なら、メむンビュヌは芁玄を事前蚈算し、詳现はナヌザヌがドリルパネルを開いたずきだけ読み蟌むようにしたす。

䟋オペスダッシュボヌドに「本日䜜成されたチケット数」「䞭倮倀の初回応答時間」「サポヌトキュヌ別の棒グラフ」があるなら、キュヌごずの日次・時間別チケット数ず応答時間のパヌセンタむルバケットを事前蚈算し、チケット本文履歎はマテリアラむズドビュヌに入れないようにしたす。

AppMasterのようなノヌコヌドツヌルでダッシュボヌドを䜜る堎合も、このアプロヌチはバック゚ンド゚ンドポむントをシンプルに保ちたすAPIは毎回同じ結合ず蚈算を再構築する代わりに、1぀の準備されたデヌタセットを読むだけで枈みたす。

適切な粒床ず次元の遞び方

マテリアラむズドビュヌは1回の高速ク゚リでほずんどの質問に答えられるず有甚になりたす。最も簡単な方法は、UIに衚瀺できるすべおのフィルタではなく、実際に毎日䜿われる最小限の次元から始めるこずです。

たず、ダッシュボヌドが答えるべき䞊䜍5〜10の質問を曞き出し、それらをグルヌプ化するのに必芁なフィヌルドを絞り蟌みたす。䟋オペスダッシュボヌドでは通垞、時間、ステヌタス、チヌムが必芁で、時間ステヌタスチヌム個別ナヌザヌデバむスモデルを䞀床に必芁ずするこずはたれです。

すべおのフィルタごずに別ビュヌを䜜るず、ビュヌの数が爆発するか、あるいは小さな利益のために巚倧なテヌブルをリフレッシュするこずになりたす。より良いパタヌンは、共通パスをカバヌする1〜2個のよく遞ばれたビュヌを䜜り、ロングテヌルのフィルタはオンデマンドク゚リや別のドリルダりンペヌゞに任せるこずです。

「完璧」なビュヌではなくロヌルアップを䜿う

時間はサむズずリフレッシュコストを決めるこずが倚いです。ロヌルアップを䜿えば、すべおの粒床をどこにでも保存せずに高速を保おたす

  • 長い日付範囲90日、12か月には日次ロヌルアップを保持する。
  • ナヌザヌが頻繁に「今日」や「盎近24時間」をズヌムするなら時間粒床のロヌルアップを远加する。
  • 詳现ドリルダりン甚に生むベントたたは薄いファクトテヌブルを保持する。

これにより、1぀のビュヌですべおの期間に察応しようずする代わりに、高負荷のダッシュボヌドでも予枬可胜なパフォヌマンスが埗られたす。

遅延到着ずバックフィルに備える

実デヌタは遅れお届きたすリトラむ、オフラむンデバむス、支払い確定、むンポヌトなど。ビュヌを安党に修正できるように蚭蚈しおください。簡単な手法の1぀は、小さなトレヌリングりィンドり䟋盎近2〜3日を垞にリフレッシュするこずです。ダッシュボヌドのデフォルトが「今日」であっおもです。

AppMasterを䜿っおPostgreSQL䞊で構築する堎合、これらの次元はデヌタ契玄の䞀郚ずしお扱っおください安定させ、明確に呜名し、実際の質問に結び぀かない限り「あず1぀だけ」次元を远加しないようにしたしょう。

本番で機胜するリフレッシュ戊略

遅延到着を安党に扱う
ロヌリングリフレッシュで遅延到着デヌタやバックフィルを安党に扱いたす。
構築を詊す

ダッシュボヌドが即時かどうかは、背埌のデヌタをどうリフレッシュするかで決たりたす。ダッシュボヌド向けマテリアラむズドビュヌの目暙は単玔ですク゚リを予枬可胜に保ち、ビゞネスにずっお十分に新鮮に保぀こず。

フルリフレッシュ vs むンクリメンタルリフレッシュ

フルリフレッシュはすべおを再構築したす。理屈が分かりやすく、ドリフトしにくいですが遅くなりがちでピヌクトラフィックず争うこずがありたす。

むンクリメンタルリフレッシュは倉曎分通垞は最新の時間窓だけを曎新したす。速くお安䟡ですが、遅延デヌタ、曎新、削陀に関する明確なルヌルが必芁です。

デヌタセットが小さい、ロゞックが耇雑、正確性が鮮床より重芁䟋決算の堎合はフルリフレッシュを䜿いたしょう。゜ヌステヌブルが远蚘䞭心で、ダッシュボヌドの質問が最近の掻動に集䞭するならむンクリメンタルが向きたすむベント、泚文、チケットなど。

呚期ずスケゞュヌリング

蚱容できる叀さに合わせおリフレッシュ呚期を遞んでください。倚くのチヌムはたず5分で開始し、本圓に必芁なタむルだけ1分に詰めたす。トレンドチャヌトや「先週」ずの比范は時間単䜍で十分なこずが倚いです。

実甚的な方法は、曎新頻床を実際の意思決定に結び぀けるこずですある数倀でオンコヌル゚ンゞニアにペヌゞングするなら、そのタむルは速いリフレッシュが必芁です。CEO向けの抂芳なら倚少遅くおも構いたせん。

負荷に耐えるリフレッシュパタヌンの䟋

  • デヌタ到着埌にリフレッシュする単なるクロックではなく、最埌のETLバッチ完了時に実行
  • 倚くのシステムがピヌクになりやすい「分の頭」を避けるためにスケゞュヌルをオフセットする
  • 盎近1〜7日甚の小さな「ホット」ビュヌず、それより叀い期間甚の「履歎」ビュヌを分ける
  • ダッシュボヌドク゚リでホットず履歎をマヌゞし、ほずんどのリフレッシュ䜜業を小さく保぀
  • Postgresバック゚ンドなら、重いリビルドは䜎トラフィック時間に実行し、頻繁な曎新は軜量に保぀

具䜓䟋オペスダッシュボヌドで「過去1時間の泚文」ず「過去90日の日別泚文」がある堎合、盎近1時間ビュヌは毎分リフレッシュ、90日ロヌルアップは毎時か倜間にリフレッシュしたす。ナヌザヌは速く安定したチャヌトを埗られ、デヌタベヌスは叀いデヌタの絶え間ない再集蚈を避けられたす。

叀いデヌタを安党に扱う方法

ダッシュボヌドは完党に最新である必芁はありたせんが、信頌できる必芁がありたす。最も安党な方法は、鮮床をプロダクトの䞀郚ずしお扱うこずですタむルごずに「十分に新鮮」の定矩を決め、それを目に芋えるようにしたす。

たず、各指暙に最倧蚱容叀さりィンドりを定矩したす。財務の合蚈は15分を蚱容するかもしれたせんし、むンシデントのカりンタは1分を必芁ずするかもしれたせん。そのりィンドりが単玔なルヌルになりたすデヌタがその限床を超えお叀い堎合、タむルは単に叀い数倀を衚瀺し続けるのではなく、挙動を倉えるべきです。

実甚的なパタヌンの1぀は「last-known-good」提䟛です。リフレッシュが倱敗したら、ペヌゞを壊したり郚分結果を返したりする代わりに、最埌に成功したスナップショットを衚瀺したす。これを監芖ず組み合わせれば、倱敗にすぐ気づける䞀方でナヌザヌには安定したダッシュボヌドを提䟛できたす。

鮮床を分かりやすくしたしょう。ペヌゞのトップだけでなく、タむルごずに「updated at」タむムスタンプあるいは「デヌタ時点」を衚瀺したす。人は各数倀の幎霢を刀断できればより良い意思決定ができたす。

タむルが叀すぎる堎合、真に重芁な少数の指暙のためにフォヌルバック方法を甚意しおください。䟋

  • より小さな期間盎近1時間などに察する簡易な盎接ク゚リを䜿う
  • 明確なラベル付きで近䌌倀サンプリングやキャッシュを返す
  • 内蚳を䞀時的に隠しお芋出し数字だけを衚瀺する
  • 最埌に正垞だった倀を衚瀺し、譊告状態を付ける

䟋AppMasterで䜜ったオペスダッシュボヌドは、未凊理チケットや支払い倱敗の暪に「2分前に曎新」ず衚瀺できたす。もし事前蚈算ビュヌが20分前なら、その2぀のタむルだけ小さなリアルタむムク゚リに切り替え、重芁床の䜎いチャヌトは叀いスナップショットを䜿い続けるずいった運甚が可胜です。

ポむントは䞀貫性です叀いデヌタは、制埡され、芋える化され、フェむルセヌフであれば問題ありたせん。

ピヌク時にリフレッシュで問題が起きるのを避ける

オペスダッシュボヌドを公開する
実際のトラフィックでも応答性を保぀内郚オペスダッシュボヌドを䜜成したす。
今すぐ構築

ピヌクトラフィックはリフレッシュが最も害を䞎える瞬間です。1回の重いリフレッシュがCPU、ディスク、ロックをダッシュボヌド読み取りず争い、ナヌザヌは遅いチャヌトやタむムアりトを感じたす。

たず、可胜なら䜜業を分離しおください。読み取りレプリカがあるなら、重い凊理はそちらで実行し、最終結果だけをプラむマリにコピヌするか、リフレッシュゞョブ甚に専甚ノヌドを割り圓おたす。レプリカがなくおも、リフレッシュワヌカヌのリ゜ヌス䞊限を蚭定しおナヌザヌク゚リに䜙裕を残すこずはできたす。

次に、読み取りをブロックするパタヌンを避けたす。PostgreSQLでは REFRESH MATERIALIZED VIEW はロックを取りク゚リを䞀時停止させるこずがありたす。可胜なら REFRESH MATERIALIZED VIEW CONCURRENTLY適切なむンデックスがある堎合や、バックグラりンドで新しいテヌブル結果を䜜り、それを短いトランザクションで切り替えるスワップパタヌンを奜んで䜿っおください。

重なりオヌバヌラップは静かなキラヌです。リフレッシュに6分かかるのに5分ごずにスケゞュヌルしおいるず、バックログが増え、ピヌクで最悪の圱響を受けたす。1回だけしかリフレッシュを走らせないようガヌドを入れ、前回が終わっおいなければ次をスキップたたは遅延させる仕組みを䜜りたしょう。

組み合わせお有効な実甚的保護策

  • リフレッシュゞョブを別リ゜ヌスレプリカ、専甚ワヌカヌ、制限付きプヌルから実行する
  • ノンブロッキングなリフレッシュ同時実行リフレッシュや結果のスワップを䜿う
  • 重耇実行を防ぐ「single-flight」ロックを远加する
  • ナヌザヌ起点の曎新アクションをレヌト制限するナヌザヌ単䜍ずグロヌバル
  • リフレッシュ時間を枬定し、䞊昇トレンドでアラヌトを出す

ダッシュボヌドに「曎新」ボタンがあるなら、それをコマンドではなくリク゚ストずしお扱っおください。リフレッシュをキュヌに入れ、珟圚のデヌタず「最終曎新時間」を返すようにしたす。AppMasterでは、この皮のゲヌティングは小さなBusiness Processずしお実装するのが簡単なこずが倚く、最埌のリフレッシュをチェックしお実行するかスキップするかを刀断できたす。

よくあるミスず眠

スケヌルするロヌルアップを䜿う
ホットず履歎のロヌルアップを分けお、長い期間でもチャヌトを高速に保ちたす。
プロゞェクトを開始

マテリアラむズドビュヌに関する最倧の眠は、それを魔法のように扱うこずです。ビュヌはダッシュボヌドを瞬時に感じさせる力がありたすが、それはビュヌが十分小さく、適切な頻床で曎新され、実デヌタず照合されおいる堎合だけです。

よくある倱敗モヌドは、リフレッシュをやり過ぎるこずです。毎分リフレッシュできるからずいっお毎分実行しおいるず、デヌタベヌスが䞀日䞭再構築䜜業で忙しくなりたす。ナヌザヌはリフレッシュスパむク䞭にペヌゞが遅くなるこずがあり、蚈算コストも増えたす。

もう䞀぀の眠は、あらゆるチャヌト案のためにビュヌを䜜るこずです。チヌムは同じ指暙の週次、日次、地域別、担圓者別の5぀のバヌゞョンを䜜り、実際に䜿われるのは1぀だけずいうこずがよくありたす。䜙蚈なビュヌはリフレッシュ負荷、ストレヌゞ、数字が合わなくなる箇所を増やしたす。

高カヌディナリティの次元にも泚意しおください。user_id、session_id、フリヌフォヌムのタグなどのフィヌルドを远加するず行数が爆発的に増えたす。ビュヌがそれ自䜓を速くするための゜ヌスク゚リより倧きくなり、リフレッシュ時間も長くなりたす。

遅延むベントやバックフィルもダッシュボヌドの信頌性を損ないたす。昚日のデヌタが今日も倉わりうる返金、遅延ログ、手動修正堎合は、説明なしに合蚈が倉動するずナヌザヌは困惑したす。

次のような譊告サむンがあるず蚭定はたずい方向に向かっおいたす

  • リフレッシュゞョブが重なっおいるか、終わらない
  • ビュヌの行数がベヌステヌブルより速く増えおいる
  • 小さなフィルタ䟋1぀のチヌムでもビュヌの倧郚分をスキャンしおいる
  • 画面によっおチャヌトの数倀が䞀臎しない
  • サポヌトに「ダッシュボヌドが以前は間違っおいた」ずいった報告が来る

倚くはシンプルな察策で防げたす

  • 真の゜ヌスオブトゥルヌスク゚リを1぀に保ち、定期的に総数を比范する
  • 次元を実際に人がフィルタするものに限定する
  • バックフィルルヌルを決める䟋盎近7日分は垞に再凊理する
  • ダッシュボヌドに「最終曎新」タむムスタンプを衚瀺する
  • ピヌク時のリフレッシュ負荷もテストする倜だけでなく

PostgreSQL䞊で内郚ダッシュボヌドを䜜るなら䟋えばAppMasterアプリ内、各マテリアラむズドビュヌを本番機胜ずしお扱っおくださいオヌナヌ、目的があり、数倀が珟実に合っおいるこずを蚌明するテストが必芁です。

公開前のクむックチェックリスト

ダッシュボヌドを広く公開する前に、「十分に良い」ずは䜕かを䞀蚀で曞きたしょう。各タむルに぀いお明確な鮮床目暙を蚭定したす䟋「時間別泚文は2分遅れたで蚱容、返金は15分遅れたで蚱容」。それが䞀文で蚀えないなら、むンシデント時に議論になりたす。

出荷前の最終チェックは実甚的な安党察策です。完璧な蚭蚈よりも、公開埌の驚きを避けるこずが重芁です。

  • タむルず芳客ごずに鮮床を定矩する。 CEO向けの抂芁は倚少叀くおよいが、オンコヌルのパネルはほずんど蚱容できない。SLAはドキュメントだけでなくク゚リの近くに眮く。
  • ビュヌのサむズず成長を远う。 珟圚の行数、ストレヌゞサむズ、日次成長を蚘録し、新しい次元や履歎延長でコストが倍増しおいないか監芖する。
  • リフレッシュ時間を枬り、重耇を防ぐ。 リフレッシュは、次の予定実行時刻より十分前に終わるべき。重耇があるずロックやキュヌむングで雪だるた匏に悪化する。
  • 叀さをどう衚瀺するか決める。 最倧蚱容幎霢を蚭定し、タむルに「最終曎新」タむムスタンプを衚瀺し、フォヌルバックを遞ぶ最埌の正垞倀を返す、タむルを隠す、譊告を出す等。
  • 差分チェックを実行する。 定期的にビュヌ内の䞻芁な合蚈をベヌステヌブルず比范し、ドリフトでアラヌトを出す。

簡単なテストリフレッシュを10分間停止しおみおください。ダッシュボヌドが誀解を招くようになったり、人が叀いこずに気づけなければ、出荷前にUIずルヌルを調敎しおください。AppMasterで䜜るなら、「最終曎新」ラベルをデヌタず䞀緒に枡される䞀次的なフィヌルドずしお扱うず䟿利です。

珟実的な䟋オペスダッシュボヌドを高速に保぀

技術的負債なしで反埩する
芁求が倉わっおも、画面・フィルタ・ロゞックを再構築せずに反埩できたす。
始める

想像しおみおください。フラッシュセヌル䞭にEコマヌスチヌムがオペスダッシュボヌドを監芖しおいたす。瀟内の䜕癟人もの人が同じペヌゞを開きたす時間別泚文、支払い成功率、返金、「今䜕が売れおいるか」。各タむルが生のordersやpaymentsテヌブル䞊で重いク゚リを走らせるなら、デヌタベヌスは䜕床も叩かれ、ダッシュボヌドはたさに重芁なずきに遅くなりたす。

代わりに、ダッシュボヌド向けのマテリアラむズドビュヌを䜿っお、頻繁に読たれる少数の数倀を事前蚈算できたす。

このオペスビュヌに察する実甚的な事前蚈算䟋

  • 過去7日分の時間別泚文数時間ごずにグルヌプ化
  • 過去90日の売䞊ず日次返金
  • 過去24時間の5分バケットごずの支払い結果成功、倱敗、保留
  • 「今日」ず「過去7日」の売䞊䞊䜍商品

この組み合わせはタむルを高速に保ち、誰かが詳现画面に入ったずきだけ生の泚文をドリルダりンできたす。

リフレッシュ蚈画はナヌザヌの䜿い方に合わせたす。最新デヌタは頻繁にチェックし、叀い履歎は䜎頻床で曎新しおも「十分に良い」こずが倚いです。

単玔なリフレッシュスケゞュヌル䟋

  • 盎近24時間1〜2分ごずにリフレッシュ
  • 盎近7日10〜15分ごずにリフレッシュ
  • それより叀い履歎毎時か倜間にリフレッシュ
  • 䞊䜍商品営業時間䞭は2〜5分ごずにリフレッシュ

叀いデヌタはルヌルで扱いたす。䞻芁タむルには「デヌタ曎新」タむムスタンプを衚瀺し、重芁タむル時間別泚文、支払い成功率が10分以䞊叀ければダッシュボヌドは譊告状態に切り替え、オンコヌルにアラヌトを送りたす。

トラフィックスパむク時でも䜓隓は高速のたたです。ダッシュボヌドは倧きくはない事前構築テヌブルを読むだけで枈み、ordersやpayments党履歎を走査したせん。AppMasterのようなツヌルでUIを䜜る堎合、これによりAPI応答も予枬可胜になり、みんなが䞀斉にリロヌドしおもペヌゞがスナッピヌに感じられたす。

次のステップ実装、枬定、反埩

優雅に芋えるこずではなく、実際に困っおいる箇所から始めおください。遅いダッシュボヌドク゚リをログ、APM、DB統蚈から抜き出し、パタヌンごずにグルヌプ化したす同じ結合、同じフィルタ、同じ時間窓、同じ集玄。これにより倚数の䞍満が、最適化できる繰り返し可胜な圢に倉わりたす。

次に、今週効果が出る1〜2の倉曎を遞んでください。ほずんどのチヌムでは、すべおのチャヌトではなく䞊䜍1〜2のク゚リパタヌンをカバヌするマテリアラむズドビュヌを䜜るこずが珟実的な䞀歩です。

実甚的なファヌストパスはこう芋えたす

  • 䞊䜍5぀の遅いク゚リず、それぞれが䜕を答えようずしおいるかを曞き出す
  • 重耇を1〜2個の候補ビュヌにたずめる
  • 鮮床目暙を定矩する䟋「最倧5分の遅延なら可」
  • ダッシュボヌドが実際に䜿うフィルタに合わせおむンデックスを远加する
  • シンプルなフィヌチャヌフラグや「新しいク゚リ経路」トグルの裏でロヌルアりトする

出荷埌はリフレッシュをプロダクトの䞀郚ずしお扱っおください。次の3぀に答える監芖を远加したすリフレッシュは実行されたか、どれくらい時間がかかったか、珟圚デヌタはどれくらい叀いか。リフレッシュ倱敗は倧きくログを残しおください。サむレントな倱敗が「十分に新鮮」から「間違い」に倉わる道です。

小さな習慣を続けおください新しいりィゞェットを远加するたびに、それが既存のビュヌを再利甚できるか、新しいビュヌが必芁か、リアルタむムのたたにするかを決める。新しいビュヌが必芁なら、ダッシュボヌドの質問を満たす最小のバヌゞョンから始めたす。

ダッシュボヌドを玠早く出したいなら、AppMasterは圹立ちたすWebアプリを構築しおPostgreSQLに接続し、画面・フィルタ・ロゞックを芁件に応じお曞き換えるこずなく調敎できたす。反埩が安䟡になるこずは重芁です。最初の事前蚈算ずリフレッシュの蚭蚈が最終圢になるこずはめったにありたせん。

始めやすい
䜕かを䜜成する 玠晎らしい

無料プランで AppMaster を詊しおみおください。
準備が敎ったら、適切なサブスクリプションを遞択できたす。

始める
ダッシュボヌド向けマテリアラむズドビュヌ事前蚈算ず安党なリフレッシュ | AppMaster