Я пытаюсь найти эквивалент внешних ключей и индексов в базах данных NoSQL KVP или Document. Поскольку нет сводных таблиц (для добавления ключей, обозначающих связь между двумя объектами), я действительно озадачен тем, как вы могли бы извлекать данные так, чтобы это было полезно для обычных веб-страниц.
Допустим, у меня есть пользователь, и он оставляет много комментариев по всему сайту. Единственный способ отслеживать комментарии пользователей, которые я могу придумать, - это
- Вставить их в пользовательский объект (что кажется совершенно бесполезным)
- Создайте и поддерживайте
user_id:comments
значение, содержащее список ключей каждого комментария [комментарий: 34, комментарий: 197 и т. Д.], Чтобы я мог получать их по мере необходимости.
Однако, взяв второй пример, вы скоро столкнетесь с кирпичной стеной, когда будете использовать его для отслеживания других вещей, таких как ключ под названием «active_comments», который может содержать 30 миллионов идентификаторов, что делает запрос каждой страницы за тонну, чтобы узнать некоторые недавние активные комментарии. Он также будет очень подвержен гоночным условиям, поскольку многие страницы могут пытаться обновить его одновременно.
Как я могу отслеживать отношения, подобные приведенным ниже, в базе данных NoSQL?
- Все комментарии пользователя
- Все активные комментарии
- Все сообщения с тегом [ключевое слово]
- Все студенты в клубе или все клубы, в которых состоит студент
Или я неправильно об этом думаю?