2016-08-24 17 views
0

私はまだsignalを書いていないが、signalRを使ってスケーラブルなチャットアプリケーションを設計している段階にいる。C#mongodb最後にN個のチャットメッセージを保存

チャットルームのドキュメント(mongodb)を制限して最後の100個のメッセージを保存したいと思います。

これを行うために、私は何とか環状アレイを格納することを考えました。 インデックスを仮定して、スレッドセーフなインデックスを維持することを考えました0 < = Index < 100そして、指定されたインデックスのデータベースの配列を更新します。

は今、私は2 dilemas持っている:

第一に、いずれかのいくつかの専用のテキストファイルやMongoDBの中でこのチャットを維持します。

第2位、スケールアウトしたいと思うと、いくつかのスレーブサーバーでこのインデックスを最新の状態に維持することは有効ではありません。

ここでのパフォーマンスと効率性に関連すると、ユーザーがチャットに参加したときのほとんどのリソースと時間を過ごしたいと思います。

アイデアや提案はありますか?

(私はいけない、私は2つの具体的な質問をし、それらがどのように解決することができるので、その議論にするためのオープンの問題だと思います。)

TIA。

答えて

1

この目的のために特定のサーバーにデータベースを保持し、ユーザーがログオンするときにSELECT TOP 100を使用し、各ユーザーごとにRETRUM> 100をDELETE RETUM> 100にする毎日(または毎週)メンテナンスを実行する必要があります。

限り、この機能を使用するには、リソースを専用にする必要があります。ユーザーが異なるデバイスからログインすると仮定すると、DBは唯一の方法です。ローカルのTXTファイルはデバイス固有のものです。

関連する問題