Я работаю над новым проектом, и мне порекомендовали взглянуть на базу данных Cosmos, которая будет использоваться для моего хранилища данных, потому что это будет глобальное приложение SaaS, обслуживающее потенциально сотни тысяч пользователей.
Так как это мой первый набег в базы данных SQL, я неизбежно сталкиваюсь со многими вещами, которые мне нужно выучить, но я чувствую, что медленно получаю их и на самом деле очень взволнован это.
Теперь вот кикер: у меня есть относительно простая структура данных, которую я просто не могу себе представить, как вы реализуете, и я почти смирился с тем фактом, что это может быть просто рабочая нагрузка, которая не очень хорошо работает в нереляционных базах данных. Но, как я уже сказал, я полностью зеленый, поэтому я здесь для проверки работоспособности на случай, если есть что-то очевидное, что мне не хватает
У меня есть структура данных, состоящая из объекта "пользователь" и "поста" "объект и мне нужно связать их на основе неограниченного массива тегов, чтобы в основном создавать настраиваемые каналы, они выглядят так:
Пользователь:
{
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 Я бы создал таблицу из пользователи и таблица сообщений и присоединяются к ним на основе общих тегов / интересов, но я не могу понять, как это денормализовать (если это возможно). Действительно ли я столкнулся с одним из невозможных потоков No SQL с первой попытки только с двумя объектами? Или я просто полный нуб?