質問

私は、新しいWebサイトでSOに似たバッジ機能を実装する方法について考えてきました。バッジの基準を保存する最良の方法は何ですか?

2つのアイデア:

  • すべてのコード
  • 「2番目のシステム」 - バッジとその基準を定義するためのメタアーキテクチャを作成します。いくつかの情報をデータベースに保存し、コードをクエリしてバッジとその基準を把握します。

より良い方法はありますか?

役に立ちましたか?

解決

ルール。

システム内のイベントを作成し、イベントストリームプロセッサ内のルールを使用します。

具体的には、「10の投稿を作成した」バッジがあるとします。すべての投稿に対して「user =:user =:user "where where where where where where count(*)を選択しません。むしろ、各投稿が登場するのを監視し、「カウント」する簡単なルールがあり、ユーザープロファイルにルール状態を保存します。

そうすれば、「10の投稿」は「1,000,000の作られた」投稿と同じくらい安いです。

これにより、システムがはるかに拡張可能になります。

他のヒント

私はこれについてウィルに同意します。

ページに「イベント」を作成して、イベントが発生するたびに、つまり、「イベント」を作成します。ユーザーは投稿を削除し、イベントでイベントモジュールを照会します。たとえば、event_user_delete_postを使用してから、そのイベントを選択して、それに基づいてクエリを作成できます。その後、バッジが授与されるかどうかを判断できます。

これにより、2つのロジックが分離され、モジュラー設計が維持されます。この方法で実装するのは非常に簡単なはずです。

唯一の欠点は、イベントが「キャプチャされていない」場合、ユーザーがバッジ基準を獲得している可能性があるが、まだ報われていない可能性があることです。ただし、これは発生しないでください。私が考えることができる唯一の状況は、データベースが手動で操作されている場合です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top