Как вы отслеживаете отношения записей в NoSQL?

Я пытаюсь вычислить эквивалент внешних ключей и индексов в базах данных NoSQL KVP или Document. Поскольку нет сводных таблиц (для добавления ключей, обозначающих связь между двумя объектами), я действительно озадачен тем, как вы могли бы извлекать данные таким образом, чтобы это было полезно для обычных веб-страниц.

Допустим, у меня есть пользователь, и этот пользователь оставляет много комментариев по всему сайту. Единственный способ, который я могу придумать для отслеживания комментариев пользователей, - это

  1. встроить их в объект пользователя (что кажется совершенно бесполезным)
  2. Создать и поддерживать значение user_id: comments , которое содержит список ключей каждого комментария [комментарий: 34, комментарий: 197 и т. д.], чтобы я мог получить их по мере необходимости.

Однако, взяв второй пример, вы скоро столкнетесь с кирпичной стеной, когда будете использовать его для отслеживания других вещей, таких как ключ под названием «active_comments», который может содержать 30 миллионов идентификаторов, что стоит ТОНН для запроса каждой страницы, чтобы узнать несколько последних активных комментариев. Он также будет очень подвержен гоночным условиям , так как многие страницы могут попытаться обновить его одновременно.

Как я могу отслеживать отношения, подобные приведенным ниже, в базе данных NoSQL?

  • Все комментарии пользователя
  • Все активные комментарии
  • Все сообщения с тегами [keyword]
  • Все студенты в клубе - или все клубы, в которых состоит ученик

Или я думаю об этом неправильно?

110
задан Basit Anwer 14 July 2016 в 07:28
поделиться