我正在开发一个新项目,有人建议我看看 Cosmos DB 以用于我的数据存储,因为它将成为一个全球 SaaS 应用程序,为潜在的数十万用户提供服务。
由于这是我第一次涉足 NoSQL 数据库,我不可避免地遇到了很多需要学习的东西,但我觉得我已经慢慢掌握了它,并且实际上对此感到非常兴奋。
现在问题来了:我有一个相对简单的数据结构,我似乎无法理解如何实现,而且我几乎已经接受了这样一个事实:它可能只是一个工作负载,而不是“在非关系数据库中确实工作得很好。但正如我所说,我完全是绿色的,所以我来这里是为了进行健全性检查,以防我遗漏了一些明显的东西
我有一个由“用户”对象和“帖子”对象组成的数据结构,我需要根据无界标签数组将它们关联起来,以基本上创建自定义的提要,它们看起来像这样
用户:
{
id: 1,
name: "username",
interests: [
"fishing",
"photography",
"stargazing",
]
}
Run Code Online (Sandbox Code Playgroud)
邮政:
{
id: 1,
title: "My post title",
body: "My post content",
tags: [
"tennis",
"sport",
"photography",
]
}
Run Code Online (Sandbox Code Playgroud)
我想返回所有帖子的列表,这些帖子的标签中有一个或多个给定用户的兴趣,所以基本上是这样的查询:
SELECT DISTINCT VALUE Posts FROM Posts
JOIN tag IN Posts.Tags
WHERE tag IN <<user.interests>>
Run Code Online (Sandbox Code Playgroud)
在 SQL 中,我创建一个用户表和一个帖子表,并根据共享标签/兴趣将它们连接起来,但我一生都无法弄清楚如何对其进行非规范化(如果可能的话)。在我第一次尝试仅使用 2 个对象时,我是否真的遇到了 NoSQL 不可能的流程之一?或者我只是个菜鸟?
database azure data-structures azure-cosmosdb azure-cosmosdb-sqlapi