レコードに正味量が含まれている場合は、特定の時点で量を見つけることが確実に早くなります。次に、数量を探したいときは、最新のレコードまたは適切な日時のレコードを1つだけ読み、数量を選択します。デルタを格納していた場合は、すべてゼロ日から合計しなければなりません。
一方、複数の独立した変更元がある場合、および/または変更をキャンセルまたは元に戻すことが可能な場合は、「現在の金額」を保存することが問題になります。トランザクションが異常に到着した場合、または古いトランザクションが変更または削除された場合はどうなりますか?
古典的な例は銀行口座残高です。預金と引き出しは、予測不可能な時期に複数の出所から来る可能性があります。トランザクションを順序どおりに送信しないことがよくあります。古い取引がキャンセルされることがあります。
したがって、たとえば:
1月1日:アカウントが$ 1,000で開かれました。残高= 1,000ドル。
1月2日:$ 300の寄託。残高= 1300ドル。
1月3日:$ 200の引落。バランス= $ 1100。
1月4日:1月2日のデポジットバウンスに使用されていることを確認します。リバースデポジット。 1月2日の残高は1000ドルに変更されます。しかし、1月3日の残高はどうですか?それを$ 800に更新する必要があります。
現実には、バウンスされたチェック後に一連のトランザクションが発生している可能性があります。すべてのレコードに最終残高を保存すると、それらのレコードのすべてを更新する必要があります。
トランザクションの有効期限は、システムに入力された日付とは異なる場合があります。したがって、既存のトランザクションの前にシーケンス内にトランザクションを挿入しなければならないことが日常的に分かり、その後のすべてのトランザクションを更新する必要があります。
おそらくあなたのレモネードスタンドは、別の種類のプロセスです。ボウルに水を加えると、「4リットルを追加するのではなく、十分な水を加えて「完全な」マークにする」と言えるかもしれません。そうであれば、ほとんどの場合、ユーザーが知っていてコンピューターに入力するものは、デルタではなく新しい合計数です - それで、入力するものは合計数量です。デルタ、あなたはそれを計算します。しかし、ユーザーがデルタを知っている場合は、デルタを入力する必要がありますし、デルタを運び、数量を計算する必要があります。
はい、店舗内のすべてがデルタである場合、正味量を計算するには、ゼロ日以降にすべてのレコードを合計する必要があるという問題があります。レコードの数が適度であれば、これは完全に受け入れられるかもしれません。もしそうでなければ、私がときどき行うことは、いくつかの日付の時点で、合計レコードを「合計レコード」にしておくことです。現在の数量を取得するには、最新の合計レコードを見つけて、その日以降の取引金額を加算します。コードには苦労しますが、パフォーマンスは飛躍的に向上します。
出典
2016-10-05 17:22:18
Jay
あなたの質問はあまり明確ではありません。詳細は教えてください – TheGameiswar
データの完全なビジネスコンテキストを説明しない限り、「合計」や「ミックス」や「素材」などの単語は意味を持ちません。 –
申し訳ありません、私はレモネードを作っていると仮定して、私は3つの成分、水砂糖、レモン汁を持っていると仮定します。私のミックスはレモネードだろう。どのような成分が使用されたかを追跡する最善の方法を知りたいと思います。私はレモネードが1日に何回も作ることができると仮定しなければならないし、戻ってくる必要はない。水は1以上のミックスになる可能性があります。私が話す「トータライザ」は、ミックス中に使用された材料の量を合計し、ミックスが変更されたとき、またはマシンが停止したときにリセットされます。だから、私は必ずしも最高の水の合計を探すことはできません。なぜなら、合計はその日に何度もリセットされるからです – Neal