【问题标题】:DB Architecture in a Node.js environmentNode.js 环境中的数据库架构
【发布时间】:2016-08-13 12:10:32
【问题描述】:

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

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

由于我们不希望人们多次投票,因此我们需要一种关联 picId 和 userId 的方法。可以这样做:

  • 使用关系数据库,通过使用 picId 和 userId 为键的表,
  • 使用 NoSQL,通过为每个用户创建一个“文件”并在其中存储她投票的所有 picId...

这部分数据库会被密集读写,对于每一个投票你首先需要检查用户是否已经投票,然后写入新的投票,并更新图片的总投票数。

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

【问题讨论】:

  • 还有UPSERT选项。
  • 我的逻辑是“当你有关系时,你选择关系数据库”。

标签: sql node.js nosql


【解决方案1】:

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

  • 为图像创建模型ImageModel(猫鼬模型),为您的用户创建UserModel
  • Store the images into the database(您可以使用参考找到它们)
  • 在您的 ImageModel 中,您有一个 likedislike 数组,其中包含喜欢或不喜欢您的图片的用户的用户名

这样,喜欢/不喜欢的数量将是数组的长度,您将能够轻松找出您的用户喜欢或不喜欢什么。

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

我希望它可以帮助你并为我的英语感到抱歉(请随时纠正我);)

【讨论】:

    猜你喜欢
    • 2012-05-29
    • 2011-06-12
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 2011-07-30
    • 2011-09-28
    • 2011-01-18
    • 2014-10-16
    相关资源
    最近更新 更多