在SQL的基本架构上有不错的existing answer。
我可以理解,这非常简单。我们有一个用户表,一个聊天表和一个chat_line表(在理智的世界中被称为消息)。
我对NoSQL还是很陌生,我的思想仍然习惯于“常规” SQL方案,并且我试图了解NoSQL中聊天应用程序的正确架构是什么(例如mongo或whathaveyou)
我说的是最简单的形式,一个用户与另一个用户之间,没有什么特别的-没有文件消息,没有图片,没有群聊。只是文字。
答案 0 :(得分:3)
正如其他人指出的那样,NoSQL是一个通用术语,指的是传统关系数据库的任何替代方案,在传统关系数据库中,将数据放置在表中,并且在构建数据库之前仔细设计了数据模式。
您在问题中提到了Mongo ... MongoDB是 schema-less 。您可以做的是创建一个自己的类,该类与Mongo数据库的实例进行交互,然后在该类中定义数据需要遵守的规则。
如果您使用的是node.js,则可以安装Mongoose,它允许您通过提供基于模型的简单直接的解决方案来对数据进行建模,从而以面向对象的方式与数据库进行交互。
这是一个有关如何在Mongoose中定义聊天模式的非常简单的示例,它并不意味着要成为一个完整的模式,它只是一个开始,希望可以帮助您实现所需的功能:
var chatSchema = new Schema({
chatSession: { type: Number, index: true },
user: { type: String, default: 'anonymous' },
chatLineText: { type: String },
dateTime: { type: Date, default: Date.now },
});
var chatModel = mongoose.model('Chat', chatSchema);
var chatLine1 = new chatModel({
chatSession: '2133123',
user: 'someUserName',
chatLineText: 'Hello yuvi!'
});
chatLine1.save(function (err, chatLine) {
if (err) console.log(err);
else console.log('following chatLine was saved:', chatLine);
答案 1 :(得分:3)
NoSQL不是单一标准。引用something out of MongoDB's website
NoSQL数据库通常分为以下四类之一:
- 键值存储
- 宽列商店
- 文档数据库
- 图形数据库
我是realtime database和Cloud Firestore的Firebase的忠实拥护者,如果您已经确定要使用非基本版本来构建它,我强烈建议您研究一下它关系数据库。
对于Cloud Firestore,您可以遵循与为MongoDB进行构建时大致相同的建议。这是具有类型字段的无模式数据库。非常容易使用。
与Firebase实时数据库建立聊天时,可以找到很多资料。
您可能还会在这里找到很多有关与Firebase建立聊天的帖子: