Я много читал лучших практик и как мне принять _id . Честно говоря, я испытываю параноидальность в отношении последствий, с которыми я могу столкнуться, если не сделаю этого, когда начну масштабировать свое приложение.
В настоящее время у меня есть около 50 тыс. Документов на базу данных. Прошло всего несколько месяцев с интенсивным использованием. Я ожидаю, что это вырастет много. Я делаю много .find()
запросов манго, не много индексации; и быть честным, работая над структуризацией документов в реляционном стиле.
Например:
- Сначала получите Project из ID.
- Затем выполните запрос поиска, который:
- захватывает все
type:signature
, где project_id: X
.
- захватывает все
type:revisions
, где project_id: X
.
Причина этого в том, что я ОЧЕНЬ стараюсь не обновлять документы. Многие из этих документов создаются в автономном режиме, поэтому для меня очень важно избежать однократной записи рабочего процесса.
Сейчас я нахожусь в точке, откуда нет возврата, поскольку планирование становится довольно интенсивным. Если я хочу изменить то, как я делаю вещи сейчас, это лучшее время, пока это не стало слишком сумасшедшим.
Мне бы очень хотелось услышать ваши мысли об использовании _id
для структурирования данных и о том, что думают люди.
Возможность сделать один звонок с захватом _all_docs, как это звучит для меня привлекательно:
{
"include_docs": true,
"startkey": "project:{ID}",
"endkey": "project:{ID}:\ufff0"
}
Пример того, как установлен ОДИН тип моих документов, выглядит так:
Основной документ
{
_id: {COUCH_GENERATED_1},
type: "project",
..
.
}
Подпись документа
{
_id: {COUCH_GENERATED_2},
type: "signature",
project_id: {COUCH_GENERATED_1},
created_at: {UNIX_TIMESTAMP}
}
Изменить на основной документ
{
_id: {COUCH_GENERATED_3},
type: "revision",
project_id: {COUCH_GENERATED_1},
created_at: {UNIX_TIMESTAMP}
data: [{..}]
}
Мне было интересно, должен ли я сделать что-то вроде этого:
Основной документ : _id: project:{kuuid_1}
Подпись документа : _id: project:{kuuid_1}:signature:{kuuid_2}
Изменить на основной документ : _id: project:{kuuid_1}:rev:{kuuid_3}
Я просто пытаюсь настроить свою базу данных так, чтобы в будущем это не мешало мне. Я знаю, что возникнут проблемы, но я бы не хотел сильно менять структуру, если смогу ее избежать.
Еще одна причина, по которой я думаю об этом, заключается в том, что я слежу за _changes
в своих базах данных и могу знать, какие типы поступают, не получая каждый документ каждый раз, когда документ меняется звучащим также привлекательно.