Мне нужен совет о структуре данных/моделей и NoSQL/MongoDb

Элемент является типом узла, как атрибуты, текст и т.д.

14
задан Community 22 September 2017 в 18:01
поделиться

4 ответа

Я бы посоветовал хранить голоса в виде списка историй _id для каждого пользователя. Таким образом, вы сможете узнать, за какие истории проголосовал пользователь, просто взглянув на список. Чтобы получить пользователей, проголосовавших за историю, вы можете сделать что-то вроде:

db.users.find ({stories: story_id})

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

7
ответ дан 1 December 2019 в 14:33
поделиться

В CouchDB это очень просто. Одно представление выдает:

function(doc) {
 if(doc.type == "vote") {
   emit(doc.story_id, doc.user_id);
 }
}

Другое представление:

function(doc) {
 if(doc.type == "vote") {
   emit(doc.user_id, doc.story_id);
 }
}

Оба запроса выполняются очень быстро, поскольку нет соединения. Если вам действительно нужны пользовательские данные или данные истории, CouchDB поддерживает выборку нескольких документов. Также довольно быстро и является одним из способов «соединения».

1
ответ дан 1 December 2019 в 14:33
поделиться

Хорошо, вы указали нормализованную модель данных, как если бы вы это делали в настройке SQL.

Насколько я понимаю, вы не делаете этого в MongoDB. Вы можете хранить ссылки, но вы этого не делаете из соображений производительности в общем случае.

Я никоим образом не эксперт в области NoSQL, но почему бы вам просто не следовать своим потребностям и не сохранить user (ids ), которые проголосовали за историю в коллекции историй, и историю (идентификаторы), за которую проголосовал пользователь, в коллекции пользователей?

2
ответ дан 1 December 2019 в 14:33
поделиться
[
    ] [
  • ] не волнуйтесь, если ваши запросы эффективны до тех пор, пока они не начнут иметь значение [
  • ] [
  • ], согласно приведенной ниже цитате, вы делаете это неправильно [
  • ] [
] [
] [

]. переключение мышления - это забыть о базы данных в целом. В мир взаимоотношений, в котором ты всегда должен беспокоиться о нормализации данных и вашу структуру стола. Выбрось все это. Просто расположите вашу веб-страницу. Сложите их все в сборе. А теперь посмотри на них. Твой уже 2/3. Если вы забудете представление о том, что размер базы данных имеет значение и данные не должны быть дублированы, чем ваши 3/4 там, и тебе даже не пришлось пиши любой код! Пусть ваши взгляды диктуют твои Модели. Тебе не нужно брать ваши объекты и сделать их 2 уже не в натуральную величину, как в мир отношений. Вы можете хранить объекты с фигурой.[

] [
] [

][]how-to-think-in-data-stores-instead-of-databases[][

]
3
ответ дан 1 December 2019 в 14:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: