更好的 MongoDB 社交网络结构

Better MongoDB structure for a social network

我正在开发一个社交网络,我想用 MongoDB 存储我的数据,但我遇到了如何存储的问题。

让我在这里解释一个包含用户的文档:

{
    "_id" : ObjectId("5bcc70df3766462078e0a942"),
    "name" : "FlaRize",
    "password" : "123456789"
    "description" : "A good man !"
    "friend" : [
           { "_id" : ObjectId("5bcc47a66a04301cac7e7c67"),
           "name" : "Steve",
           "password" : "azerty"
           "description" : "Nothing" },
           { "_id" : ObjectId("5bcb9d06681bbf3cc4b811b9"),
           "name" : "John",
           "password" : "999"
           "description" : "What is ur problem ?" }
    ]
}

我的第一个问题是,这是一种存储数据的好方法吗?

如果 Steve 更改了他的名字,这将不会更改他在 FlaRize 文档中的名字如何解决?

有人告诉我 'JOIN' 在 NOSQL 中不存在,这是真的吗?

我是mongoDB的初学者,感谢您给我最大的信息,使我的数据库得到了一个很好的结构

确定要在应用程序中使用的数据库的第一步是确定数据和应用程序。数据及其属性、大小等,以及各种实体之间的关系——一对一、一对多和多对多。然后是应用程序功能——查询(crud 操作)和相关的用户界面。这些是人们可以作为一个过程或非正式地做的一些事情。这些通常称为数据建模、应用程序设计等。

下一部分是工具、数据库(例如MongoDB)、应用平台、编程语言等

这些是构建应用程序必须使用的东西。大多数这些方面都是无法避免的,它们在应用程序构建的不同阶段以一种或另一种形式出现。

鉴于社交数据具有多种关系,尤其是对用户而言,随着时间的推移,它更适合关系数据库。尽管像 MongoDB 这样的 NoSQL 解决方案看起来是快速检索大量数据的好方法,但社交网络中用户的关系性质可能会导致大量重复发生。

随着时间的推移,这种重复会使数据变得不一致 and/or 不可靠,或者如果删除重复,查询将变得更加难以处理(因为文档可能需要指向其他文档,这是对于 NoSQL 类型的数据库来说不是最佳选择。

因此,MySQL 将是更好的推荐,因为它将具有处理众多用户之间的交互和关系所需的数据可靠性和关系工具。您也可以决定同时使用 MySQL 和 MongDB 以利用每个数据库的最佳功能。