ASP.NET聊天应用程序数据存储

时间:2018-05-24 10:01:00

标签: c# asp.net database entity-framework chat

我正在尝试使用ASP .NET为聊天应用创建一个web api,而我仍然坚持我应该存储所有已发送消息的方式。

在本教程中https://pusher.com/tutorials/chat-aspnet/作者将所有消息存储在一个数据库中。他们找到与此行的一个对话框相关的所有消息:

conversations = db.Conversations.Where(c => (c.receiver_id == currentUser.id 
                                  && c.sender_id == contact) || 
                                  (c.receiver_id == contact 
                                  && c.sender_id == currentUser.id))
    .OrderBy(c => c.created_at).ToList();

我发现这种方法太慢了。我做了一些计算,发现如果你有100个活跃用户每个发送大约30条消息,一年就会有100万条消息。每次循环一百万行会使应用程序像糖蜜一样慢。

我仍然觉得使用Entity Framework与DB一起使用很方便。

那么存储像消息这样的数据数组的正确方法是什么?它应该是每个对话的单独数据库吗?如果是,是否有任何方法可以使用Entity Framework自动创建它们?或者可能有更好的解决方案?

提前致谢

P.S。我想创建一个ASP .NET核心应用程序,如果它有任何区别

1 个答案:

答案 0 :(得分:1)

一百万条记录是花生。为什么你认为这会太慢?正如trailmax所说:关键数据库获取所需记录应该是微不足道的,因为你的索引和键是最好的。

忽略以下内容。我没有正确思考 如果你真的想成为负责在服务器端之间存储对话的人,你还应该考虑什么。