database - 如何在cosmos db中构建多对多关系

标签 database azure data-structures azure-cosmosdb azure-cosmosdb-sqlapi

我正在开发一个新项目,有人建议我看看 Cosmos DB 以用于我的数据存储,因为它将成为一个全局 SaaS 应用程序,为潜在的数十万用户提供服务。

由于这是我第一次涉足 NoSQL 数据库,我不可避免地遇到了很多需要学习的东西,但我觉得我已经慢慢掌握了它,并且实际上对此感到非常兴奋。

现在问题来了:我有一个相对简单的数据结构,我似乎无法理解如何实现,而且我几乎已经接受了这样一个事实:它可能只是一个工作负载这在非关系数据库中并不能很好地工作。但正如我所说,我完全是绿色的,所以我来这里是为了进行健全性检查,以防我遗漏了一些明显的东西

我有一个由“用户”对象和“帖子”对象组成的数据结构,我需要根据无界标签数组将它们关联起来,以基本上创建自定义的提要,它们看起来像这样

用户:

{
    id: 1,
    name: "username",
    interests: [
        "fishing",
        "photography",
        "stargazing",
    ]
}

帖子:

{
    id: 1,
    title: "My post title",
    body: "My post content",
    tags: [
        "tennis",
        "sport",
        "photography",
    ]
}

我想返回所有帖子的列表,这些帖子的标签中包含一个或多个给定用户的兴趣,因此基本上是这样的查询:

SELECT DISTINCT VALUE Posts FROM Posts
JOIN tag IN Posts.Tags
WHERE tag IN <<user.interests>>

在 SQL 中,我创建一个用户表和一个帖子表,并根据共享标签/兴趣将它们连接起来,但我一生都无法弄清楚如何对其进行非规范化(如果可能的话)。在我第一次尝试仅使用 2 个对象时,我是否真的遇到了 NoSQL 不可能的流程之一?或者我只是个菜鸟?

最佳答案

你走在正确的道路上!有两篇非常好的文章描述了如何为 NoSQL 数据建模。如果您不熟悉这种类型的数据存储,绝对值得一读。

Data modeling in Azure Cosmos DB ,特别是关于多对多关系的部分。

How to model and partition data on Azure Cosmos DB using a real-world example

希望您觉得这有帮助。

关于database - 如何在cosmos db中构建多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60299547/

相关文章:

java - 在Java中初始化大量数组?

php - 创建具有指定数量元素的数组

java - 为什么面额数组的排序在硬币找零中很重要

ruby-on-rails - Rails - 正确的数据库查询返回空数组

MySQL用户创建日期、修改日期

database - 使用 ROWNUM 的 Oracle 数据库问题

azure - 如何通过 Helm 图表将 Vault 与 Kubernetes 上的 Consul 代理连接(Consul 服务器位于 Azure 托管应用程序上)

c# - 通过 Azure Function Bindings 正确使用应用程序和本地设置?

MySQL 简化这个查询吗?

azure - 我收到 Azure AD B2C 租户的消息 "This is not an Azure AD B2C directory..."