当前位置: 首页 > 知识库问答 >
问题:

对于NoSQL中极其简单的聊天来说,什么是一个好的数据库模式?

祁宾白
2023-03-14

关于SQL中的基本模式,现有的答案很好。

我能理解,很直截了当。我们有一个用户表、一个聊天表和一个chat_line表(在正常的情况下,这些表被称为messages)。

我对NoSQL相当陌生,我的头脑仍然习惯于“正常”的SQL方案,我正在试图理解NoSQL中聊天应用程序的正确模式(比如mongo,或者whathaveyou)。

我说的是最简单的形式,在一个用户与另一个用户之间,没有什么特别的--没有文件消息,没有图片,没有群聊。只要发短信。

共有1个答案

唐俊英
2023-03-14

正如其他人所指出的,NoSQL是一个通用术语,指的是传统关系数据库的任何替代方案,在传统关系数据库中,数据放在表中,并且在数据库构建之前仔细设计数据模式。

你在问题中提到蒙戈...MongoDB是无模式的。您所能做的就是创建与Mongo数据库实例交互的自己的类,并在该类中定义数据需要遵守的规则。

如果您正在使用Node.js,可以安装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);
 类似资料:
  • 对于Java8中的类,什么是好的用例场景?

  • 维基百科说Redis是一个内存数据库,但也说它可以“至少每2秒将数据持久化到磁盘”。我觉得这两件事是互相排斥的。它能在磁盘上存储数据,怎么能被认为是内存中的呢?我假设内存中的定义意味着它不存储到磁盘中。 这是一个类似的问题:Redis概念:在内存中还是在DB中?不同的是,他询问的是持久性实现。我的问题是关于内存中与持久性的概念。

  • 本文向大家介绍什么是NoSQL(不仅限于SQL数据库),包括了什么是NoSQL(不仅限于SQL数据库)的使用技巧和注意事项,需要的朋友参考一下 常规的关系数据库是为获得最佳存储结构而进行的大量研究和测试的产物。但是,它们的缺点是它们具有刚性的结构,如果有不同的规格,则不能改变。为了解决这个问题,创建了NoSQL数据库。 NoSQL数据库有许多不同类型,具有不同的规范。其中一些是- 列 -数据以列形

  • 左边这块绿色的气泡,那个三角形应该怎么实现? 如果实现了,怎么改变三角形的位置,例如放气泡上面,下面,左边或右边?

  • 在我开始之前,我想让每个人都知道,我确实花了很多时间在谷歌上搜索,找到了很多解释和定义。但即便如此,在花了几个小时阅读后,这个主题仍然显得相当模糊。我知道我必须问一些能让社区变得更好的问题,但是这个问题只是让我看看我是否对JavaBeans有清晰的理解。 据我所知,JavaBean基本上与任何其他java类一样都是一个类,只是它遵循某些约定,即: 类必须实现可序列化 假定类属性是私有的,并且它们的

  • 本文向大家介绍简单说一说,缓存的优点是什么?相关面试题,主要包含被问及简单说一说,缓存的优点是什么?时的应答技巧和注意事项,需要的朋友参考一下 考察:redis 优点:1、减少了对数据库的读操作,数据库的压力降低 2、加快了响应速度