monogoDBで自分のデータを設計する方法についてアドバイスが必要です。私はこのアプリを持っています。そこでは、ユーザーはクレジットカードやデビット取引を表示、追加、編集、削除できます。以下はデータの見た目です。 データベースで常に変化するデータを管理する
こちらのバランス欄は動的です。たとえば、誰かが取引日付10-09-2017を追加した場合、その後、残高フィールドのすべての金額は、新しい取引を反映するためにその瞬間に変更する必要があります。今、私はこのバランスフィールドをデータベースに保存しておらず、ユーザーがページをロードしてリロードしたり、トランザクションを編集、削除、追加するたびに計算しています。今は速いですが、将来、ユーザーが多くのトランザクションを処理すると、ユーザーがデータ・テーブルを表示する前にこれらの計算を行う必要があるため、遅くなると考えています。これを行うより効率的な方法はありますか?
また、私はクライアント側で計算を行っています。そのため、負荷はクライアント側のデバイスであり、サーバー側ではありません。私はそれがサーバー側にあり、多くのユーザーがそれを使い始めると、API要求はずっと遅くなり、しばらくしては使えなくなると思います。これは正しい方法ですか?
PS:読者が私の質問を理解するのは難しいですが、私はベストを尽くしました。これをもっと詳しく説明する必要があるのか、それとももっと詳細を追加するべきかを教えてください。
ありがとうございました。あなたが言ったようにページングを実装しても、バランスを取るためには、トランザクションの最初から最後のトランザクションまでバランスを計算する必要があります。トランザクションのリストでCRUD操作が毎回行われます。 –
取引は変更されますか?取引は過去の出来事なので、不変でなければなりません。新しいトランザクションは常に最後に追加されます。だから、いつもそれらを再計算する理由は何ですか? – mbnx
新しいトランザクションを追加する際に日付を指定するオプションを使用します。たとえば、先週取引を追加するのを忘れて、それについて知りたければ、先週の日付を入力して取引を入力することができます。その取引後の残高はすべて変更する必要があります。 –