数据库架构在Node.js环境中

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

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

由于我们不希望人们多次投票,我们需要一种将picId和userId相关联的方式。 这可以做到:

  • 与关系数据库通过使用picId和userId是键的表,
  • 与NoSQL,通过为每个用户创build一个“文件”,并在那里存储她投票的所有图片…或者反过来,为每个图片创build一个文件,并在那里存储所有已经投了图片的用户ID。

这部分数据库将被大量阅读和写入,对于每个投票,你首先需要检查用户是否已经投票,然后写新的投票,再加上更新图片的总投票数。

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

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

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

有了这个,喜欢/不喜欢的数量将是数组的长度,你将能够轻松地找出你的用户喜欢或不喜欢的东西。

不过,如果你想创build一个社交networking应用程序,面向文档的数据库并不是最好的select,因为它们没有实现关系,而且你很难链接信息和用户。 SQL DB不好,因为它们不能提供大应用程序的足够的性能,所以我build议你看一下NoSQL Graph或Graph-Document DB,比如OrientDB或者Neo4j

我希望它可以帮助你和我的英语(请随时纠正我);)