2015-05-02 6 views
1

Я экспериментирую с MongoDB для проекта для домашних животных. Доменная модель не обязательно подходит для реляционных больше, чем no-sql (насколько мне известно), поэтому она показалась хорошим кандидатом для изучения.MongoDB BsonDocument size limit

Представление JSON моей модели будет выглядеть примерно так:

{ 
    "_id": someId, 
    "prop1": "foo", 
    "prop2": "bar", 
    "entries": [ 
    { 
     "name": "asdf", 
     "uri": "http://foo.com/bar" 
    }, 
    { 
     "name": "asdf", 
     "uri": "http://foo.com/bar2", 
     "x": 5 
    }, 
    { 
     "name": "asdf", 
     "uri": "http://foo.com/bar3" 
    } 
    ... /* there's going to be lots of these */ 
    ] 
} 

Я понимаю, что есть жесткое ограничение на размере BSON документооборота 16Мб, и я мог бы теоретически записывать сотни тысяч на «входе 'объектов на один документ, который не подходит.

Моя первоначальная мысль заключалась в том, чтобы иметь 1 документ на «запись», хранящийся в другой коллекции, со ссылкой на родительский документ. например:

коллекция Родитель

{ 
    "_id": "parent1", 
    "prop1": "foo", 
    "prop2": "bar" 
} 

коллекция Детский

{ 
    "_id": child1, 
    "parentId": "parent1" 
    "name": "asdf", 
    "uri": "http://foo.com/bar1" 
}, 
{ 
    "_id": child2, 
    "parentId": "parent1" 
    "name": "asdf", 
    "uri": "http://foo.com/bar2", 
    "x": 5 
} 

Беда в том, что, кажется, очень реляционную в стиле.

  1. Могу ли я сражаться с намеченным дизайном манго?
  2. Должен ли я просто придерживаться реляционного db?
+1

Серия схемных схем на блоге mongodb может быть хорошо прочитана для вас: [** часть 1 **] (http://blog.mongodb.org/post/87200945828/6-rules-of-thumb- для-mongodb-schema-design-part-1), [** часть 2 **] (http://blog.mongodb.org/post/87892923503/6-rules-of-thumb-for-mongodb-schema- дизайн-часть-2) и [** часть 3 **] (http://blog.mongodb.org/post/88473035333/6-rules-of-thumb-for-mongodb-schema-design-part-3) – chridam

+1

@chridam Отлично, спасибо. – Twicetimes

ответ

1

Благодаря @chridam, this schema design guide рассмотрел мои проблемы.

Похоже, вы все еще можете использовать традиционные реляционные концепции при работе с проектами MongoDb.

+0

NoSQL не означает, что отношений нет. На самом деле, ваше решение было довольно совершенным. Однако вы можете добавить правильные индексы. –

+0

Да, мои индексы на самом деле являются идентификаторами GUID, мне просто нечего беспокоиться о том, чтобы положить реальные слова в примере :) – Twicetimes

+1

Это не то, что я имел в виду. Довольно уверен, что вам понадобится индекс над «parenthId», чтобы эффективно найти дочерние элементы. –

Смежные вопросы