オンラインチャットを作成しています。
コンテキスト (必要な場合):
これまでのところ、PHP/MySQL と AJAX を使用して作業を行っていましたが、スケーラビリティに関する懸念がある「プル」タイプのアプリケーションで立ち往生しているため、これは健全なソリューションではありません。「プッシュ」メソッドの代替案について読みましたが、選択肢が限られているようで、PHP を除外しているようです。Websockets は、すべてのブラウザーに統合されていれば非常に興味深いオプションになる可能性がありますが、そうではありません (それを実装しているほとんどのブラウザーでは、デフォルトで無効になっているようです)。ロング ポーリングも候補の 1 つですが、同時に開いている接続の数など、Web アプリを停止させる可能性のある他の問題も伴います。
これが、私の意志に反して、実行可能な唯一のオプションがサーバー側の JavaScript を使用することだと思う理由です (node.js + now.js が私の選択です)。
そうは言っても、データベースの使用についても再考する必要があるかもしれません。各ユーザーの保存データを保持し、これらのユーザーを送信されたメッセージにリンクする必要があります。プッシュ システムによって駆動されるチャット エンジンの場合、MySQL は依然として価値のある選択肢でしょうか? NoSQL データ管理について読みましたが、MongoDB は node.js に追加するのに適しているようです。
私の2つの質問:
リアルタイム Web アプリケーションの場合、MySQL (既に知っている) ではなく、NoSQL システム (ゼロから学ぶ必要がある) に移行した方が良い理由はありますか?
MySQL で次のように言いましょう。
- user (user_id_p, username) というテーブルがあります
- メッセージというテーブルがあります (message_id, message, user_id_f)
- ユーザー名「omgtheykilledkenny」に関連付けられたすべてのメッセージを取得する単一のクエリを作成したいと考えています。
十分に単純ですが、MongoDB とそのコレクションの哲学でそれを達成するにはどうすればよいでしょうか?
ご協力ありがとうございました。