我正在使用推送服务(http://pusher.com)构建聊天窗口小部件,我需要将用户发送的所有消息保存到数据库中,以便在一段时间后可以访问它。我正在使用mysql数据库,我想到的唯一方法就是每次触发聊天消息事件时都要创建一个新的插入,但我担心它不会像它应该的那样快。
在这种情况下,您希望使用哪些数据库和技术来保存聊天消息?
答案 0 :(得分:8)
您可以采用的方法是使用MySQL的INSERT DELAYED
。执行此操作时,客户端不必等待插入完成。相反,服务器将对插入进行排队并尽可能地执行它们。因此处理聊天的进程/线程不必等待它们。但是,您仍然可以在数据库中存储可以检索的聊天记录。假设您正在使用推送器在他们进来时分享“实时”消息,因此不需要立即访问聊天记录,这可能适合您。
答案 1 :(得分:2)
除非你打算创建一个包含数千人的聊天系统,否则我相当确定一个结构合理的mysql解决方案可以解决这个问题。在我工作的地方,我们有一个基于php和mysql的内部网聊天解决方案,它运行得很完美(对于我们中等规模的团队,约有100人)。
我的一个建议是确保你理解mysql索引。确保您的聊天系统真正充分利用索引。你可以通过这种方式大大提高性能。
如果并发真的成为你的问题,我听到很多人都对node.js有很好的体验。但如果你对php和mysql感到满意,我会先说那样。
快乐的编码!
答案 2 :(得分:-1)
(我知道这很老了但是,)这里有一个有趣的演示(虽然在Rails中)可以解决你所说的问题。它包括一个可能的架构。 https://github.com/dipth/pusher_demo