gpt4 book ai didi

node.js - Facebook 喜欢 mongodb 中的聊天数据库模式

转载 作者:可可西里 更新时间:2023-11-01 10:04:40 27 4
gpt4 key购买 nike

我正在 node.js 中规划一个 TCP/IP 聊天服务器,我想包括 Facebook/gmail 聊天的几乎所有功能。

我对数据库模式有两个想法——

首先-

1) 当 user1 开始与 user2 和 user3 聊天时,我将检查这些用户之前聊天过的数据库(是否为这些用户创建了任何房间?)如果没有,那么我将为这些用户创建一个房间.

2) 我将在消息集合中保存聊天消息,在单独的文档中保存每个聊天消息,我正在考虑保存与聊天消息相关的这些详细信息 消息 发件人用户 房间 时间戳 附件

这种方法的问题 -

1) 我检查用户 1、用户 2 和用户 3 之前是否聊天过的方式(之前是否为这些用户创建过任何房间)在查询中需要“$all”,这很慢且可扩展性不强(请参阅我之前的问题 - Search in Array in mongodb ).这个搜索有什么更好的方法吗?

第二 -

1) 当 user1 开始与 user2 和 user3 聊天时,我将为这次聊天创建一个集合(房间的软件),在这个集合中,我将聊天消息保存在文档中

这种方法的问题 -

1) 我应该如何决定集合名称?我应该将其命名为“user1、user2、user3”吗?2) 我将如何检查是否已经为 user2、user3、user 1 创建了一个集合(房间),因为“user1、user2、user3”与“user2、user3、user1”不同?

我也在寻找更多的想法,因为我对自己的方法并不完全满意。大型巨头(Facebook、Gmail)如何使用他们的数据库架构来实现最佳性能和可扩展性?

如有任何帮助,我将不胜感激。

最佳答案

大巨头(Facebook、Gmail 等)并不是从头开始设计他们的聊天系统。他们的聊天系统是围绕 XMPP standard 构建的.如果您遵循此标准,则可以使用现有的、强大的且经过良好测试的聊天服务器,例如 ejabberd openfire ( others here )。对于高级应用程序,这些服务器允许您开发扩展(模块或组件)。

您只需编写客户端代码。对于网络浏览器,您可以使用 Strophe图书馆。

Professional XMPP Programming with JavaScript and jQuery 一书有很好的 XMPP 标准应用示例。

关于node.js - Facebook 喜欢 mongodb 中的聊天数据库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19161806/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com