3

ユーザーがお互いにプライベートな会話ができる Java でシンプルなチャットサーバーを構築しています。これらの会話を (クライアント側ではなく) サーバー レベルで保存して、会話ログ サービスとしてユーザーに一覧表示できるようにしたいと考えています。また、MySQL をソフトウェアのデータベースとして使用しています。

私が探しているのは、これらの会話を保存するための最適化された方法であり、後でリストするための高速な方法でもあります。これまでのところ、2 つの実装について考えてきました。

  1. MySQL データベースを使用し、

    a)会話をテキストとして連続して保存しますが、問題は、一部の会話が非常に巨大(多くの文字)であり、会話全体を保存するのに問題がある可能性があることです

    b)会話のすべての行を連続して保存しますが、この方法では、会話全体をリストしたいときに速度の問題が発生する可能性があります

  2. すべての会話を個別のテキスト ファイルに保存していますが、特にユーザー (クライアント) が非常に高速に書き込み (テキストの送信) を行っている場合は、読み取り/書き込みの問題が発生する可能性があります。

ありがとう

4

2 に答える 2

10

これはアーキテクチャ上の大きな問題です。Facebook や Twitter などの企業は、問題を確実に解決するために多くの時間とお金を費やしてきました。チャットサーバーが単純な場合 (あなたが書いたように)、1.b の方法を使用しますが、抽象化レイヤー (のようなものsaveConversation)を作成しgetConversationます。将来、速度に満足できない場合は、NoSQL データベース (LevelDB など) のような、より効率的な表現を検討してください。今はパフォーマンスについて考えずに、優れた抽象化とプラグ可能なアーキテクチャを備えたプロトタイプを作成してください。

于 2011-12-28T12:18:47.840 に答える