2012-04-26 2 views
2

Я только начинаю с NoSQL (в моем случае CouchDB) и не могу ответить на то, что, по моему мнению, должен быть простым вопросом, о том, что общая практика заключается в создании новый документ или добавление данных к существующему.Когда создавать новый документ в NoSQL

В настоящее время у меня есть база данных для каждого пользователя (что означает, что я могу предоставить пользователям доступ ТОЛЬКО к имеющимся у них данным).

Так на самом высоком уровне, мой CouchDB выглядит следующим образом:

  • UserA_db
  • UserB_db

Скажем, у меня есть простое приложение для ноутбуков, где каждый пользователь может иметь 1 или больше ноутбуков, каждый из которых содержит 1 или более нот.

Есть идея, что вы добавляете один документ на ноутбуке, например, так:

  • UsersA_db
    • NoteBook1_doc = {Примечания: [{notebody: 'Foo'}, {notebody : 'бар'}]}
    • NoteBook2_doc = {примечания: [{notebody: 'Базь}, {notebody: 'бу'}]}

ИЛИ, является все должен быть полностью разряжен, независимо от того, что документ является, что содержит или то, что он относится к ?

  • UsersA_db
    • NoteBook1_doc = {ID: 1}
    • Note1_doc {ID: 1, parentBook: 1, notebody: 'Foo'}
    • Note2_doc {ID: 2, parentBook : 1, notebody: 'бар'}
    • SomethingCompletelyDifferent_doc {ID: 1, текст: 'все коровы едят траву'}
    • AccountInformation_doc {имя: 'Bob', возраст: 34}
+0

Состав объекта почти всегда сводится к вкусу, а не к суровым фактам. Если у вас больше опыта в дизайне объектов в самом приложении, может быть хорошей идеей начать там и сохранить структуру базы данных аналогичной. –

ответ

2

Это может пойти в любую сторону, но полезный факт, помнить о том, что документы являются единицей атомарных транзакций в CouchDB. Вы делаете атомарное, транзакционное изменение данных в CouchDB, если все данные находятся в пределах одного документа.

Кроме того, напомним, что CouchDB просмотров называются «мнения», потому что они позволяют увидеть ваши данные различными способами, в полностью согласованном состоянии.Представления всегда представляют моментальный снимок момента времени в момент запроса. Просмотров могут также collate data вместе. Например, вы можете показать ноутбук, объединив отдельные заметки.

Йоахим прав, что это призыв к суду, но лично я бы больше склонялся к вашему второму варианту: каждая нота - это документ.

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