【问题标题】:Implementing chat system: where to store chat data?实现聊天系统:在哪里存储聊天数据?
【发布时间】:2009-09-11 12:27:52
【问题描述】:

我在 asp.net 中实现了一个聊天系统,很像 google chat,我使用 xmhttp 发送和接收数据,我使用一个表来存储所有用户的所有聊天。

我想使用 XMLHttpRequest 在 sql 中创建全局临时表,以便更好地组织数据(而不是将所有聊天存储在单个表中,这可能(我不确定)在许多用户时会导致锁定问题正在访问它。)

对于我的系统,我也不需要存储聊天记录,所以我认为全局临时表会更好,因为它已经被删除了,省去了我清理它的麻烦。

但是在 Xmlhttprequest 创建表之后,它在创建后就被删除了....为什么会发生这种情况我不知道....我也删除了所有连接关闭行但仍然没有运气

那我该怎么办??另外,如果有人知道任何可以向我指出要遵循的最佳实践的在线资源,请告诉我。

【问题讨论】:

  • 如果您不必存储聊天内容,为什么要将其放在数据库中?如果您担心锁定,请查看快照隔离-msdn.microsoft.com/en-us/library/tcbchxcb.aspx
  • 不要实现自己的 - 使用 IRC、Jabber 或其他任何东西。

标签: asp.net sql xmlhttprequest chat


【解决方案1】:

您的表不会有许多用户访问它的锁定问题。临时表并不意味着共享交叉调用,并且您将在这条道路上遇到更多障碍。最好将数据简单地存储在一个表中,然后轮询该表。

唯一可能遇到“锁定问题”的情况是,如果用户试图同时将相同的数据块写入同一行......这在聊天应用程序中不应该发生。

此外,Google Chat 使用 COMET 样式实现而不是轮询实现。我的经验是 COMET > 在用户体验方面进行投票。

【讨论】:

  • 那我该怎么办,告诉我该怎么办。
  • 对不起,亲爱的,我不知道 COMET 风格,所以请告诉我。并感谢回复我。
  • 亲爱的,我明白了,但我从不使用它,所以如果你有任何在线应用程序,那么它对我很有帮助。
【解决方案2】:

实际上,您不应该在数据库中保留任何聊天消息...除非您正在实施离线消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    相关资源
    最近更新 更多