我正在创建一个在线聊天。
上下文(如果需要):
到目前为止,我一直在使用 PHP/MySQL 和 AJAX 来完成这项工作,但这不是一个健康的解决方案,因为我坚持使用“拉式”类型的应用程序,担心可伸缩性。我阅读了有关“推送”方法替代方案的信息,看来我的选择是有限的并且排除了 PHP。如果 Websockets 集成在每个浏览器中,它可能是一个非常有趣的选项,但事实并非如此(似乎对于大多数实现它的人来说,它默认是禁用的)。长轮询也将是一个候选者,但它涉及其他问题,例如并发打开连接的数量也可能会杀死您的 Web 应用程序。
这就是为什么违背我的意愿,我认为我唯一可行的选择是使用服务器端 javascript(node.js + now.js 将是我的选择)。
这就是说,我可能也需要重新考虑数据库的使用。我需要保留每个用户的存储数据并将这些用户链接到他们提交的消息。如果是推送系统驱动的聊天引擎,那么 MySQL 是否仍然是一个有价值的选择?我阅读了有关 NoSQL 数据管理的内容,似乎 MongoDB 将成为 node.js 的一个很好的补充。
我的两个问题:
如果是实时网络应用程序,我是否有理由更好地迁移到 NoSQL 系统(我需要从头开始学习)而不是 MySQL(我已经知道)?
假设在 MySQL 中:
- 我有一个名为 user (user_id_p, username) 的表
- 我有一个名为messages(message_id,message,user_id_f)的表
- 我想进行一次查询以获取与用户名“omgtheykilledkenny”相关的所有消息。
很简单,但是我怎样才能用 MongoDB 及其集合理念来实现呢?
感谢您的帮助。