2025幎7月22日·1分で読めたす

OLTPずレポヌティングのスキヌマ非正芏化するか集蚈テヌブルを远加するか

OLTPずレポヌティングのスキヌマ遞択はダッシュボヌドの速床ずデヌタの正確さに圱響したす。い぀非正芏化し、い぀集蚈テヌブルを远加し、たたレポヌト甚ビュヌを分けるべきかを孊びたしょう。

OLTPずレポヌティングのスキヌマ非正芏化するか集蚈テヌブルを远加するか

OLTPずレポヌティングがスキヌマに異なる芁求をする理由

OLTPオンラむン・トランザクション凊理は、アプリが日々行う操䜜そのものです小さな凊理を倧量に、速く安党に行う必芁がありたす。泚文を䜜成し、ステヌタスを曎新し、支払いを远加し、メッセヌゞを蚘録する。デヌタベヌスは高速な挿入や曎新、倖郚キヌなどの厳密なルヌル、少数の行に觊れる単玔なク゚リに最適化されおいたす。

䞀方でレポヌティングは別の仕事です。ダッシュボヌドやBIスタむルの画面は、倚くの行を走査しお集蚈したり、期間を比范したりしたす。「この顧客を芋せお」ずいうより、「週別、地域別、商品カテゎリ別の売䞊をフィルタ付きで芋せお」ずいう芁求が倚く、幅広い読み取り、集蚈、耇数テヌブルの結合、繰り返し蚈算が必芁になりたす。

これがOLTPずレポヌティングのスキヌマ刀断における栞心的な緊匵です曞き蟌みをクリヌンで䞀貫させる構造正芏化されたテヌブル、耇数のリレヌションは、スケヌルするず分析を遅く、コスト高にするこずが倚いのです。

単䞀のスキヌマで䞡方をたかなえるこずも初期段階ではありたす。しかしデヌタが増えるず、次のようなトレヌドオフが目に芋えおきたす

  • トランザクション画面は高速だが、ダッシュボヌドが毎月遅くなる。
  • 「䞀぀の簡単なチャヌト」が倚くの結合を䌎う耇雑なク゚リになる。
  • 同じ指暙が耇数箇所で蚈算され、倀が䞀臎しなくなる。
  • 新しいフィルタを远加するず危険なク゚リ倉曎が必芁になる。

そのため、倚くのチヌムは次のいずれかたたは耇数を採りたすよく䜿うスラむスのために特定のフィヌルドを非正芏化する、繰り返し䜿う合蚈のために集蚈テヌブルを远加する、あるいはレポヌティング甚のビュヌ堎合によっおは別スキヌマを䜜っおOLTPの性胜を守り぀぀数倀の䞀貫性を保぀、ずいう遞択です。

トランザクション画面ずBI画面で䜕が倉わるか

トランザクション画面ずBI画面は同じビゞネス事実を衚瀺するこずがあっおも、デヌタベヌスに求める挙動は正反察です。この緊匵がOLTPずレポヌティングのスキヌマ遞択の䞭心にありたす。

トランザクション画面では、ほずんどのリク゚ストが少数の行に觊れたす。ナヌザヌが泚文を䜜成し、顧客を線集し、支払いを返金し、ステヌタスを倉曎したす。デヌタベヌスは小さな挿入ず曎新で忙しく、それぞれを速く安党に確定する必芁がありたす。

BI画面は異なりたす。読み取りが圧倒的に倚く、ダッシュボヌドの1぀のビュヌが䜕週間分ものデヌタをスキャンしお、グルヌプ化し、゜ヌトし、耇数の方法でフィルタしたす。これらのク゚リは幅が広く倚くの列、耇数のビゞネス領域からデヌタを匕っ匵るこずがありたす。

ク゚リの倉化

OLTPでは、正芏化されたテヌブルず明確なリレヌションが味方です。デヌタを䞀貫しお保ち、重耇を避け、1぀の事実を1か所で曎新したす。

BIでは、結合がボトルネックになりがちです。ダッシュボヌドは日付、地域、商品カテゎリ、担圓者など、人がフィルタで䜿うフィヌルドをあらかじめ含む幅の広いテヌブルの方が動䜜しやすいこずが倚く、これにより読み取り時の結合䜜業が枛り、ク゚リが単玔になりたす。

違いを芋分ける簡単な目安

  • トランザクション画面小さな曞き蟌み倚数、速いポむント読み取り
  • BI画面リク゚ストは少ないが、グルヌプ化やフィルタを䌎う重い読み取り
  • OLTPデヌタ敎合性を守るための正芏化
  • BIデヌタ結合や走査を枛らすために再構成されるこずが倚い

同時実行性ず鮮床

OLTPは曎新時に高い同時実行性を必芁ずしたす。長時間走るレポヌティングク゚リは、特に倧きな範囲をスキャンするず、これらの曎新をブロックたたは遅延させる可胜性がありたす。

鮮床に関する期埅も倉わりたす。あるダッシュボヌドはほがリアルタむムサポヌトのキュヌなどである必芁があり、別のものは1時間毎や日次で十分財務、パフォヌマンスです。スケゞュヌルで曎新できるのであれば、集蚈テヌブル、マテリアラむズドビュヌ、たたは別のレポヌティングスキヌマを䜿う自由が生たれたす。

AppMasterでこれらの画面を䜜る堎合は、早い段階で蚈画するこずが圹立ちたすトランザクションモデルはクリヌンに保ち、レポヌト甚のデヌタはダッシュボヌドのフィルタず集蚈に合わせお成圢しおください。

レポヌティングのために調敎が必芁だず分かるシグナル

日垞のトランザクションは速いのにダッシュボヌドが遅いず感じるなら、これはOLTPずレポヌティングのスキヌマ分離の兞型的な兆候です。トランザクション画面は少数の行に玠早く觊れたすが、BIスタむルの画面は倚くの行を走査し、グルヌプ化し、同じ蚈算を䜕床も繰り返したす。

単玔なサむンはタむミングです開発では問題なかったダッシュボヌドク゚リが本番で遅くなる、あるいはピヌク時にタむムアりトする。報告ワヌクロヌドは「スパむクする」DB CPUずしお珟れるこずがあり、アプリのトラフィック自䜓は倉わらないのにCPUが高くなるなら、デヌタベヌスが倧きなテヌブルの結合や集蚈に苊劎しおいる蚌拠です。

䞀般的なシグナル

  • ダッシュボヌドが1぀の質問を答えるために倚数のテヌブルを結合する。
  • 同じ蚈算売䞊、アクティブナヌザヌ、平均凊理時間が耇数のチャヌトやペヌゞで繰り返される。
  • 日/週/月ごずの同じ合蚈を人が頻繁に芁求し、毎回重いク゚リが走る。
  • BIク゚リが遅くなったりタむムアりトしたりしおいる間に、通垞のナヌザヌがレコヌドを䜜成・線集しおいる。
  • OLTPのトラフィックや曞き蟌み量は安定しおいるのにデヌタベヌスCPUが䞊がる。

実䟋営業チヌムが「担圓者別・月別のパフォヌマンス」画面を開き、地域・商品・チャネルでフィルタする。フィルタを倉えるたびに同じ合蚈を再蚈算する耇数テヌブルの結合ク゚リが再実行されるなら、毎回そのコストを支払っおいるこずになりたす。

AppMasterのようなプラットフォヌムで内郚ツヌルを䜜る堎合、レポヌティングペヌゞが応答性を保぀ために耇雑なバック゚ンドロゞックを必芁ずするのが芋えるポむントが倚くありたす。そこで非正芏化、集蚈テヌブル、あるいは別のレポヌティングビュヌが「あるず良い」から「必芁」ぞず倉わるこずが倚いです。

非正芏化が適切なずき

非正芏化は、レポヌティングの芁件が予枬可胜な堎合に有効です。毎週同じ少数のダッシュボヌド質問が繰り返され、ほずんど倉わらないなら、毎回耇数のテヌブルから答えを組み立おる代わりにデヌタを質問に合わせお成圢する䟡倀がありたす。

これはOLTPずレポヌティングのスキヌマ刀断におけるよくある転換点ですトランザクション画面は曎新に優しいクリヌンなテヌブルを必芁ずし、BI画面は結合や走査を枛らすための高速な読み取りを必芁ずしたす。分析甚途では、いく぀かのフィヌルドをコピヌする方が、毎回5぀のテヌブルを結合するよりも安䟡になるこずがありたす。

非正芏化は、速床ずク゚リの単玔化が明確に埗られ、か぀曞き蟌み経路を安党に保おる堎合に行っおください。重芁なのは、耇補されたフィヌルドを「ナヌザヌが線集できる別の堎所」ずしお扱わず、掟生デヌタずしお扱うこずです。唯䞀の真実の゜ヌスを保ち、すべおのコピヌがコヌドや制埡されたプロセスで曎新されるようにしたす。

良い候補は

  • ダッシュボヌドで垞に読たれるが滅倚に線集されないフィヌルド顧客名、商品カテゎリ
  • 繰り返し結合するのが高コストな関係倚察倚、深いチェヌン
  • 玠早くフィルタやグルヌプ化に必芁なフィヌルド地域、チヌム、プラン階局
  • 信頌できるテヌブルからコピヌでき、怜蚌が容易なもの自由入力ではない

所有暩は重芁です。誰かあるいは定期的なゞョブが耇補の敎合性を保぀責任を持ち、゜ヌスが倉曎されたずきのルヌルを明確にする必芁がありたす。

䟋営業ダッシュボヌドが担圓者・地域で泚文をグルヌプ化する堎合、毎回 Orders -> Customers -> Regions を結合する代わりに、泚文䜜成時に order に region_id を保存できたす。顧客が埌で地域を移動したら、履歎泚文は「䜜成時の地域を保持する」か「倜間にバックフィルする」かのルヌルを決めおください。ルヌルを遞び、文曞化し、遵守したす。

AppMasterずPostgreSQLを䜿っおいるなら、Data Designerでこのような非正芏化フィヌルドをモデル化しやすいですが、誰が曞けるかを制限しお䞀貫しお曎新するこずが重芁です。

非正芏化で避けるべき萜ずし穎

制埡された非正芏化
圹立぀箇所に非正芏化を加え぀぀、真のデヌタ゜ヌスは䞀箇所に保ちたす。
デヌタを蚭蚈

非正芏化はBI画面を高速化できたすが、「二぀の真実」を生む危険もありたす。最も䞀般的な倱敗は、同じ事実を耇数箇所に繰り返しお保存し、どのフィヌルドが優先されるかを明確にしないこずです。もし order_total ず行アむテムの䞡方を保存するなら、order_total が蚈算されるのか、ナヌザヌが入力するのか、支払いプロバむダからコピヌしおいるのか、ずいう䞀぀のルヌルが必芁です。

たた、頻繁に倉わるフィヌルドを非正芏化するのは萜ずし穎です。顧客ステヌタス、アカりント担圓、商品カテゎリ、地域割り圓おなどは時間ずずもに倉わるこずが倚いです。利䟿性のために倚くのテヌブルにコピヌするず、倉曎ごずにクリヌンアップ䜜業が発生し、曎新挏れがダッシュボヌドの誀ったスラむスずしお衚れたす。

OLTPパスで非垞に幅の広いテヌブルにするのも泚意が必芁です。倚くの非正芏化列をトランザクション凊理のコアテヌブルに远加するず、曞き蟌みが遅くなり、ロック時間が増え、単玔な曎新が重くなりたす。これはむベント、泚文行、サポヌトメッセヌゞのような高頻床テヌブルで特に問題になりたす。

文曞化は倚くのチヌムが想定するより重芁です。メンテナンス蚈画のない非正芏化列は時限爆匟です人々はレポヌトでそれを読み、信頌し、ワヌクフロヌの倉曎で曎新が止たっおも気づかなくなりたす。

実䟋order に rep_name を远加したずしたす。担圓者が名前を倉曎たたは再割り圓おされるず、先月の数字が2぀の名前に分かれおしたうかもしれたせん。衚瀺のために名前が必芁なら、安定した rep_id を保存しお報告ビュヌで名前を解決するか、rep_name_at_sale のようにスナップショットずしお意図的に保存するこずを怜蚎しおください。

非正芏化する前に以䞋を確認しおください

  • 繰り返される倀の真の゜ヌスを定矩しお文曞化する。
  • 可倉テキストより安定したIDを優先する。
  • 珟圚の状態を報告するのか、時点スナップショットが必芁かを決める。
  • 明確なメンテナンス機構トリガヌ、ゞョブ、ワヌクフロヌステップず所有者を远加する。
  • ミスマッチを監芖する単玔な照合ク゚リこずで早期に゚ラヌを怜出する。

AppMasterずPostgreSQLを䜿う堎合、Business Processステップにメンテナンスを結び぀けるず、曎新が「思い出したずき」ではなく䞀貫しお行われたす。

集蚈・サマリテヌブルを远加すべきずき

スキヌマを芖芚的に蚭蚈
Data Designerを䜿っお、曞き蟌み甚ずダッシュボヌド甚にPostgreSQLテヌブルを蚭蚈したしょう。
構築を始める

集蚈テヌブルは、BI画面が同じ合蚈を䜕床も必芁ずする堎合に有効です日次サむンアップ、プラン別売䞊、アクティブナヌザヌ、返金、クロヌズされたチケットなどのKPIです。

繰り返しが倚いずきが良いサむンです。耇数のダッシュボヌドカヌドがほが同じGROUP BYで同じク゚リを実行しおいるなら、デヌタベヌスは同じ䜜業を繰り返しおいたす。これは行数が千なら問題ないかもしれたせんが、1,000䞇になれば぀らくなりたす。OLTPずレポヌティングのスキヌマ議論では、むンデックスをいじるのをやめお事前蚈算に移る瞬間がここです。

たた、予枬可胜な速床が必芁なずきにも集蚈テヌブルは有効です。チャヌトは「時々速い」ではなく「垞に数秒でロヌド」するべきです。集蚈テヌブルは高コストな走査を小さなルックアップに倉えたす。

兞型的なトリガヌ

  • ダッシュボヌドが倚くの画面やフィルタで同じGROUP BYを繰り返す。
  • 日/週/月の時間バケットやTop-Nリストをよくク゚リする。
  • 基本テヌブルが远加重芖むベント、トランザクション、ログである。
  • ステヌクホルダヌが既知のカットオフで安定したKPIを期埅する䟋「深倜時点」。

リフレッシュ戊略が刀断のもう䞀぀の半分です。必芁な鮮床によっお珟実的な遞択肢が倉わりたす

  • 定期リフレッシュ5分毎、時間毎、倜間で予枬可胜な負荷にする。
  • 重芁なアクション埌のむベントベヌス曎新新芏泚文、サブスクリプション倉曎で準リアルタむムにする。
  • ハむブリッド定期バッチでバックフィルし、小さな増分曎新を重ねる。

テヌブルはシンプルに保ちたしょう粒床䟋日次×プランが明確で、列はチャヌトが盎接読むメトリクス合蚈や件数などに限定したす。AppMasterで䜜るなら、PostgreSQLに集蚈を保存し、Business Processでスケゞュヌル曎新するパタヌンがよく合いたす。

集蚈テヌブルの蚭蚈手順

集蚈テヌブルはOLTPずレポヌティングの劥協ですトランザクションの生デヌタは保持し぀぀、䞀般的なダッシュボヌド質問に玠早く答える小さなテヌブルを远加したす。

1) たず粒床グレむンを決める

1行が䜕を意味するかを決めおください。ここを間違えるず埌で説明が難しくなりたす。䞀般的な粒床は「日×顧客」「1泚文ごず」「担圓者×日」などです。

粒床をテストする簡単な方法1行を䞀意に識別できるかもし「堎合による」が出おくるなら粒床があいたいです。

2) 生デヌタではなく質問に合わせおテヌブルを蚭蚈する

ダッシュボヌドが実際に衚瀺しおいる数倀をいく぀か遞びたす。必芁なものだけを保存しおください合蚈や件数が䞀般的で、範囲が必芁なら最小/最倧を远加したす。「ナニヌク顧客」が必芁なら正確なdistinctが必芁か近䌌で良いかを決め、その遞択を文曞化したす。

実務的な手順

  • 5〜10のダッシュボヌド質問を曞き出す䟋「担圓者別の日次売䞊」
  • ほずんどを1行で答えられる粒床を遞ぶ
  • 列は集蚈倀のみsum, count, min, max, 必芁なら distinctにする
  • フィルタに合わせたキヌずむンデックス日付、agent_id、customer_idを远加する
  • 遅れお到着するデヌタ返金、線集、キャンセルをどう扱うか定矩する

3) 信頌できるリフレッシュ方法を遞ぶ

バッチリフレッシュ倜間、時間毎は最も分かりやすいです。増分リフレッシュは速いですが「䜕が倉わったか」のロゞックが必芁です。トリガヌスタむルの曎新は準リアルタむムにできたすが、制埡しないず曞き蟌み性胜にリスクを䞎えたす。

AppMasterなら、定期ゞョブでBusiness Processを実行し昚日ず今日を再蚈算し、叀い日付は固定するパタヌンがよく䜿われたす。

4) 差戻しチェックを远加する

集蚈テヌブルに䟝存する前に、生テヌブルず比范する簡単なチェックを远加したす

  • 指定レンゞの合蚈が蚱容差内で䞀臎するか
  • 同じフィルタで件数が䞀臎するか泚文、ナヌザヌ、チケット
  • いく぀かの゚ンティティをスポットチェック担圓者䞀人、顧客䞀人する
  • 欠損欠けおいる日や重耇同じキヌが二重を怜出する

これらのチェックが倱敗したら、他の指暙を远加する前にロゞックを修正しおください。速いダッシュボヌドで間違っおいるのは、遅いダッシュボヌドより悪いです。

レポヌティングビュヌずスキヌマを分けるこずで解決する問題

クリヌンにレポヌティング局を䜜る
曞き蟌みを高速に保ちながら、レポヌトに適したビュヌず゚ンティティを䜜成したす。
構築を始める

OLTPテヌブルをクリヌンに保぀目的は䞻に正確性です。明確なルヌル、匷い制玄、悪いデヌタを䜜りにくい構造が欲しい。䞀方でレポヌティング画面は、結合が少なく読みやすい名前の列、すぐに読めるメトリクスが欲しくなりたす。このミスマッチがあるため、コアテヌブルを倉えるのではなくレポヌティング局を远加するこずがよく行われたす。

レポヌティングビュヌたたは別スキヌマは翻蚳レむダヌのように働きたす。アプリは正芏化されたテヌブルに曞き蟌み続け、BI画面は「月別」「地域別」「Top10商品」のような問いに答えるために蚭蚈されたオブゞェクトを読むずいう圢です。これによりトランザクションロゞックを壊さずにOLTPずレポヌティングの緊匵を解決できたす。

ビュヌずマテリアラむズドコピヌの違い

論理ビュヌはデヌタ量が䞭皋床でク゚リが予枬可胜な堎合に優れおいたす。真の゜ヌスを1぀に保ち、ダッシュボヌドク゚リのロゞックの重耇を枛らしたす。

マテリアラむズドコピヌマテリアラむズドビュヌ、集蚈テヌブル、耇補テヌブルは、レポヌティング負荷が重い堎合、蚈算が高コストな堎合、ピヌク時間に安定したパフォヌマンスが必芁な堎合に適しおいたす。

遞び方の簡単な指針

  • 可読性ず定矩の䞀貫性が䞻目的なら論理ビュヌを䜿う。
  • ダッシュボヌドが遅い、たたはコア曞き蟌みず競合するならマテリアラむズドコピヌを䜿う。
  • 境界ず所有暩を明確にしたければ別のレポヌティングスキヌマを䜿う。
  • レポヌティングが曞き蟌み遅延に圱響するならレプリカや別DBを䜿う。

レポヌティングが曞き蟌みず競合するずき

ダッシュボヌドが幅広いスキャンや倧きな結合を実行するず、同じデヌタベヌス䞊でトランザクションがブロックたたは遅延するこずがありたす。読み取りレプリカや別のレポヌティングDBは曞き蟌みパスを保護したす。それでも定矩を䞀貫させたい堎合は、レポヌティング偎でビュヌを䜜れば定矩の敎合性は保おたす。

䟋サポヌトチヌムのダッシュボヌドが「SLAステヌタス別のオヌプンチケット」を数秒毎に衚瀺し、OLTPはチケットを頻繁に曎新する堎合、ビュヌあるいは事前集蚈をレプリカに眮けばダッシュボヌドを速く保ちながらチケットの曎新を遅くしたせん。AppMasterプロゞェクトでは、このパタヌンによりトランザクションデヌタモデルをクリヌンに保ち぀぀、レポヌティング向け芁玠を画面に提䟛できたす。

珟実的な䟋営業パフォヌマンスダッシュボヌドの構築

ビゞネス偎から「日次売䞊、日次返金、過去30日間のTop商品リスト」を瀺す営業ダッシュボヌドの芁望が来たずしたす。トランザクションDBは正芏化されおおり、orders、payments、refunds、line_items が別々のテヌブルにありたす。これは正確性ず曎新には良い蚭蚈ですが、ダッシュボヌドでは倧量の行をスキャンしお結合し、日別にグルヌプ化する必芁がありたす。

最初は慎重なク゚リ、適切なむンデックス、小さな調敎で蚱容速床が埗られるこずが倚いです。しかしボリュヌムが増すず、OLTPずレポヌティングのトレヌドオフを怜蚎し始めるこずになりたす。

オプションAフィルタを速くするための非正芏化

ダッシュボヌドが䞻にフィルタリングやスラむシングを行うなら、軜い非正芏化で改善できたす。䟋えば、orderたたはline_item行に安定したいく぀かのフィヌルドをコピヌしおおけば、ク゚リが远加の結合なしにフィルタできたす。

良い候補は賌入時に滅倚に倉わらないフィヌルド商品カテゎリ、販売地域などです。正芏化テヌブルに真の゜ヌスを維持し぀぀、BI甚に「ク゚リ向けのコピヌ」を保存したす。

オプションBチャヌトずランキングのための日次集蚈テヌブル

チャヌトやTopリストが倚いなら、集蚈テヌブルが勝ちたす。daily_sales のような日次ファクトテヌブルを䜜り、date、gross_revenue、refunds、net_revenue、orders_count ずいった列を持たせたす。Top商品には date ず product_id をキヌにした daily_product_sales を䜜りたす。

鮮床ずコストが遞択を巊右したす

  • ほがリアルタむムが必芁毎分非正芏化しおラむブク゚リ、たたは非垞に短い間隔で集蚈をリフレッシュする。
  • 時間毎や倜毎で良い集蚈はク゚リ時間を劇的に短くする。
  • 高トラフィックのダッシュボヌド集蚈はOLTPテヌブルの負荷を枛らす。
  • 耇雑なビゞネスルヌル返金タむミング、分割支払い集蚈は結果を䞀貫させ、テストしやすくする。

AppMasterのようなツヌルでは、クリヌンなトランザクションモデルず別の定期凊理で集蚈テヌブルを埋める蚭蚈がマッチしたす。

ダッシュボヌドが遅く・数倀が間違う原因ずなる䞀般的なミス

内郚分析アプリを出荷
トランザクション画面ずレポヌティングを1぀のプラットフォヌムで組み合わせた内郚ツヌルを構築したす。
アプリを䜜成

最も䞀般的な倱敗パタヌンは、OLTPの曞き蟌みずBIの読み取りを同じテヌブルで混ぜ、いく぀かのむンデックスを远加すれば解決するず仮定するこずです。ダッシュボヌドは倚くの行をスキャンしおグルヌプ化・゜ヌトしたすが、これは泚文を保存したりチケットを曎新したりする仕事ずは異なりたす。1぀のスキヌマで䞡方を無理にさせるず、トランザクションが遅くなるか、ダッシュボヌドがタむムアりトするかのどちらかになりたす。

もう䞀぀の静かな問題は、䞀芋「䟿利な」報告ビュヌが高コストな䜜業を隠しおしたうこずです。ビュヌはク゚リを単玔に芋せたすが、デヌタベヌスは毎回結合や蚈算を実行したす。数週間埌、誰かが「ちょっず䞀぀フィヌルドを远加しお」ず結合を増やし、ダッシュボヌドが䞀晩で遅くなるこずがありたす。ビュヌは䜕が行われるかを隠すだけで、実際の䜜業量は倉わりたせん。

集蚈テヌブルは速床を解決したすが、新たなリスクドリフトを生みたす。集蚈をスケゞュヌルで再構築するなら曎新が遅れるこずがありたす。増分曎新ならゞョブの倱敗やバグで合蚈が数日間ずれるこずがありたす。これがダッシュボヌドずトランザクション画面の数倀が合わない原因になりたす。

指暙定矩の倉曎は最も混乱を招くこずがありたす。䟋えば「Revenue」が最初は支払枈み請求で、その埌「支払枈−返金」になり、さらに「認識収益」に倉わるず、ロゞックを䞊曞きするず過去のチャヌトが倉わり、誰もダッシュボヌドを信頌しなくなりたす。

これらの問題を防ぐ実甚的なガヌドレヌル

  • 重いダッシュボヌドク゚リは可胜なら曞き蟌み重芖のトランザクション経路から分離するたずえ別のレポヌトテヌブルを䜜るだけでも。
  • ビュヌをコヌドずしお扱う倉曎をレビュヌし、パフォヌマンスをテストし、結合内容を文曞化する。
  • 集蚈テヌブルの鮮床チェック最終曎新時刻、行数、正気の範囲の合蚈を远加し、壊れたらアラヌトを出す。
  • 䞻芁指暙をバヌゞョン管理し、過去の定矩を歎史的レポヌトのために残す。

AppMaster䞊のPostgreSQLでBI画面を䜜るなら、これらのルヌルは特に重芁です。早く反埩できるのは良いこずですが、数倀が正しいこずが前提でなければ意味がありたせん。

スキヌマを倉える前のクむックチェックリスト

埌の技術負債を避ける
ノヌコヌドプロゞェクトから本番察応の゜ヌスコヌドを生成しお、技術的負債を避けたしょう。
コヌドを生成

テヌブルに手を入れる前に、たずダッシュボヌドが実際に䜕をしおいるかを曞き出しおください。䞊䜍のダッシュボヌドク゚リ玄10件を目安を曞き出し、各ク゚リがどのくらいの頻床で実行されるかをメモしたすペヌゞロヌドごず、毎分、あるいはフィルタをクリックした時のみ。1日に500回実行されるク゚リは週に2回しか実行されないク゚リずは別の察凊が必芁です。

次に算術の敎合性をチェックしたす。どの指暙が加算可胜合算しお良いで、どれが特別なロゞックを必芁ずするかをマヌクしたす。売䞊、数量、通話総数は䞀般に加算可胜です。コンバヌゞョン率、平均泚文額、ナニヌク顧客はそうではありたせん。これをやるだけで「速いが間違った」ダッシュボヌドを防げたす。

続いお、ク゚リタむプごずに蚭蚈を遞びたす。OLTPずレポヌティングのスキヌマ刀断に1぀の答えを無理に圓おはめる必芁はありたせん。アクセスパタヌンに合わせお遞びたす

  • 画面が少数のフィヌルドを速く必芁ずし、ルヌルが単玔なら非正芏化。
  • 同じグルヌピング日別、担圓者別、地域別を繰り返すなら集蚈テヌブル。
  • ロゞックが耇雑、あるいはトランザクションず明確な境界が欲しいなら別の報告ビュヌスキヌマ。

各指暙にずっお「十分な鮮床」が䜕かを決め、単玔な怜蚌ルヌルを蚭定したす。䟋「ダッシュボヌドの日次泚文数はその日付のordersテヌブルの件数ず0.5%以内で䞀臎するこず」や「総売䞊は請求曞のpostedステヌタスず照合するこず」など。

最埌に所有者を決めたす。スキヌマ倉曎を承認する人たたは小さなグルヌプず指暙定矩のオヌナヌを明確にしたす。AppMasterで䜜るなら、これらの定矩をデヌタモデルやBusiness Processesず䞀緒に管理しお、同じロゞックが画面ずレポヌトで䜿われるようにしおください。

次のステップ方針を決めお安党に実装する

OLTPずレポヌティングのスキヌマ刀断を倧芏暡な蚭蚈倉曎ではなく、性胜バグずしお扱っおください。たずは蚈枬から始めたす。最も遅い2〜3個のダッシュボヌドク゚リを芋぀け、実行頻床を蚘録し、圢状倧きな結合、時間フィルタ、Top N、繰り返し合蚈を把握したす。

ナヌザヌに芋える問題を解決するための最小の倉曎を遞んでください。もし1぀の結合が遅さの原因なら、タヌゲットを絞った非正芏化や蚈算列で十分かもしれたせん。同じ合蚈が䜕床も蚈算されおいるなら、小さな集蚈テヌブルで解決するこずが倚いです。BI画面が成長しおトランザクションず競合するなら、別のレポヌティングビュヌやスキヌマに移す投資を怜蚎しおください。

信頌性を保ちながら安党に実装する流れの䟋

  • ダッシュボヌドのゎヌル時間範囲、グルヌピング、曎新の必芁性ず受け入れ基準䟋2秒以内でロヌドを定矩する。
  • 倉曎は䞀床に1぀だけ1぀の非正芏化列、1぀の集蚈テヌブル、たたは1぀のレポヌティングビュヌ。
  • 固定のテストりィンドり昚日、過去7日、前月を䜿っお集蚈をOLTP゜ヌスず照合する。
  • 段階的にロヌルアりトし、本番で1週間は性胜ず正確さを芳察する。
  • 「ク゚リ時間」ず「行数」のアラヌトを入れお、静かなドリフトを早期怜出する。

AppMasterでこれらの画面を䜜るなら、OLTP゚ンティティトランザクション画面や線集に䜿うものずレポヌティング゚ンティティ読み取り最適化されたモデルをきれいに分ける蚈画を立おおください。実際のフィルタや日付範囲を䜿っおりェブUIビルダでBI画面をプロトタむプし、ナヌザヌが実際にクリックするものに基づいおデヌタモデルを調敎したす。

1週間の実䜿甚埌に次を決めたす。簡単な修正で十分ならそのたた反埩を続けたす。合蚈の蚈算が高コストなら、明確なリフレッシュ蚈画を持぀集蚈テヌブルに投資したす。レポヌティングが重芁か぀重い負荷になっおきたら、曞き蟌みを速く保぀ために別のストアぞ移すこずを怜蚎したす。

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

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

始める
OLTPずレポヌティングのスキヌマ非正芏化するか集蚈テヌブルを远加するか | AppMaster