アカウントに出入りする大量のトランザクションがあるとします。新しい取引が発生するたびに、残高を再計算してユーザーに表示する必要があります。新しいトランザクションが発生するたびに合計残高を再計算する (すべてのトランザクションの行を合計する) のは非効率的です (トランザクションが多すぎると想像してください)。
明らかに、残高を増減できます。ただし、アクションがアトミックに発生することが保証されていないとしましょう。たとえば、トランザクションの保存とインクリメントの間に、データベースが再起動してインクリメントが失われる可能性があります。
これを解決するためにどのアルゴリズム/アプローチが存在するのか疑問に思っています。あなたができるようです:
- インクリメント/デクリメント方式を実行し、定期的に修正します (定期的には正しくないバランスが表示されますが、あまり良くありません)。
- map/reduce を実行します。ただし、新しいトランザクションが頻繁に発生する場合、これはやり過ぎです (ごく一部しか変更されていないにもかかわらず、古いデータの 100% を超えています)。
- ある種のマーカーを経時的に保存するため、ある期間を一度合計すると、後で再利用できます。おそらく何らかの階層で、1日の合計、週の合計、月、年などを合計できるため、常に高速です現在の残高を取得する (今日の取引と過去の数日、数週間、数か月、数年など)
これは以前に発明されたようです。何を検索すればよいですか?ありがとう!