Node.js环境下的DB架构



假设我们有一个允许人们喜欢或不喜欢图片的应用程序。

这看起来像一个数据密集型应用程序,因为你会期望有大量的(dis)类请求,所以假设我们选择Node.js。

由于我们不希望人们投票超过一次,我们需要一种将picId和userId关联起来的方法。可以这样做:

  • 与关系数据库,通过使用一个表,其中picId和userId是键,
  • 使用NoSQL,通过为每个用户创建一个'文件'并存储她投票的所有picid…或者反过来,为每张图片创建一个文件,并在那里存储所有投票的userid。

数据库的这一部分将被密集地读取和写入,因为对于每个投票,您首先需要检查用户是否已经投票,然后写入新的投票,并更新pic的总投票数。

哪一个是最好的选择(仅基于技术原因)?

假设您使用MongoDB (NoSQL面向文档的DB),并且您有唯一的用户名。你可以这样做:

  • 为图像创建模型ImageModel(猫鼬模型),为用户创建模型UserModel
  • 将图像存储到数据库中(您可以使用引用来查找它们)
  • 在您的ImageModel中,您有一个likedislike数组,其中包含喜欢或不喜欢您的图片的用户的用户名

这样,喜欢/不喜欢的数量将是数组的长度,您将能够轻松地找到您的用户喜欢或不喜欢的内容。

然而,如果您想创建一个社交网络应用程序,面向文档的数据库并不是最好的选择,因为它们不实现关系,您将很难将信息和用户链接起来。SQL数据库也不是很好,因为它们不能为大型应用程序提供足够的性能,所以我建议你看看NoSQL Graph或Graph- document DB,如OrientDB或Neo4j

我希望它能帮助你,对不起我的英语(请随时纠正我);)

最新更新