1

Web チャットを開発していて、使用する戦略を決定する必要があります。テキスト ファイルまたはデータベースのいずれかを使用して、ユーザーが送受信するデータを保存できます。

はい、人々がそれについて話している他の投稿を見てきましたが、「どちらが速いか」以外にもいくつか質問があります (それも私の質問の 1 つですが、唯一の質問ではありません)。そして、私はその問題をより注意深く指摘します。

まず、多くのユーザーが同じ部屋を共有し、同時に他のすべてのユーザーとチャットします。多くの部屋が同時に開かれます (同じユーザーが同時に 2 つの部屋にいることができます)。

このシステムで出入りするのはメッセージだけではありません。ステータス (不在、オンライン、タイピングなど)、更新 (「話しかけないでください。人生で最悪の日を過ごしました」または「私はここに来たばかりです」)、誰がログアウトしてログインしたか、他のメッセージに返信します、メッセージ自体はそこにあるトラフィックの種類です。どこか。

Javascript が JSON 形式でデータを受信するようにします。

そして、このチャットを多くの人に同時に使ってもらいたい!5 秒または 10 秒ごとにそれぞれからリクエストを送信します。

一部のデータは確実にデータベースに保存されます (ユーザー セッション、その ID、ユーザーの ID、ルームに関する情報、作成日時など) が、動的データ フローをどのように処理するかはまだ決定されていません。

言い換えれば、これまでに開発されたチャットの中で最も複雑なものでなくても、最も単純なものではないということです。

選択した戦略がテキスト ファイルの場合のファイル配布の例: パス: /root/room/1 (部屋 1 へ) ファイル: 1000001、100002、100003 (この部屋のユーザー)

パス: /root/room/2 ファイル: 1000002、100005、100010

...

ユーザー 1000001 からルーム 1 に送信されたメッセージおよびその他の種類の更新 (アクセス、ステータス、個人的な更新など) は、パス /root/room/1/100002 (ユーザー 2) および /root/room/1/100003 (ユーザー 3) など。

各ユーザーはその部屋の自分のファイルを読み取り、読み取り後に消去するため、ファイルを読み取るたびに新しいデータのみがそのファイルに含まれます。

データは JSON 形式で書き込まれるため、それ以上のエンコードは必要ありません。

質問: 1- これらのテキスト ファイルに読み書きされるデータの膨大なトラフィックを考慮すると、データベースを使用してファイルを保存し、クエリ (SELECT FROM メッセージ (および更新から、およびアクセスから) 、およびその他のものから) WHERE id > #number) 5 または 10 秒ごと、各部屋の各ユーザー、またはテキスト ファイルを使用しますか?

2- データベースが最適なオプションである場合、JSON 形式で記述する必要がありますか? そのデータベースでクエリを作成する機能を失いたくないので、JSON と呼ばれるフィールドを使用します。または、ユーザー、部屋、JSON を接続する新しいテーブルを作成し、タプル形式を維持するために他のテーブルに AGAIN を書き込むこともできます。

3-ファイルが最良の選択肢である場合、ファイルに保存されるたびにデータベース内のデータを複製することを検討しますか?

4

0 に答える 0