2

プッシャーサービス(http://pusher.com)を使用してチャットウィジェットを作成しています。一定期間後にアクセスできるように、ユーザーから送信されたすべてのメッセージをデータベースに保存する必要があります。私はmysqlデータベースを使用しており、チャットメッセージイベントがトリガーされるたびに新しい挿入を作成することが私の頭に浮かぶ唯一の方法ですが、それが本来あるべき速度ではないのではないかと心配しています。

この場合、チャットメッセージを保存するために、どのデータベースと手法を使用しますか?

4

3 に答える 3

9

採用できるアプローチの1つは、MySQLを使用することですINSERT DELAYED。これを行うと、クライアントは挿入が完了するのを待つ必要がありません。むしろ、サーバーは挿入をキューに入れ、可能な限りそれらを実行します。したがって、チャットを処理するプロセス/スレッドはそれらを待つ必要はありません。ただし、データベースにはチャット履歴が保存されており、取得することができます。プッシャーを使用して「ライブ」メッセージが届いたときに共有しているため、チャット履歴にすぐにアクセスする必要がない場合は、これでうまくいく可能性があります。

于 2012-09-05T18:53:58.737 に答える
2

何千人もの人々を含むチャットシステムを作成することを計画していない限り、適切に構造化されたmysqlソリューションがこれを問題なく処理できると確信しています。私が働いている場所では、phpとmysqlに基づくイントラネットチャットソリューションがあり、問題なく実行されています(100人までの中規模のチームの場合)。

私が持っている1つの提案は、mysqlのインデックス作成を確実に理解することです。チャットシステムがインデックスを最大限に活用していることを確認してください。この方法でパフォーマンスを大幅に向上させることができます。

並行性が本当に問題になっている場合、多くの人がnode.jsで良い経験をしていると聞きます。しかし、あなたがphpとmysqlに慣れているなら、私は最初にそのように行くと言うでしょう。

ハッピーコーディング!

于 2012-09-05T18:45:59.120 に答える
-1

(これが古いことは知っていますが、)あなたが話していることを行う興味深いデモがここにあります(Railsではありますが)。可能なスキーマが含まれています。 https://github.com/dipth/pusher_demo

于 2015-04-14T16:01:37.963 に答える